Slide 1

Slide 1 text

因果推論-1-前提知識 ・ 学部2年 ・ 中島智哉

Slide 2

Slide 2 text

目的 実践的な因果推論の知識・スキルを身につける .

Slide 3

Slide 3 text

参考書籍 因果推論: 基礎から機械学習・時 系列解析・因果探索を用いた意思 決定のアプローチ 著者:金本 拓 出版社:オーム社 ISBN:978-4-274-23123-0 発行:2024年

Slide 4

Slide 4 text

因果推論とは データに基づいて、ある事象(原因)が別の事象(結果)に与える「真の効果」を測定・推定するための考え方と分析手 法の総称。 ビジネスにおける「次の打ち手」の精度を高めるためのツール。

Slide 5

Slide 5 text

目的:価値創造のため 「どの施策が価値創造に寄与しているか不明」 という課題を解決し、「有効な施策に資本を配分し、価値創造を最大化す る」 という意思決定に、因果推論が貢献する

Slide 6

Slide 6 text

活用事例 マーケティング 新しい広告キャンペーンは、全体の売上をどれだけ増加させたか?(効果測定) クーポンを配布した顧客は、しなかった場合と比べて購入額がいくら増えたか? プロダクト開発 Web サイトの UI 変更は、ユーザーの滞在時間を本当に伸ばしたか? 人事・経営 新しい研修制度は、従業員の生産性を向上させたか? 価格改定は、利益にどのような影響を与えたか?

Slide 7

Slide 7 text

相関と因果の違い 相関関係 片方が増える(減る)と、もう片方も増える(減る)傾向が見られる関係。 例:気温が上がると、アイスの売上も増える。 因果関係 片方が「原因」で、もう片方が「結果」である関係。 相関関係に加え、プロセスやメカニズム(背景情報) から判断される。 例: 「気温の上昇(原因) 」が「アイスを食べたいという欲求(プロセス) 」を引き起こし、「売上増(結果) 」に繋がる。 注意点: 「相関関係はあっても、因果関係はない」ケース(見せかけの相関)が多いため、相関だけを見て判断するのは危険。

Slide 8

Slide 8 text

RCT が理想的な理由 因果効果を分析する手法には信頼性のレベルがあり、最も信頼性が高い(ゴールドスタンダードとされる)のがRCT(ランダ ム化比較試験)。 対象者をランダムに「処置を行うグループ」と「行わないグループ」に分けることで、両グループの性質(年齢、意欲など)が均等 になる。 これにより、2 つのグループ間で生じた結果の差を、純粋な「処置の効果」と見なすことができる。

Slide 9

Slide 9 text

RCT の制約と妥協案 制約の例 倫理的制約: ユーザーに不利益な体験を強制できない。 対象者が割り当てに従わない: クーポンを使わない、広告を見ない等。 サンプルサイズが小さい: 十分なデータ量が確保できない。 費用と労力: 介入に大きなコストや手間がかかる。 妥協案 このような制約がある場合、代替案として主に以下の手法が用いられる。 レベル 1:処置群の前後比較、または処置群と対照群の処置後の 1 時点データのみを使用した分析(変数調整 なし) レベル 2:レベル 1 において変数調整を行った分析 レベル 3:処置群と対照群それぞれの処置前後のデータを使用した分析 (DiD など) レベル 4:実験に類似する状況を利用した、回帰不連続デザインや操作変数法による分析 レベル 5:処置群と対照群のランダム割り当てによる分析

Slide 10

Slide 10 text

因果推論の体系(大きくわけて) ① 因果効果の推定(今回のメインテーマ) 「原因 X が結果 Y にどのくらいの大きさの影響を与えるか?」を推定する。 例:広告費を 100 万円増やすと、売上は 50 万円増加する。 ② 因果探索 データから「何が原因で、何が結果か」という因果の構造自体を発見する。 例:売上の原因は、広告費なのか、天候なのか、それとも別の何かか?

Slide 11

Slide 11 text

因果効果とは(事実と反事実) 因果効果とは、「ある介入(処置)があった場合の事実」と「もし、その介入がなかったとしたら、どうなっていたか、という反事 実」との差。 事実: 処置ありグループ( )で観測された結果の期待値 反事実: もし処置ありグループが処置を受けていなかったら得られたであろう結果の期待値 因果推論の根本的な課題は「反事実を直接観測できないこと」である。RCTなどの手法は、この反事実を精度良く推定するた めの工夫と言える。 T = 1 E[Y (1)] E[Y (0)] 因果効果= E[Y (1)] − E[Y (0)]

Slide 12

Slide 12 text

因果効果の種類 ATE (Average Treatment Effect): 平均処置効果 ATT (Average Treatment effect on the Treated): 処置群の平均処置効果 CATE (Conditional Average Treatment Effect): 条件付き平均処置効果 ITE (Individual Treatment Effect): 個人処置効果 E[Y (1) − Y (0)] E[Y (1) − Y (0)∣T = 1] E[Y (1) − Y (0)∣X = x] Y ​ (1) − i Y ​ (0) i

Slide 13

Slide 13 text

識別仮定: 反事実を観測できないという問題を解決できないままでも、以下の識別仮定をすべて満たすならば因果効果を推定可能 識別性条件: 独立性(交換可能性) :処置群と対照群を入れ替えても結果変数の期待値は変わらない 正値性:各処置に割り当てられる確率が 0 ではない SUTVA: 相互作用なし:ある個体への処置状態が他の個体の結果変数に影響しない 一致性:処置群と対照群の割当の基準が一意である .

Slide 14

Slide 14 text

交絡への対処法 → そのための方法 DAG (有向非巡回グラフ) を用いて因果構造を整理し、バイアスの原因となるパスを特定し、それをブロック(調整)する。 バックドア基準 処置から結果への「裏口(バックドアパス) 」を塞ぐように調整変数の集合を見つけるための基準。 フロントドア基準 処置と結果の間にある変数を利用して因果効果を推定するための基準。 独立性の仮定が満たされない場合でも、他の変数(共変量)を調整することで、条件付きで独立性を満たし、因果効果を推 定できる場合がある。

Slide 15

Slide 15 text

d 分離 と を結ぶすべてのパスが によってブロックされること。 と の条件付き独立性を判断するために用いる。 変数 , が集合 によって d 分離されるのは以下のいずれかを満たす場合。 DAG の中で と を結ぶ任意の経路において合流点 やその子孫が集合 に含まれていない と を結ぶ経路が連鎖経路もしくは分岐経路であり、その中間ノード が集合 に含まれる . X Y Z X Y X Y S X Y Z S X Y Z S

Slide 16

Slide 16 text

バックドア基準 因果効果を推定するために制御すべき変数を特定するための基準。 以下をバックドア基準といい、両方を満たす変数は制御する必要がある。 から集合 に属する要素への有向道がない → (因果パス上の)連鎖経路と合流経路を誤ってブロックしないため → 具体例: → → もしくは → ← → において ( ) と の間で に向かう有向道(バックドアパス)のすべてを集合 に属す要素が d 分離(ブロック)する → (因果パス上以外の へ向かう)連鎖経路と分岐経路をブロックする必要があるため → 具体例: ← ← → ( ) の場合 (連鎖経路)もしくは (分岐経路)のいづれかを制御すれば良い。 . X S X M Y X C D Y M, C, D ∈ / S X Y X S X X A B Y A, B ∈ S A B

Slide 17

Slide 17 text

複雑な DAG から交絡因子を発見する (1/2) .

Slide 18

Slide 18 text

複雑な DAG から交絡因子を発見する (2/2) !pip install dowhy !pip install pydot !apt-get install -y graphviz !pip install networkx import dowhy from dowhy import CausalModel import networkx as nx import pandas as pd g = nx.DiGraph() g.add_edges_from([ ('X1', 'X3'), ('X1', 'X4'), ('X2', 'X4'), ('X2', 'X5'), ('X3', 'X'), ('X4', 'X'), ('X5', 'X'), ('X', 'X6'), ('X1', 'X6'), ('X2', 'X6'), ('X', 'Y'), ('X3', 'Y'), ('X4', 'Y'), ('X5', 'Y'), ('X6', 'Y') ]) all_vars = sorted(list(g.nodes())) dummy_data = pd.DataFrame(columns=all_vars)

Slide 19

Slide 19 text

出力 model = CausalModel( data=dummy_data, graph=g, treatment='X', outcome='Y' ) identified_estimand = model.identify_effect( estimand_type="nonparametric-ate" ) backdoor_set = identified_estimand.backdoor_variables print(f"バックドアの集合: {backdoor_set}") model.view_model() バックドアの集合: <~中略~> 'backdoor': ['X3', 'X4', 'X5']}

Slide 20

Slide 20 text

フロントドア基準 未知の交絡因子が存在する場合にはバックドア基準を満たすことはできない。 → その対応策の 1 つとしてフロントドア基準がある。 → 変数の集合 が以下の3つの条件を満たすとき、 は変数 , についてフロントドア基準を満たすという。 は から への有向道をすべてブロックする から へのバックドアパスは存在しない から へのすべてのバックドアパスは によりブロックされている . Z Z X Y Z X Y X Z Z Y X