CausalImpactで広告施策の因果効果を測定する|仕組みと実践的な使い方
CausalImpactとは
CausalImpactは、施策を実施しなかった場合の「反事実(Counterfactual)」をベイズ構造時系列モデルで推定し、実績との差分で因果効果を測定する手法です。Googleが開発し、R版パッケージとPython版(tfcausalimpact)が公開されています。
たとえば「新しいキャンペーンを開始した結果、コンバージョンが増えた」と感じても、それが施策の効果なのか、季節性やトレンドの影響なのかを区別するのは簡単ではありません。CausalImpactは「もし施策を実施しなかったらどうなっていたか」という仮想シナリオを統計的に推定し、その差分を因果効果として算出します。
使いどころ
CausalImpactは、A/Bテストを実施できない状況で施策の因果効果を推定したい場合に有効です。具体的な活用シーンを挙げます。
- 新キャンペーンの開始・停止の効果検証: 新しい媒体に出稿を始めた、または一時停止した際の影響を測定
- 地域限定施策の評価: 特定地域でのみ実施した施策の効果を、非実施地域のデータを使って推定
- 大幅な予算変更の影響測定: 広告費を大きく増減させた前後の変化が、施策によるものかを検証
- メディア出稿の効果検証: テレビCMやOOH広告の配信開始・終了に伴う影響の測定
A/Bテストでは片方のグループに施策を適用しないことで因果効果を測定しますが、ビジネス上の理由でホールドアウトを設けられない場合の代替手段として活用できます。
仕組みの概要
CausalImpactの分析は、大きく3つのステップで進みます。
ステップ1:介入前期間でモデルを学習
施策実施前の期間のデータを使い、ベイズ構造時系列モデルを構築します。このとき、対象系列(分析したい指標)とコントロール系列(施策の影響を受けていない関連指標)の関係を学習します。
モデルはトレンド、季節性、コントロール系列との回帰関係を組み合わせて構成されます。
ステップ2:介入後期間で反事実を予測
学習したモデルを介入後の期間に適用し、「施策がなかった場合にどう推移していたか」という反事実を予測します。コントロール系列の動きをもとに、対象系列の予測値を算出します。
ステップ3:実績と予測の差分を因果効果として算出
実績値と反事実の予測値の差分が、施策による因果効果と解釈されます。CausalImpactは以下の指標を信頼区間付きで提示します。
- ポイント効果: 各時点での実績と予測の差分
- 累積効果: 介入後期間全体での差分の合計
- 相対効果: ベースラインに対する効果の割合
95%信頼区間が0をまたがない場合、統計的に有意な効果があったと判断します。
分析に必要な条件
CausalImpactの結果の信頼性は、分析の前提条件に大きく左右されます。
十分な介入前データが必要です。モデルがトレンドや季節性を学習するために、介入前に少なくとも数か月分のデータが必要です。短すぎると予測精度が低くなります。
良質なコントロール系列が不可欠です。施策の影響を受けておらず、かつ対象系列と相関がある指標を選ぶことが重要です。コントロール系列の質が結果を大きく左右します。
介入タイミングが明確であることが前提です。施策の開始時点が曖昧だと、介入前後の区切りが不適切になり、結果の解釈が難しくなります。
コントロール系列の選び方
CausalImpactの分析精度を左右する最も重要な要素が、コントロール系列の選択です。
良いコントロール系列の条件は以下のとおりです。
- 施策の影響を受けていない: 分析対象の施策が波及していない指標であること
- 対象系列と相関がある: 同じ外部要因(季節性、曜日効果など)の影響を共有していること
- 介入前期間で安定した関係がある: 過去のデータで両系列の関係が一貫していること
具体例を挙げます。
| 分析したい施策 | 対象系列 | コントロール系列の候補 |
|---|---|---|
| 新規媒体の追加 | 全体のCV数 | 既存媒体のみのCV数、オーガニック流入数 |
| 地域限定キャンペーン | 対象地域のCV数 | 非対象地域のCV数 |
| テレビCM開始 | ブランド検索数 | 一般キーワードの検索数、競合のブランド検索数 |
| 指名検索広告の一時停止 | 全体のCV数 | 非ブランドキーワードのクリック数 |
複数のコントロール系列を組み合わせることで、モデルの予測精度を高めることもできます。
結果の読み方
CausalImpactの出力には3つの主要な情報が含まれます。
ポイント効果は、介入後の各時点で「実績がどれだけ予測を上回った(下回った)か」を示します。日次のインパクトを把握するのに使います。
累積効果は、介入後期間全体での効果の合計です。施策全体のインパクトを評価する際に使います。たとえば「キャンペーン開始後4週間で、推定+120件のCV増加」のような形で示されます。
信頼区間とp値は、結果の統計的な確信度を示します。95%信頼区間の下限が0を上回っていれば、効果がプラスであることに高い確信があります。p値が0.05未満であれば、統計的に有意と判断します。
結果を解釈する際の注意点として、「有意差なし」は「効果がない」という意味ではない点があります。サンプルが少ない、あるいは効果が小さい場合、検出力不足で有意差が出ないことがあります。
Python / Rでの実行
CausalImpactは以下のパッケージで実行できます。
Python(tfcausalimpact):
pip install tfcausalimpact
pandas DataFrameに対象系列とコントロール系列を格納し、介入前期間と介入後期間を指定して実行します。結果はサマリーレポートとプロット(原系列・ポイント効果・累積効果の3パネル)で確認できます。
R(CausalImpact):
install.packages("CausalImpact")
Googleが開発した元祖のパッケージです。zoo形式の時系列データを入力し、CausalImpact()関数で分析を実行します。
いずれのパッケージも、基本的な使い方は「データの準備→介入前後の期間指定→実行→結果の確認」という流れです。
注意点と限界
CausalImpactの結果を解釈する際に注意すべき点があります。
コントロール系列の質に結果が大きく依存します。不適切なコントロール系列を選ぶと、反事実の推定が歪み、因果効果を過大・過小に評価するリスクがあります。複数のコントロール系列を試して、結果の頑健性を確認することが重要です。
介入前後に他の大きな変化がないことが前提です。施策開始と同時にLPを変更した場合など、複数の要因が重なると効果を分離できません。
長期的な効果の測定には限界があります。介入後の期間が長くなるほど、モデルの予測精度が低下し、信頼区間が広がります。一般的には介入後4〜8週間程度の分析が適しています。
MMMやA/Bテストとの使い分け
CausalImpactは、他の分析手法と相互に補完する関係にあります。
| 手法 | 強み | 適した場面 |
|---|---|---|
| A/Bテスト | 因果推論の信頼性が最も高い | ランダム割り当てが可能な場合 |
| CausalImpact | ホールドアウトなしで因果効果を推定 | 施策の前後比較、A/Bテスト不可の場合 |
| DID(差分の差分法) | 2群の変化量の差で効果を推定 | 処置群とコントロール群を設定できる場合 |
| MMM | チャネル横断の投資効率を俯瞰 | 中長期の予算配分の最適化 |
CausalImpactは「個別施策の因果効果を事後的に検証する」ツールとして位置づけると、役割が明確になります。MMMで得られたチャネル別のROIを、CausalImpactの結果で裏付けるといった使い方も有効です。
参照元
運用型広告のコンサルタント。Google広告・Meta広告・Yahoo!広告を中心に10年以上の実務経験。