スポンサーリンク

マーケティング・ミックス・モデル(MMM)とは?分かりやすくまとめ Pythonコード付

記事内に広告が含まれています。

マーケティング・ミックス・モデル(Marketing Mix Modeling、MMM)は、広告、価格、販促、流通などのマーケティング施策が売上に与える影響を統計的手法で分析するモデルです。

MMMは、過去のマーケティングデータを活用し、各施策の効果を定量的に評価することで、最適なマーケティング予算の配分を決定するために使用されます

スポンサーリンク

MMMの主な特徴

MMMの主な特徴を記載します。

  1. 時系列データを活用
    過去のデータを基に、売上やブランド指標に対する影響を分析。
  2. 広告効果の測定
    テレビCM、デジタル広告、プロモーションの貢献度を数値化。
  3. ROIの算出
    投資対効果(ROI)を明らかにし、最適なマーケティング施策を決定。
  4. 外部要因の考慮
    季節性や経済状況などの外部要因を組み込む。
スポンサーリンク

MMMの基本的な回帰モデル

MMMでは、主に回帰分析(重回帰分析やベイズ推定)を使用します。

基本的な回帰モデルは以下のようになります。

$$Sales = β_0 + β_1 × TV広告 + β_2 × デジタル広告 + β_3 × 価格 + β_4 × プロモーション + ε$$

  • Sales
    売上(目的変数)
  • TV広告、デジタル広告、価格、プロモーション
    各施策の投入量(説明変数)
  • β(ベータ)
    各施策の売上への影響度(係数)
  • ε(イプシロン)
    誤差

PythonでMMMを実装する

以下に、Pythonを用いた簡単なMMMのサンプルコードを紹介します。

サンプルデータの作成

まず、売上とマーケティング施策のデータを作成します。

import numpy as np
import pandas as pd
import statsmodels.api as sm

# ランダムシードの設定
np.random.seed(42)

# サンプルデータの作成
n = 100  # データ数
df = pd.DataFrame({
    'TV Ads': np.random.randint(500, 1500, n),  # TV広告費
    'Digital Ads': np.random.randint(200, 800, n),  # デジタル広告費
    'Promotion': np.random.randint(100, 500, n),  # プロモーション費用
    'Seasonality': np.sin(np.linspace(0, 2*np.pi, n)) * 500 + 1000  # 季節性
})

# 売上の生成(広告施策 + 季節性 + ノイズ)
df['Sales'] = (
    0.05 * df['TV Ads'] +
    0.08 * df['Digital Ads'] +
    0.12 * df['Promotion'] +
    0.3 * df['Seasonality'] +
    np.random.normal(0, 100, n)  # ノイズ
)

print(df.head())

出力結果は以下のとおりです。

   TV Ads  Digital Ads  Promotion  Seasonality       Sales
0     602          755        394  1000.000000  423.480907
1     935          361        485  1031.711960  249.886568
2    1360          401        486  1063.296227  492.454772
3     770          469        212  1094.625622  428.276193
4     606          470        200  1125.573994  296.564792

MMMの回帰分析

次に、回帰分析を行い、各マーケティング施策の影響度を求めます。

# 説明変数と目的変数の設定
X = df[['TV Ads', 'Digital Ads', 'Promotion', 'Seasonality']]
y = df['Sales']

# 定数項を追加
X = sm.add_constant(X)

# 回帰分析の実施
model = sm.OLS(y, X).fit()

# 結果の表示
print(model.summary())

「サンプルデータの作成」のコードの続いて、上記コードを実行すると、以下のような結果が表示されます。

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                  Sales   R-squared:                       0.539
Model:                            OLS   Adj. R-squared:                  0.520
Method:                 Least Squares   F-statistic:                     27.82
Date:                Mon, 03 Feb 2025   Prob (F-statistic):           2.69e-15
Time:                        22:52:20   Log-Likelihood:                -602.74
No. Observations:                 100   AIC:                             1215.
Df Residuals:                      95   BIC:                             1228.
Df Model:                           4                                         
Covariance Type:            nonrobust                                         
===============================================================================
                  coef    std err          t      P>|t|      [0.025      0.975]
-------------------------------------------------------------------------------
const          27.4555     65.474      0.419      0.676    -102.527     157.438
TV Ads          0.0235      0.036      0.648      0.519      -0.048       0.095
Digital Ads     0.0750      0.060      1.243      0.217      -0.045       0.195
Promotion       0.0686      0.100      0.688      0.493      -0.129       0.266
Seasonality     0.3102      0.030     10.383      0.000       0.251       0.369
==============================================================================
Omnibus:                        5.170   Durbin-Watson:                   2.173
Prob(Omnibus):                  0.075   Jarque-Bera (JB):                4.509
Skew:                           0.451   Prob(JB):                        0.105
Kurtosis:                       3.517   Cond. No.                     9.83e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 9.83e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

モデルの解釈

出力結果には、様々な情報が出力されますが、ここでは各説明変数の係数(影響度)を確認してみます。

例えば、以下のように考えられます。

  • TV Ads の係数 = 0.0235
    → TV広告費が1増加すると、売上が0.0235増加。
  • Digital Ads の係数 = 0.075
    → デジタル広告費が1増加すると、売上が0.075増加。
  • Promotion の係数 = 0.0686
    → プロモーション費が1増加すると、売上が0.0686増加。
  • Seasonality の係数 = 0.3102
    → 季節要因の影響が大きい。

ここで、有意水準 0.05とすると、Seasonality は、P値が 0.000であるため、統計的に有意です。

一方、TV Ads(TV広告)、Digital Ads(デジタル広告)、Promotion(プロモーション) のP値はそれぞれ、0.519、0.217、0.493 で、影響は統計的に有意ではありません。

これらの施策が売上に明確な影響を与えていない可能性があり、マーケティング戦略の見直しが必要かもしれません。

また、定数項(const)については、売上のベースライン(説明変数が0のときの予測売上)が 27.46ですが、P値が 0.676 で有意ではなく、影響があるとは言い難いです。

以上のような情報を読み取ることができ、どのマーケティング施策が効果的であるかを分析できます。

まとめ

マーケティング・ミックス・モデル(MMM)は、広告や販促施策が売上に与える影響を定量的に評価するための手法です。本記事では、MMMの基本概念とPythonを用いた実装方法を紹介しました。回帰分析を用いることで、最適なマーケティング予算配分の指針を得ることができます。

タイトルとURLをコピーしました