社内の勉強会で紹介したSynthetic Controlを利用した因果推論についての資料
© GO Inc.Synthetic Controlによる因果推論2023.05.30AI技術開発部 分析グループ / 秋月 達樹GO株式会社
View Slide
© GO Inc.2自己紹介プロフィール写真GO株式会社AI技術開発部 分析グループ / 秋月 達樹工場勤務から海外駐在を経験したのち、データ分析の受託企業や広告事業においてデータ分析や機械学習エンジニアリングを担当。2021年4月にGO(旧:Mobility Technologies)に中途入社し、タクシーアプリ『GO』のユーザー、乗務員に関する分析や施策効果の検証、経営上の意思決定に関与する分析業務を担当。------------------------------------------------週に1回サッカーしています。ELLEGARDENが新アルバム出したのが嬉しくて泣いています。この時期は末端冷え症なのでキーボードが上手く打てなくて困っています。(解消法をご存知方は教えてください。)@Akidukin
Index© GO Inc.Synthetic Control による因果推論1 – 因果推論のモチベーション2 – パネルデータに対する因果推論3 – Synthetic Control による因果推論4 – Synthetic Control 実践5 – まとめ
© GO Inc.因果推論のモチベーション01
© GO Inc.● ビジネス上の意思決定において、特定の変数(𝑊)が及ぼすアウトカム(𝑌)への影響を定量的に把握したい場面は多く存在する○ 例えば、売上(𝑌) に対して広告出稿(𝑊)を行う事がどれだけ影響(τ)を与えているのか、仮に広告出稿をしなかった場合、売上はどれだけ毀損するのかしないのか● 無作為実験(ABテスト)下においては単純比較をするだけで影響を計測することは出来るが現実的に実施自体が不可能な場合が存在する因果推論が必要な場面Y : 売上𝑊 [0,1] : 広告出稿𝑌𝑊無作為実験下においては 𝑌!0 , 𝑌!1 ⫫𝑊!が成立するため単純比較をする事で効果を推定する事ができる介入効果全ての施策において無作為実験(ABテスト)を実施することは現実的に不可能な場合が存在するτ = Ε 𝑌!𝑊!= 1 − Ε 𝑌!𝑊!= 0
© GO Inc.● 無作為実験が行えない場合、介入の有無や増減に関しては何かしらの交絡が発生する● 交絡が発生している状況下において単純比較を実施すると、推定される効果にバイアスが生じてしまい、正しい推定が出来なくなってしまう単純比較によるバイアス𝑌𝑊𝑋交絡が発生している𝑌𝑋𝑊 0𝑊(1)𝑋の値により𝑊が決まっている場合𝑋と𝑊のどちらの影響か切り分けができず単純比較によりバイアスが生じる𝐸[𝑌"|𝑊 = 1]𝐸[𝑌"|𝑊 = 0]
© GO Inc.● 交絡が発生している場合、共変量をすべて調整することが出来れば真値を推定できる● しかし、すべてを調整する事は現実的に不可能なため、観測できる範囲内で調整を行い交絡によるバイアスの影響を少なくする必要がある共変量の調整によりバイアスの影響を小さくする発生している交絡を𝑋で調整(条件付け)することでバイアスを少なくすることが出来る𝑃 𝑌 𝑇 = 1, 𝑋 = 𝑃(𝑌|𝑋)𝑌𝑋𝑊 0𝑊(1)𝑌𝑊𝑋
© GO Inc.● 因果効果を機械学習の変数重要度で代用した場合、得られる結果は説明変数間の関係を考慮していない● 交絡が発生している状況下において、説明変数間の関係を考慮しない場合、間違った推定をしてしまう場合が多く注意が必要機械学習による代用は難しいTX1X2X3Y機械学習のイメージ説明変数間の関係を考慮しないTX1X2X3Y因果推論のイメージ説明変数間の関係を考慮する
© GO Inc.パネルデータに対する因果推論02
© GO Inc.● 前章で紹介した介入効果の定量把握を行いたい場面は、パネルデータに関しても同様に存在する○ 例えば、テレビCM(𝑊)が与える新規登録ユーザー数(𝑌)への影響(τ)● パネルデータに対する因果推論は、トレンドによる影響なのか介入による影響なのか切り分けが難しいパネルデータに対する因果推論𝑌新規登録ユーザー数𝑇時刻介入点介入後に𝑌は上昇しているように見えるが上昇の要因がトレンドなのか、介入なのか影響の切り分けが難しい𝐸[𝑌"|𝑊 = 1]𝐸[𝑌"|𝑊 = 0]
© GO Inc.● 単純に前後比較を行なった場合、介入効果を正しく推定する事ができず間違った推定をしてしまう事が多い● トレンドによる影響を考慮せずに推定するため、過小に(または過大に)評価してしまう為である前後比較によるバイアスの例𝑌新規登録ユーザー数𝑇時刻介入点𝑌#(𝑤 = 0)𝑌#𝑤 = 0介入なし介入あり𝑌#(𝑤 = 1)τ = 𝑌#𝑤 = 1 − 𝑌#(𝑤 = 0)単純比較により、過大に介入効果を見積もってしまう𝑌"𝑤 = 1 − 𝑌"𝑤 = 0 < 𝑌"𝑤 = 1 − 𝑌"𝑤 = 1τ = 𝑌#𝑤 = 1 − 𝑌#(𝑤 = 1)本来推定したい前後比較
© GO Inc.● こうした場合に広く一般的に利用される手法としてDifference-In-Differences(DID)という手法が存在する● DIDは介入グループと非介入グループの前後の比較を行うことでトレンドによる影響を少なくする事ができるDifference-In-Differencesによる因果効果の推定𝑌新規登録ユーザー数𝑇時刻介入点𝑊 0𝑊(1)τ454𝑌#(𝑤 = 0)𝑌$(𝑤 = 0)𝑌$(𝑤 = 1)𝑌#(𝑤 = 1)τ454= 𝐸 𝑌61 𝐷 = 1 − 𝐸 𝑌60 𝐷 = 1− 𝐸 𝑌71 𝐷 = 0 − 𝐸 𝑌60 𝐷 = 0介入グループの介入前後の比較非介入グループの介入前後の比較非介入グループのトレンドを介入グループのトレンドと見なし比較を行うことで介入効果を推定することが出来る
© GO Inc.● DIDを利用する場合、介入グループと非介入グループのトレンドは大きく変わらないという非常に強い仮定を置く必要がある(並行トレンド仮定)● 介入グループと非介入グループでトレンドが大きく変わっている場合、得られた推定結果を支持することは難しいDIDを利用する上での仮定𝑌新規登録ユーザー数𝑇時刻介入点𝑊 0𝑊(1)𝑌#(𝑤 = 0)𝑌$(𝑤 = 0)𝑌$(𝑤 = 1)𝑌#(𝑤 = 1)τ454並行トレンド仮定が支持できない場合介入グループのトレンドとして代用できないため得られた推定量はバイアスが発生している
© GO Inc.Synthetic Controlによる因果推論03
© GO Inc.● 介入グループに対して、非介入グループに重みづけを行い比較を行う手法である● 非介入グループに重みづけを行うことで「もし介入を受けていなかったら、介入群に何が起こっていたか」を表現するSynthetic Controlとは𝑇時刻介入点𝑊 0𝑊(1)𝑌新規登録ユーザー数Unit(1)Unit(2)Unit(3)Unit(4)𝑇時刻介入点𝑌新規登録ユーザー数SyntheticControl
© GO Inc.● 介入グループに一致するように重み付けを行うため、並行トレンドを仮定できない場合でもバイアスの影響を受けづらい● また、時間と共に変化する交絡因子の影響を説明する事ができるSynthetic Controlを利用する事の利点𝑇時刻介入点𝑌新規登録ユーザー数unit𝑇時刻𝑊=SyntheticControl並行トレンドを仮定できない場合でもバイアスを受けづらい時間と共に変化する交絡因子の影響を説明できる𝑊 0𝑊(1)
© GO Inc.● Synthetic Controlの介入効果の推定量は固定効果モデルの最適化問題を解くことで推定できる○ ユニットの重み𝑊!#$と時間固定効果β%を考慮した推定モデルである事がわかる● 重みに加重平均を利用することで、ロバストな推定結果を得る事が出来る○ 重みに制約を付けなかった場合、存在し得ない数値が観察されてしまう恐れがあるSynthetic Controlの内部をもう少し理解するユニット毎に設定する重み時間固定効果+τ89 = 𝑎𝑟𝑔𝑚𝑖𝑛:,;{Σ<=6> Σ?=6@ (𝑌− β?− τ𝐷)A 7𝑊<89}unit1unit2 unit3介入グループ重みを外挿してしまうとロバストな結果が得られないunit1unit2 unit3介入グループUnit内部で補完するよう制限を付ける必要があるSynthetic Control の 固定効果モデル
© GO Inc.● 非介入グループとSynthetic Controlの間に距離がゼロになる重みが存在する事が大前提となる● また、観測不可能な変数同士の距離もゼロになっている事が必要○ 要するに介入グループと似たような傾向を持つ非介入ユニットが存在しないとダメSynthetic Controlを利用する上での注意点𝑇時刻介入点𝑊 0𝑊(1)𝑌新規登録ユーザー数トレンドの傾向が一致する必要はないが非介入グループの内部で加重平均を利用しているためある程度似たような集団を採用する必要がある※…比較対象とできるユニット数が少ない時
© GO Inc.Synthetic Control実践04
© GO Inc.● Synthetic Controlを実践するために1988年11月に実施された「カリフォルニア州へのタバコ税及び健康保護法」が導入された後のタバコの販売数についてのデータを用意● たばこ税が1箱あたり25セント引き上げられ、他のタバコ製品にも同額が課税された○ この政策は一般的にProposition 99として知られている検証用にダミーデータを生成1970197119721973197489.895.4101.1102.9108.2100.3104.1103.9108.0109.7123.0121.0123.5124.4126.7124.8125.5134.3137.9132.8Year Alabama Arkansas California Colorado……………………………データセット参考- https://github.com/jehangiramjad/tslib/blob/master/tests/testdata/prop99.csv
© GO Inc.● 非介入グループのデータを利用し、介入グループに近似する重みを学習する● 学習した重みを利用し、介入グループに近似するデータ(合成コントロール)を生成するSynthetic Controlによる因果効果の推定from scipy.optimize import fmin_slsqpimport numpy as npfrom toolz import reduce, partial## 損失関数の定義def loss_w(W, X, y) -> float:return np.sqrt(np.mean((y - X.dot(W))**2))## weightの推定def get_w(X, y):w_start = [1/X.shape[1]]*X.shape[1]weights = fmin_slsqp(partial(loss_w, X=X, y=y),np.array(w_start),f_eqcons=lambda x: np.sum(x) - 1,bounds=[(0.0, 1.0)]*len(w_start),disp=False)return weights## 学習や合成コントロールの作成tar_ind = df_sc.variable.astype('int') < 1988y = df_sc.loc[tar_ind,'California'].valuesX = df_sc.loc[tar_ind,tar_cols].valuescalif_weights = get_w(X, y).reshape(-1,1)synthetic_calif = df_sc[tar_cols].values.dot(calif_weights)介入前の期間で重み付けする
© GO Inc.● 生成したデータとの差分を介入効果として推定する事ができる● Proposition99 によりタバコの売上が25パック減少した事が分かり、税の導入により個人のタバコの消費が抑えられる事が分かった推定結果と解釈τ!" = 𝑌#"$ − 𝑌#"%plt.figure(figsize=(12,8))plt.plot(df_sc.variable, df_sc['California'].values- synthetic_calif.ravel(), color = 'blue’, label = 'Treatment Effect')plt.vlines(x=18,ymin=-30,ymax=5,color='gray’,label='treated')plt.hlines(y=0, xmin=1, xmax=31, lw=2)plt.legend()plt.title('prop 99 cigaretto sales')plt.grid('--',color = 'gray', alpha = 0.5)plt.xticks(rotation=90)plt.show()
© GO Inc.まとめ05
© GO Inc.● 介入効果を推定する際に単純比較するとバイアスが含まれるケースについて紹介しました● パネルデータに対して介入効果を推定する際の注意点とDIDについての概要を紹介しました● Synthetic Controlの概要と利点及び注意点について紹介しました。● Synthetic Controlの利用例をpythonのコードとともに紹介しました。まとめ
文章・画像等の内容の無断転載及び複製等の行為はご遠慮ください。© GO Inc.