Upgrade to Pro — share decks privately, control downloads, hide ads and more …

因果推論-1-前提知識-20250616

Avatar for TomNJP TomNJP
July 19, 2025
37

 因果推論-1-前提知識-20250616

Avatar for TomNJP

TomNJP

July 19, 2025
Tweet

Transcript

  1. 相関と因果の違い 相関関係 片方が増える(減る)と、もう片方も増える(減る)傾向が見られる関係。 例:気温が上がると、アイスの売上も増える。 因果関係 片方が「原因」で、もう片方が「結果」である関係。 相関関係に加え、プロセスやメカニズム(背景情報) から判断される。 例: 「気温の上昇(原因)

    」が「アイスを食べたいという欲求(プロセス) 」を引き起こし、「売上増(結果) 」に繋がる。 注意点: 「相関関係はあっても、因果関係はない」ケース(見せかけの相関)が多いため、相関だけを見て判断するのは危険。
  2. RCT の制約と妥協案 制約の例 倫理的制約: ユーザーに不利益な体験を強制できない。 対象者が割り当てに従わない: クーポンを使わない、広告を見ない等。 サンプルサイズが小さい: 十分なデータ量が確保できない。 費用と労力:

    介入に大きなコストや手間がかかる。 妥協案 このような制約がある場合、代替案として主に以下の手法が用いられる。 レベル 1:処置群の前後比較、または処置群と対照群の処置後の 1 時点データのみを使用した分析(変数調整 なし) レベル 2:レベル 1 において変数調整を行った分析 レベル 3:処置群と対照群それぞれの処置前後のデータを使用した分析 (DiD など) レベル 4:実験に類似する状況を利用した、回帰不連続デザインや操作変数法による分析 レベル 5:処置群と対照群のランダム割り当てによる分析
  3. 因果推論の体系(大きくわけて) ① 因果効果の推定(今回のメインテーマ) 「原因 X が結果 Y にどのくらいの大きさの影響を与えるか?」を推定する。 例:広告費を 100

    万円増やすと、売上は 50 万円増加する。 ② 因果探索 データから「何が原因で、何が結果か」という因果の構造自体を発見する。 例:売上の原因は、広告費なのか、天候なのか、それとも別の何かか?
  4. 因果効果の種類 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
  5. 交絡への対処法 → そのための方法 DAG (有向非巡回グラフ) を用いて因果構造を整理し、バイアスの原因となるパスを特定し、それをブロック(調整)する。 バックドア基準 処置から結果への「裏口(バックドアパス) 」を塞ぐように調整変数の集合を見つけるための基準。 フロントドア基準

    処置と結果の間にある変数を利用して因果効果を推定するための基準。 独立性の仮定が満たされない場合でも、他の変数(共変量)を調整することで、条件付きで独立性を満たし、因果効果を推 定できる場合がある。
  6. d 分離 と を結ぶすべてのパスが によってブロックされること。 と の条件付き独立性を判断するために用いる。 変数 , が集合

    によって d 分離されるのは以下のいずれかを満たす場合。 DAG の中で と を結ぶ任意の経路において合流点 やその子孫が集合 に含まれていない と を結ぶ経路が連鎖経路もしくは分岐経路であり、その中間ノード が集合 に含まれる . X Y Z X Y X Y S X Y Z S X Y Z S
  7. バックドア基準 因果効果を推定するために制御すべき変数を特定するための基準。 以下をバックドア基準といい、両方を満たす変数は制御する必要がある。 から集合 に属する要素への有向道がない → (因果パス上の)連鎖経路と合流経路を誤ってブロックしないため → 具体例: →

    → もしくは → ← → において ( ) と の間で に向かう有向道(バックドアパス)のすべてを集合 に属す要素が 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
  8. 複雑な 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)
  9. 出力 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']}
  10. フロントドア基準 未知の交絡因子が存在する場合にはバックドア基準を満たすことはできない。 → その対応策の 1 つとしてフロントドア基準がある。 → 変数の集合 が以下の3つの条件を満たすとき、 は変数

    , についてフロントドア基準を満たすという。 は から への有向道をすべてブロックする から へのバックドアパスは存在しない から へのすべてのバックドアパスは によりブロックされている . Z Z X Y Z X Y X Z Z Y X