第318話|時系列性(Before&After)を加味した因果推論でよく利用されるSC法(synthetic control method、合成コントロール法)

第318話|時系列性(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、合成コントロール法)です。

今回は、「時系列性(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でも出来ますが、RPythonなどを使うと楽に求めることができます。RPythonなどでやる方法は、別途説明します。興味ある方は試してみてください。