Slide 1

Slide 1 text

効果検証入門に物申してみた 2023/12/[email protected] by うとしん

Slide 2

Slide 2 text

このテキストにこんな記述が... 「操作変数は介入の割り当てに影響を与えるものの、効果が表れ る変数に対しては影響を与えないような変数です。(中略)ビジ ネスの環境で発見することは非常に難しく、扱うことができるの は非常にまれである(後略)」 効果検証入門について 敬愛してやまないCyberAgentの安井さんが執筆さ れたテキスト 効果検証の概要と効果検証のための因果推論手法がRの実装コー ドとともに説明されている神テキストです!(ステマ) 効果検証入門(安井, 2020)p11から引用

Slide 3

Slide 3 text

物申したいのはココ! 「操作変数をビジネス上で扱うことは非常にまれ」 → そんなことはない!!! そこで今回は「操作変数はこんなケースで使えます」という話をします! 効果検証入門に限らず、さまざまな有識者や計量経済学などのテキストから「”適切な”操作変数なんて なかなか見つからない」という主張が散見されます(これ自体には異論はない) 一方、Tech企業の分析では”適切な”操作変数を利用して発展的な議論をしているケースも多数存在

Slide 4

Slide 4 text

こんなときどうする? アプリのプッシュ通知が売上に与える効果を考えたい 売上: 2,000円 売上: 1,000円 プッシュ通知を見る プッシュ通知を見ない プッシュ通知の効果は 1,000円 ユーザーiさん 観測できるのは どちらかだけ プッシュ通知の配信の有無をランダムに割り当ててA/Bテストしますよね?

Slide 5

Slide 5 text

よくある結果 プッシュ通知の効果がめっっっちゃ小さい... 平均売上: 1,100円 平均売上: 1,000円 プッシュ通知が 配信されるグループ プッシュ通知が 配信されないグループ プッシュ通知の効果は100円?? ユーザー群 配信コストを考えるとプッシュ通知は送らない方がいい、、?

Slide 6

Slide 6 text

なんで効果が小さくなるのか 処置と割当の不一致や効果の異質性が問題 プッシュ通知を見ないユーザー (効果=0) プッシュ通知を見ても売上が増えな いユーザー(効果=0) プッシュ通知を見て売上が増える ユーザー(効果>0) プッシュ通知が配信されるグループ

Slide 7

Slide 7 text

なんで効果が小さくなるのか 効果0のユーザーが多く存在し、平均的な効果が薄まって見える プッシュ通知を見てないor見ても効果が0のユーザーを含めて平均的な効果を計算している 効果=0 効果=0 効果>0

Slide 8

Slide 8 text

手っ取り早い解決策 プッシュ通知を見たユーザーにおける局所的な効果を考える 効果=0 効果=0 効果>0 ここの部分のユーザーにおける平均的な効果を計算したら良い

Slide 9

Slide 9 text

これで解決!!、、、ではない プッシュ通知を見たユーザーと配信されてないユーザーの平均を比較 プッシュ通知が配信 されないグループ プッシュ通知が配信 されるグループ プッシュ通知を見ないユーザーを 平均の計算から除外する グループ内の全ユーザーで 計算した平均 プッシュ通知を見たユー ザーのみで計算した平均 効果? プッシュ通知を見ないユーザーを除外するのは 購買意欲の低いユーザーを除外してる(かも)

Slide 10

Slide 10 text

じゃあ、どうすればいいの?? ここで操作変数の出番!!!

Slide 11

Slide 11 text

操作変数のおさらい 操作変数とは「介入の割り当てに影響を与えるものの、効果が表れ る変数に対しては影響を与えない」ような変数 Y(アウトカム) D(介入) Z(操作変数) ZはYには影響を与えない 2SLSという手法で局所的な効果を推定することができる(理論的な説明は割愛) RのAERパッケージで実行可能!

Slide 12

Slide 12 text

先ほどの例を当てはめる - 操作変数Z: プッシュ通知の配信の有無 - 介入D: プッシュ通知を見たかどうか - アウトカムY: 売上 売上 プッシュ通知を 見たかどうか プッシュ通知の 配信の有無 プッシュ通知を見たユーザーにおける(局所的な)効果を推定 プッシュ通知の配信の有無はランダムに割り当てるので売上に影響はない

Slide 13

Slide 13 text

プッシュ通知が購入金額に与える効果を推定する問題を考える 以下のデータを利用 - リンク: https://github.com/matheusfacure/python-causality-handbook/blob/master/causa l-inference-for-the-brave-and-true/09-Non-Compliance-and-LATE.ipynb - データには3つのカラムが存在 - in_app_purchase: 購入金額(単位: ドル) - push_assigned: プッシュ通知が配信されたら1, されなかったら0 - push_delivered: プッシュ通知が見られたら1, 見られなかったら0 Rでの実装例: データセットの紹介

Slide 14

Slide 14 text

Rでの実装例: データのインポート

Slide 15

Slide 15 text

Rでの実装例: OLSによる推定結果 推定された効果は2.3636 (見たかどうかにかかわらず)プッシュ通知の配 信が割り当てられたユーザーの平均的な効果 効果=0 効果=0 効果>0 推定しているのはプッシュ通知を見てないor 見ても効果が0のユーザーを含めた平均的な効果

Slide 16

Slide 16 text

Rでの実装例: IVを利用した推定結果(2SLS) 推定された効果は3.2938 プッシュ通知を見たユーザーにおける(局所的)な効果 OLSの推定値(2.3636)よりも大きい 効果=0 効果=0 効果>0 推定しているのはプッシュ通知を見た ユーザーにおける(局所)平均的な効果

Slide 17

Slide 17 text

2SLSの補足: 1段階目の推定結果 推定された効果は0.7176 約3割ほどいたプッシュ通知を見てない (効果0)のユーザーを排除している 効果=0 効果=0 効果>0 1段目の推定ではこのユーザー の割合を推定している

Slide 18

Slide 18 text

まとめ - 効果を知りたいときはA/Bテストでグループ間の平均を比較しがち - 効果0のユーザーが存在し、推定された効果が小さいという問題 - 処置と割当の不一致 - 効果の異質性 - 操作変数を利用することで、介入がなされたユーザーにおける局所的 な効果を推定することが可能 - 2SLSはRのAERパッケージを利用することで実装可能 - 操作変数は意外と使う(操作変数はいいぞ!)

Slide 19

Slide 19 text

Appendix

Slide 20

Slide 20 text

Webページは2023年11月24日時点に参照してます - 安井(2020)「効果検証入門」技術評論社 - Scott(2021)「Causal Inference: The Mixtape」Yele University Press - https://qiita.com/s1ok69oo/items/d9f3a3860388f3b9911d - https://github.com/matheusfacure/python-causality-handbook 参考文献

Slide 21

Slide 21 text

ご清聴ありがとうございました!