「広告を出したら売れた。でも…“もともと買う気の人”に出してただけでは?」
こういう 見えない要因のせいで、観測データの因果推論は詰みがちである。それでも条件がそろうと、まだ手がある。それが Proximal Causal Inference(PCI)。
TL;DR
- 因果推論が難しい一番の原因は「測れてない交絡(見えない要因)」
- PCIは、その“見えない要因”の 影(Proxy)を2種類用意できるときに効く
- ポイントは 「施策に近いProxy」と「結果に近いProxy」 を分けて使うこと
なぜ「相関≠因果」になるの?
例:クーポン配布(施策)で売上が上がった。
でも実は…
- 買う気が強い人(見えない要因) ほど、アプリをよく開く
- アプリをよく開く人ほど、クーポンが当たりやすい(施策が届きやすい)
- 買う気が強い人は、クーポンがなくても買う
こうなると「クーポンが効いた」のか「買う気が強い人に当たっただけ」なのか、混ざって分からなくなる。
この 見えない要因 をここでは 隠れたやる気 / 重症度 / 購買意欲みたいなものだと考える。
PCIの発想
「見えない要因」を直接測れないなら、Proxyを2種類使う。
PCIでは、見えない要因そのもの(例:購買意欲)を推定しようとしない。代わりに Proxy を2種類に分ける。
Proxy 1:施策に近いProxy(Z)
- 「施策が出る/出ない」に影響しやすい情報
- でも 結果(売上など)には直接効かないと考えられるもの
例(マーケ/プロダクト)
- 配信ルールの都合(在庫、配信枠、システム都合のスロット)
- 通知が届く仕組み側のログ(“届く/届かない”に影響するが、売上に直結しにくいもの)
Proxy 2:結果に近いProxy(W)
- 結果(売上など)に影響しやすい情報
- でも 施策を出す判断には直接使われていないと考えられるもの
例(マーケ/プロダクト)
- 施策の前後に観測できる反応ログ(閲覧量、検索、滞在など)
- ただし「それが施策配布の条件に入ってる」ならアウトになりがち
図で考える
見えない要因 がいて、施策と結果の両方に影響している。
そこに Z(施策側のProxy) と W(結果側のProxy) がぶら下がっているイメージです。
ここがPCIのキモ
- Zは「施策には効くけど、結果には直接効かない」
- Wは「結果には効くけど、施策には直接効かない」
で、どうやって因果効果が出るの?
超ざっくり言うと、PCIはこうやる:
- ZとWを使って 、「見えない要因がどんな感じか」を間接的に つじつま合わせ する
- その つじつま合わせ がうまくいくと、
- 施策Aが結果Yに与えた分 だけを取り出せる
ポイントは、ZとWが同じ見えない要因UのProxyを見ている こと。
片方だけだと不足しがちだけど、2種類あると一気に情報が増える、という感覚。
具体例:広告クーポンで考える
- A(施策):クーポン配布
- Y(結果):購買
- U(見えない要因):購買意欲(本当は測れない)
Z(施策に近いProxy)候補
- 配信システムの都合(混雑で配れない、枠の都合で当たりやすい、など)
- 「施策が届く/届かない」に効くが、購買に直接は効きにくいもの
W(結果に近いProxy)候補
- その後のサイト内の自然な行動ログ(閲覧・検索・カート投入など)
- ただし「そのログが配布ルールに使われている」ならWとして弱くなる
ここが難しいポイントはZ/W選び
Z(施策側のProxy)チェック
- それは 施策が出るかどうかに影響している?
- それは 結果に直接効く理由が薄い?(ここが大事)
W(結果側のProxy)チェック
- それは 結果に近い反応っぽい?
- それは 施策の出し分けルールに入ってない?(入ってたら危険)
よくある失敗パターン
失敗1:Zが結果に直接効いてた
例:「施策が出る/出ない」を決めてる要因が、そもそも売上にも直結している
→ Zとして使うと前提が崩れがち
失敗2:Wが施策ルールに混ざってた
例:「閲覧量が多い人にクーポン」みたいなルールがあるのに、閲覧量をWにする
→ Wが施策に直接効いてるので破綻しやすい
失敗3:Proxyが弱い(情報が足りない)
ZもWも UのProxy が薄いと、推定が不安定(結果が暴れる)
→ 候補を増やす/設計を練る/サンプルを増やす が基本
Negative Controlとの違い
ネガコンはざっくり
- 「効くはずがないものが効いて見える」→ バイアスを疑う
- 「効くはずがないもの」を利用して補正する
PCIはそこから一歩進んで
-
ZとWという2種類のProxyを揃えて、因果効果そのものを取りに行く
という感じ(ネガコンの一般化として語られることがある)。
実装したくなったら
- R: CRAN
PCL(Proximal Causal Learning 系の実装)
https://cran.r-project.org/package=PCL
「まず動かす」より前に、Z/Wの妥当性のほうが重要である。ここを雑にすると、どんな立派な推定器でも普通に壊れる。
因果推論において、大層な数式を語ったり、R/Pythonのパッケージをなぞったりするものが、ここ5年でQiita含めて著しく増加したが、これらは 自分自身の写経 ならいいけど、それ以外には本質的には意味がない。ただLLMに食わせるための材料。
まとめ
-
観測データで因果が難しいのは、だいたい 見えない要因(未測定交絡) のせい
-
PCIは、その見えない要因の Proxyを2種類(施策側Z、結果側W) 集めて戦う方法
-
成否は Z/W設計が9割:
- Zは施策には効くが結果に直接効かない
- Wは結果には効くが施策に直接効かない
参考
- 総説(2024, Statistical Science) “An Introduction to Proximal Causal Inference”
https://projecteuclid.org/journals/statistical-science/volume-39/issue-3/An-Introduction-to-Proximal-Causal-Inference/10.1214/23-STS911.full - 基礎の同定(2018, Biometrika)
https://academic.oup.com/biomet/article/105/4/987/5049227 - 導入(arXiv 2009.10982)
https://arxiv.org/abs/2009.10982