前回、ABテストにおいて時系列性(Before&After)を加味したDID(差の差)推定についてお話ししました。
ABテストとは、例えばユーザをA群(処置群)とB群(統制群)に分け、どちらのほうが好成績を納めるのかをデータで確かめたりするアプローチです。
- A群(処置群):販促を受けた状態
- B群(統制群):通常の状態(販促を受けていない状態)
このようにABテストの目的が、例えば販促効果を推定することだったりする場合、厳密なABテストではなくDID(差の差、difference in differences)推定で十分な場合があります。
DID(差の差)推定で悩ましいのが、共通トレンド仮定を満たす統制群(control group)の設定にあります。
それを乗り越えようとするの手法が、SC法(synthetic control method、合成コントロール法)です。
今回は、「時系列性(Before&After)を加味した因果推論でよく利用されるSC法(synthetic control method、合成コントロール法)」というお話しをします。
DID推定の復習
ある小売チェーンで、ある販促のABテストを実施することになりました。
そこで、次の2つの状況を作りました。
- 状況A:販促を実施する
- 状況B:販促を実施しない
A群に割り当てられた店舗は状況Aを、B群に割り当てられた店舗は状況Bになります。
ここで、以下の3つの処置効果(今回の例では販促効果)を得ることができます。
- ATE:平均処置効果(Average Treatment Effect)
- ATT:処置群における平均処置効果(Average Treatment effect on the Treated)
- ATU:統制群における平均処置効果(Average Treatment effect on the Untreated)
ATTは、処置群であるA群の「状況Aと状況Bの差」つまり「A群(状況A)とA群(状況B)の差」です。A群(状況A)が実際に起こる事実で、A群(状況B)は実際に起こらない反実仮想です。
実務で販促効果を見たいとき、販促を実施したA群の効果、つまりATTを知りたいケースが多いです。DID推定は、ATTを推定するための手法で、問題になるのは反実仮想であるA群(状況B)の数値をどう求めるのか、です。
DIDは、処置前後(Before&After)のデータを用います。A群だけでなく、B群の処置前後(Before&After)のデータを用います。
そのため、先ずは各群で処置前後(今回の例では、販促前後)の売上の差を計算します。
- A群の販促前後の売上の差
- B群の販促前後の売上の差
ここで、共通トレンド仮定を置くと、A群(状況B)の値を求めることができます。
A群(状況B)のBefore&Afterの差=B群(状況B)のBefore&Afterの差
以上から……
ATT=A群(状況A)のBefore&Afterの差ーB群(状況B)のBefore&Afterの差
これがDID推定の結果です。
売上などの目的変数に影響を及ぼす説明変数(この分野では共変量と呼ばれる)を考慮することもできます。その場合は、線形回帰(重回帰)モデルを構築します。要は、簡単だということです。
このDID推定の大きな弱点は、共通トレンド仮定です。この仮定を満たすB群を準備する必要があります。
SC法とは?
簡単に言うと、統制群(control group)候補から、都合のいい統制群(control group)を擬似的に作ってしまおう! ということで、その意味ではマッチング理論の範疇になります。
統制群(control group)候補と言っているのは、販促を受けていないB群(統制群)に分類されるデータ群のことです。
どのようにして擬似的に都合のいい統制群(control group)を作るかというと、販促を受けていないB群(統制群)に分類されるデータ群を、通常のABテストテストやDIDなどのように単純に平均化し色々計算するのではなく、データに重みを付けて計算します。
重みの付け方が重要で、都合のいい統制群(control group)になるような重み付けをします。
都合のいい統制群(control group)とは、重みを付けたらまるでA群(処置群)のようになる統制群(control group)です。
A群(処置群)っぽい統制群(control group)と、A群(処置群)を比較することで、効果が見えてくることでしょう。
つまり、都合のいい統制群(control group)を作ってしまおう ということで、共通トレンド仮定を満たす統制群(control group)の設定というDID(差の差)推定の悩みから開放されます。
BSTS (ベイズ構造時系列モデル)へ
DIDやSC法の場合、処置(今回の例では販促)の効果を、ある1時点だけを見ているだけです。1日後と1週間後と1ヶ月後と、時間の経過とともに効果は時系列に変化していくかもしれません。
そのあたりの時系列的な変化を見るものではありません。難しい用語で使えば、時系列の構造変化がない状態とも表現できます。
要は、DIDやSC法の場合、構造が変わらないことを前提(1時点しかみていないので、時間による構造変化を考える必要がないかも……)にしていますが、現実は時間とともに、どんどん構造は変化していきます。
そこで登場するのが、BSTS (Bayesian structural time series model、ベイズ構造時系列モデル)です。
これは、端的に言うと状態空間モデルという時系列解析系のモデルです。状態空間モデルは、モデリングの自由度が高いため、時系列のトレンドや周期性をどのように組み込むかなど、それなりの知識などが必要になります。
ちなみに、最新のBSTSの中には、A群(処置群)のデータだけで因果推論するものもあります。要は、B群(統制群)のデータはいらない、ということです。
今回のまとめ
今回は、「時系列性(Before&After)を加味した因果推論でよく利用されるSC法(synthetic control method、合成コントロール法)」というお話しをしました。
前回、ABテストにおいて時系列性(Before&After)を加味したDID(差の差)推定についてお話ししました。
ABテストとは、例えばユーザをA群(処置群)とB群(統制群)に分け、どちらのほうが好成績を納めるのかをデータで確かめたりするアプローチです。
- A群(処置群):販促を受けた状態
- B群(統制群):通常の状態(販促を受けていない状態)
このようにABテストの目的が、例えば販促効果を推定することだったりする場合、厳密なABテストではなくDID(差の差、difference in differences)推定で十分な場合があります。
DID(差の差)推定で悩ましいのが、共通トレンド仮定を満たす統制群(control group)の設定にあります。
それを乗り越えようとするの手法が、SC法(synthetic control method、合成コントロール法)です。
簡単なものであればExcelでも出来ますが、RやPythonなどを使うと楽に求めることができます。RやPythonなどでやる方法は、別途説明します。興味ある方は試してみてください。