入力値と変数
広告費、季節性、ベースラインを学びます。
「入力値と変数」はCoddyKit上の無料Digital Marketing Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDigital Marketing Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Digital Marketing Academyコースには全4レッスンが含まれています。
MMM入力データの構造
MMMの品質は入力データ次第です。入力は3つのカテゴリに分かれます。メディア変数(制御できる施策)、コントロール変数(自分では制御できない要因)、従属変数(予測する対象)です。
これらを適切な粒度と頻度で用意することが、信頼できるモデル作成の大部分を占めます。
dependent : sales or revenue (weekly)
media : spend or impressions per channel
controls : price, promo, seasonality, macro
transforms: adstock, saturation従属変数
販売個数、売上高、新規顧客数など、明確な成果指標を選びます。総額か純額か、返品を除外するかどうかも一貫させてください。
通常は国または地域単位の週次など、施策に活用できる粒度でモデル化します。日次データはノイズを増やし、月次データは変動の仕組みを隠してしまいます。
メディア変数:出稿額とインプレッション
メディアデータは、出稿額または接触量(インプレッション、GRPs、クリック数)として入力できます。インプレッションを使うと、配信量とコストを切り離せるため、CPMが変動する場合に有効です。
よくある方法は、レスポンスカーブをインプレッションでモデル化し、その後ROIの計算用に出稿額へ戻すことです。チャネル内では必ず単位を統一してください。
TV -> GRPs
Search -> clicks or spend
Social -> impressions
OOH -> spend (no impression feed)アドストック(残存効果)
広告効果は出稿期間が終わった後も持続します。アドストックはこの減衰をモデル化し、今週の売上に前週までのメディア出稿の影響を反映させます。
減衰率lambdaが効果の記憶を制御します。0.0は残存効果がないこと、0.8は長い裾を持つことを意味します。通常、テレビは検索よりもアドストックが高くなります。
adstock_t = media_t + lambda * adstock_(t-1)
lambda=0.3 (search): fast decay
lambda=0.7 (TV): slow decay, long memory飽和(逓減リターン)
出稿額を2倍にしても、売上が2倍になることはほとんどありません。飽和変換で逓減リターンを表現し、モデルがいつまでも線形に外挿しないようにします。
Hill変換や対数変換によってレスポンスカーブを曲げると、各チャネルに現実的な上限と効率的な運用範囲を設定できます。
Hill: response = x^a / (x^a + k^a)
low spend -> steep gains
high spend -> flattening curve (saturated)コントロール変数
コントロール変数は、メディア以外の要因を吸収し、それらが広告の成果として誤って計上されるのを防ぎます。主なものは、価格、プロモーション、流通・在庫状況、競合の活動、マクロ経済指数です。
影響の大きいコントロール変数を省くと、メディア係数にバイアスが生じます。特に、プロモーション期間中に出稿していたチャネルが過大評価されることがよくあります。
price : average selling price
promo : 0/1 flag or % discount depth
distribution : stores or % ACV
competitor : share of voice / spend
macro : consumer confidence, CPI季節性とトレンド
多くの商品には強い季節パターンがあります。月・週ダミー、フーリエ項、季節指数などで季節性を捉え、基調的な成長や衰退を表すトレンド項も加えます。
これらがないと、繁忙期にたまたま出稿していたメディア変数に、季節的な売上増が流れ込んでしまいます。
fourier: sin(2*pi*t/52), cos(2*pi*t/52)
trend: t (linear) or spline
holiday: black_friday_flag, holiday_flagベースと増分の分解
MMMは、ブランドエクイティ、流通、価格など、新たなメディア出稿がゼロでも得られる売上をベースとして、メディアによる増分貢献と分けて考えます。
健全なモデルでは、安定した大きなベースが示されることがよくあります。メディアがほぼすべてを説明している場合、コントロール変数が弱すぎる可能性があります。
total_sales = base + sum(media_contributions)
base : 70%
incremental : 30% (split across channels)多重共線性の落とし穴
チャネルが同時期に出稿されると、モデルはそれぞれの効果を切り分けられず、係数が不安定になり、場合によっては符号まで反転します。
相関行列とVIFで診断してください。時間によって出稿額を変える、地域差を加える、ベイズ事前分布を使って推定値を安定させるといった方法で緩和できます。
corr(TV, Social) = 0.91 -> high collinearity
VIF > 10 -> unstable estimate
fix: stagger flights, add geo splits, priors変数整備チェックリスト
すべての系列を同じカレンダーとタイムゾーンにそろえます。欠損期間は、出稿なしを意味するのかデータなしを意味するのか分からなくなるような暗黙のゼロではなく、意図をもって補完してください。
対象期間が長い場合は、金額系列をインフレ調整し、すべての変換処理を記録して、結果を再現できるようにします。
入力データを組み合わせる
最終的な設計行列は、未変換のコントロール変数に変換済みのメディア変数を重ね合わせたものです。各メディア列は、回帰に入れる前にアドストック処理を施し、その後で飽和変換を行います。
この処理順序は重要です。まず残存効果(効果がいつ現れるか)を処理し、次に飽和(効果がどれだけ現れるか)を処理します。
raw_TV -> adstock(lambda=0.7) -> saturation(Hill)
-> column TV_eff in model
sales = base + b1*TV_eff + b2*Search_eff
+ b3*price + b4*promo + seasonクイックチェック
現象に応じた適切な変換を特定しましょう。
まとめ
MMMの入力は、従属変数、メディア変数(アドストック処理後に飽和変換)、コントロール変数(価格、プロモーション、流通、季節性、マクロ経済)です。
強力なコントロール変数はメディアの過大評価を防ぎ、クリーンで尺度が一貫し、十分に文書化された系列が、信頼できるモデルの基盤になります。
よくある質問
「入力値と変数」レッスンは無料ですか?
はい。「入力値と変数」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Digital Marketing Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Digital Marketing Academyコースには全4レッスンが含まれています。
「入力値と変数」で何を学びますか?
広告費、季節性、ベースラインを学びます。 ブラウザで直接実行するハンズオンコードでDigital Marketing Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Digital Marketing Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDigital Marketing Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「入力値と変数」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDigital Marketing Academyレッスンでコードを書いて実行できますか?
はい。すべてのDigital Marketing Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。