マーケティング・ミックス・モデル(Marketing Mix Modeling、MMM)は、広告、価格、販促、流通などのマーケティング施策が売上に与える影響を統計的手法で分析するモデルです。
MMMは、過去のマーケティングデータを活用し、各施策の効果を定量的に評価することで、最適なマーケティング予算の配分を決定するために使用されます。
MMMの主な特徴
MMMの主な特徴を記載します。
- 時系列データを活用
過去のデータを基に、売上やブランド指標に対する影響を分析。 - 広告効果の測定
テレビCM、デジタル広告、プロモーションの貢献度を数値化。 - ROIの算出
投資対効果(ROI)を明らかにし、最適なマーケティング施策を決定。 - 外部要因の考慮
季節性や経済状況などの外部要因を組み込む。
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を用いた実装方法を紹介しました。回帰分析を用いることで、最適なマーケティング予算配分の指針を得ることができます。