統計ロードマップ
Causal Inference

因果推論 入門ミニ教科書

「相関は因果ではない」── でも、ビジネスでも研究でも欲しいのは **因果効果** です。本ミニ教科書は AI エンジニア・データサイエンティスト向けに、 DAG・傾向スコア・DID・操作変数法 の 4 大手法を 5 章でコンパクトに学べる構成。

Chapter 1

相関と因果はどう違うのか

「アイスの売上が上がるとプールの溺死者も増える」── これは相関ですが、アイスを禁じても溺死は減りません。真の原因は気温(交絡因子)であり、アイスと溺死は同じ原因を共有しているだけ。因果推論はこの「一見相関だが因果ではない」を見抜くための学問です。

ポテンシャルアウトカム枠組み

個体 について、処置を受けた場合の結果 と受けなかった場合の結果 を考えます。実際に観測できるのはどちらか一方だけ ── これが因果推論の基本問題(Fundamental Problem of Causal Inference)。

💡 なぜ難しいか

1 人の人について「薬を飲んだ自分」と「飲まなかった自分」を同時には観測できない。だから集団レベルで、似た特性を持つ人どうしを比較するか、何らかの仮定で欠損部分を補う必要がある。

Chapter 2

DAG とバックドア基準

因果関係を表すグラフが DAG(有向非巡回グラフ)。ノードは変数、矢印は因果の向き。Pearl らが整備した枠組みで、どの変数を調整すれば交絡を除去できるかを バックドア基準 で判定できます。

3 つの基本構造

  • Chain: で条件付けると関連が消える
  • Fork: が交絡因子。調整すべし
  • Collider: で条件付けると 偽の関連 が生まれる(調整してはいけない)
🛠 実務でのよくある罠

「とりあえず手元にある変数を全部 control」は危険。Collider を調整すると本来ない関連が生まれる(Berkson のパラドクス)。DAG を書いてから調整変数を選ぶのが正攻法。

Chapter 3

傾向スコアマッチング

RCT(無作為化比較試験)が無理な観測データで、処置群と対照群を「似た者同士」で比較する手法。傾向スコア が同じならば、観測共変量に関する分布が揃うことを利用。

手順

  1. ロジスティック回帰などで を推定
  2. 処置群の各個体に、似た を持つ対照群個体をマッチング
  3. マッチ後の群間で結果を比較 → ATT(処置群への平均処置効果)を推定
Python: 傾向スコアマッチング
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import NearestNeighbors
import numpy as np

# X: 共変量, T: 処置(0/1), Y: 結果
ps = LogisticRegression().fit(X, T).predict_proba(X)[:, 1]

treat_idx = np.where(T == 1)[0]
ctrl_idx = np.where(T == 0)[0]

nn = NearestNeighbors(n_neighbors=1).fit(ps[ctrl_idx].reshape(-1, 1))
_, match = nn.kneighbors(ps[treat_idx].reshape(-1, 1))
matched_ctrl = ctrl_idx[match.ravel()]

att = (Y[treat_idx] - Y[matched_ctrl]).mean()
print(f'ATT = {att:.3f}')
Chapter 4

差分の差分(DID)

ある時点で 政策が片方の地域だけに導入された ような自然実験で使う手法。処置群と対照群、それぞれの 前後差 を取り、さらにその差を取ることで、共通の時間トレンドを除去します。

💡 平行トレンド仮定

DID が成立する鍵は『政策がなければ両群は平行に動いていたはず』という仮定。pre 期間のグラフを描いて、本当に平行かを目で確認することが大切。

🛠 最低賃金の影響(Card & Krueger 1994)

ニュージャージー州が最賃を引き上げ、隣接ペンシルベニア州は据え置き。両州のファストフード店舗の雇用前後差を比較し『最賃引き上げで雇用は減らない』と主張した古典的論文。

Chapter 5

操作変数法(IV)

未観測の交絡があるとき、処置に影響するが結果には直接影響しない外部変数 Z(操作変数) を使って因果効果を識別する手法。

  • 関連性: は処置 と相関する
  • 外生性: は誤差項と無相関(他経路で に影響しない)

2 段階最小二乗法(2SLS)

  1. 1 段階目: に回帰し、予測値 を得る
  2. 2 段階目: に回帰 → 係数が因果効果
🛠 教育年数 → 賃金(Angrist & Krueger 1991)

「生まれ月」を IV に使った有名研究。米国の学校開始年齢ルールにより、生まれ月が義務教育の終わり方を左右し、結果として教育年数に影響。生まれ月自体は賃金には直接無関係 → IV として有効。

次に学ぶこと

  • [相関と因果はどう違うか(ブログ)](/blog/causal-inference-introduction)
  • 次章: 回帰不連続デザイン(RDD)
  • Synthetic Control / DML(Double ML)
  • [ベイズ統計](/textbook/grade-pre1) ─ 因果推論との接続
Chapter 6

回帰不連続デザイン(RDD)

しきい値で処置の有無が決まる 場面で使える手法。例えば「点数 60 点以上で奨学金が出る」「年収 1000 万円以上で増税」のように、ラニング変数(running variable, X)が cutoff を境に処置 が変わるとき、しきい値の すぐ近く で処置群と対照群を比較すると、ほぼ RCT と同等の因果効果が得られます。

アイデア

59 点と 61 点の学生は能力的にほぼ同じ。違いは『奨学金をもらえるかもらえないか』だけ。だから その近傍での結果の差 が奨学金の因果効果と解釈できます。

Sharp RDD と Fuzzy RDD

  • Sharp: cutoff を超えると 100% 処置される(例: 法律で決まったルール)
  • Fuzzy: cutoff を超えると処置確率が ジャンプ するが 100% ではない(IV 的に処理)

実装(Python)

RDD のシミュレーション
初回のみ Pyodide(~10MB)を CDN から読み込みます
💡 バンド幅(bandwidth)の選択

狭くすると比較対象が似てくる(バイアス↓)が、サンプルが減る(分散↑)。広くすると逆。Imbens-Kalyanaraman などの最適バンド幅選択アルゴリズムが使われる(rdrobust パッケージ)。

RDD が破綻するとき

  • 操作可能性: ラニング変数を被験者がねじ曲げられる(例: 試験で 60 点ぴったりが急増)
  • 他の不連続性: cutoff で他の制度も同時に変わる(混淆)
  • 密度のジャンプ: McCrary 密度検定で cutoff で人数が不自然に増減してないか確認
🛠 実例(Lee 2008)

米国下院選挙で『現職が次回当選するか』を、現職の前回得票率 50% を cutoff にした RDD で分析。50% を僅かに超えた現職は再選率が急上昇 ── 現職効果(incumbency advantage)を頑健に推定した古典的論文。

学んだこと(全 6 章のまとめ)

  • Ch1: 因果は相関ではない(ポテンシャルアウトカム)
  • Ch2: DAG とバックドア基準で交絡を見抜く
  • Ch3: 傾向スコアマッチングで似た者同士を比較
  • Ch4: DID で『時間トレンド』を除去
  • Ch5: IV で『未観測交絡』に立ち向かう
  • Ch6: RDD でしきい値ジャンプを使う

因果推論は『どの仮定が現実的か』を問い続ける学問。ドメイン知識と組み合わせて、仮定 → 識別 → 推定 → 感度分析 の 4 段階を回しましょう。

Next

関連ページ