はじめに
こんにちは、レバレジーズでアナリストをしている内田です。
本記事では、施策効果を正しく測定するための手法「CausalImpact」を紹介します。後半では、TVCMの効果検証を想定した分析例もお見せします。
CausalImpactとは何か?
CausalImpactとは、Googleが開発した因果推論の手法で、「もし施策を実施しなかったら、どうなっていたか」という反実仮想(Counterfactual)を推定し、実績値との差分から施策効果を測定するアプローチです。
時系列データに対してベイズ構造時系列モデル(BSTS)を適用し、施策がなかった場合の予測値を算出します。この予測値と実績値の差分が、施策の純粋な効果となります。
なぜCausalImpactが必要か?
施策効果を測定する際に課題となるのが、「施策を打った → 数値が上がった」だけでは因果関係を証明できないということです。売上が上がったとしても、それが本当に施策の効果なのか、季節要因やトレンドの影響なのかを区別することは困難です。
効果検証の代表的な手法
因果推論の分野では、施策効果を測定するためのさまざまな手法が提案されています。
| 手法 | 概要 |
|---|---|
| ランダム化比較試験(RCT) | 対象をランダムに介入群と対照群に割り当て、両群の結果を比較する手法 |
| 差分の差分法(DID) | 介入群と対照群の施策前後の変化の差分を比較する手法。並行トレンド仮定が前提となる |
| 傾向スコアマッチング(PSM) | 施策を受ける確率(傾向スコア)が類似した個体同士を比較し、観察データにおける選択バイアスを軽減する手法 |
| CausalImpact | ベイズ構造時系列モデルで反実仮想を予測し、時系列データにおける施策効果を測定する手法 |
CausalImpactは時系列データの分析に特化しており、トレンドや季節性を自動的にモデル化することで、施策効果とそれ以外の変動要因を分離できます。また、ベイズ推論を採用しているため、事前分布を活用することで、サンプルサイズが小さい場合でも比較的安定した推定が可能です。
CausalImpactを理解する
CausalImpactを理解する上で、いくつかの主要な概念を説明します。
1. 反実仮想(Counterfactual)
反実仮想とは、「もし施策が実施されなかった世界線ではどうなっていたか」という、現実には観測できない仮想的な状態を指します。
私たちが実際に観測できるのは「施策を実施した結果(実績値)」のみです。単に実績値が向上したとしても、それが本当に施策によるものなのか、それとも外部要因や自然なトレンドによるものなのかを区別することはできません。
施策の純粋な効果を測定するには、「施策あり」の世界と「施策なし」の世界を比較する必要があります。
この「もし施策がなかった場合の予測値」こそが反実仮想であり、この値をいかに正確に推定するかが、効果検証の成否を分けます。

2. 共変量(Covariate)
CausalImpactでは、反実仮想をより正確に予測するために共変量を活用できます。
共変量とは、目的変数(測定したい指標)と相関があり、かつ施策の影響を受けないデータのことです。例えば、ある地域で施策を実施した場合、施策を実施していない別の地域のデータを共変量として使用できます。
共変量を使うことで、施策期間中に発生した外部要因(景気変動、競合の動きなど)の影響を捉え、より精度の高い反実仮想を推定できます。
なお、共変量は必須ではなく、施策実施群の目的変数のデータのみでも分析は可能です。その場合は、施策前のトレンドや季節性パターンを学習し、それを施策後に外挿することで反実仮想を予測します。ただし、共変量がある方が外部要因を考慮できるため、一般的に推定精度は高くなります。
CausalImpactを使ってみる:TVCM効果検証の例
ここからは、CausalImpactの使い方をイメージしやすくするために、TVCMの効果検証を想定した分析例を紹介します。
※以下はダミーデータを用いた想定例です。
分析設計
今回の例では、介入群と対照群を設けた上で、対照群のKPI推移を共変量として活用します。
- 介入群(施策あり):東京(TVCM放映)
- 対照群(施策なし):大阪(TVCM未放映)
東京と大阪は都市規模や消費行動の傾向が近いと仮定し、大阪を比較対象として選択しました。大阪のデータを共変量として使用することで、「もし東京でCMを打たなかったらどうなっていたか」をより正確に予測します。

アウトプットの見方
CausalImpactの分析結果は、以下の3つのグラフで表示されます。

Original
実績値(黒の実線)と予測値(青の点線)を比較するグラフです。水色の領域は95%信用区間を表します。
この例では、東京の実績値(黒線)が予測値(青の点線:CMがなかった場合の東京)を上回っていれば、TVCMによるプラスの効果があったと判断できます。
Pointwise
各時点での効果(実績値 − 予測値)を表すグラフです。0より上であればその時点でプラスの効果、下であればマイナスの効果があったことを意味します。
Cumulative
効果の累積値を表すグラフです。施策期間全体でどれだけの効果があったかを確認できます。信頼区間が0をまたいでいなければ、統計的に有意な効果があったと判断できます。
この分析例では、東京の実績値(黒の実線)がCMがなかった場合の予測値(青の点線)を施策期間を通じて上回り、累積効果を示すCumulativeグラフから、施策によるKPIの累積増加は概算で約4,000であったと読み取れます。
まとめ
本記事ではCausalImpactの考え方と分析例を紹介しました。
CausalImpactは、時系列データに対して反実仮想を推定し、施策効果を定量化できる手法です。ベイズ推論を採用しているため少ないサンプルでも安定した推定が可能であり、効果の不確実性を信用区間として出力できる点も実務で活用しやすいポイントです。
「施策効果を測定したいが、外部要因の影響を分離できない」という状況で有効な手法ですので、ぜひ活用してみてください。
興味がある方はPythonのライブラリ(pycausalimpactなど)を使って実際に分析してみると理解がより深まると思います。