因果推論 入門ミニ教科書
「相関は因果ではない」── でも、ビジネスでも研究でも欲しいのは **因果効果** です。本ミニ教科書は AI エンジニア・データサイエンティスト向けに、 DAG・傾向スコア・DID・操作変数法 の 4 大手法を 5 章でコンパクトに学べる構成。
相関と因果はどう違うのか
「アイスの売上が上がるとプールの溺死者も増える」── これは相関ですが、アイスを禁じても溺死は減りません。真の原因は気温(交絡因子)であり、アイスと溺死は同じ原因を共有しているだけ。因果推論はこの「一見相関だが因果ではない」を見抜くための学問です。
ポテンシャルアウトカム枠組み
個体 について、処置を受けた場合の結果 と受けなかった場合の結果 を考えます。実際に観測できるのはどちらか一方だけ ── これが因果推論の基本問題(Fundamental Problem of Causal Inference)。
1 人の人について「薬を飲んだ自分」と「飲まなかった自分」を同時には観測できない。だから集団レベルで、似た特性を持つ人どうしを比較するか、何らかの仮定で欠損部分を補う必要がある。
DAG とバックドア基準
因果関係を表すグラフが DAG(有向非巡回グラフ)。ノードは変数、矢印は因果の向き。Pearl らが整備した枠組みで、どの変数を調整すれば交絡を除去できるかを バックドア基準 で判定できます。
3 つの基本構造
- Chain: ─ で条件付けると関連が消える
- Fork: ─ が交絡因子。調整すべし
- Collider: ─ で条件付けると 偽の関連 が生まれる(調整してはいけない)
「とりあえず手元にある変数を全部 control」は危険。Collider を調整すると本来ない関連が生まれる(Berkson のパラドクス)。DAG を書いてから調整変数を選ぶのが正攻法。
傾向スコアマッチング
RCT(無作為化比較試験)が無理な観測データで、処置群と対照群を「似た者同士」で比較する手法。傾向スコア が同じならば、観測共変量に関する分布が揃うことを利用。
手順
- ロジスティック回帰などで を推定
- 処置群の各個体に、似た を持つ対照群個体をマッチング
- マッチ後の群間で結果を比較 → ATT(処置群への平均処置効果)を推定
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}')差分の差分(DID)
ある時点で 政策が片方の地域だけに導入された ような自然実験で使う手法。処置群と対照群、それぞれの 前後差 を取り、さらにその差を取ることで、共通の時間トレンドを除去します。
DID が成立する鍵は『政策がなければ両群は平行に動いていたはず』という仮定。pre 期間のグラフを描いて、本当に平行かを目で確認することが大切。
ニュージャージー州が最賃を引き上げ、隣接ペンシルベニア州は据え置き。両州のファストフード店舗の雇用前後差を比較し『最賃引き上げで雇用は減らない』と主張した古典的論文。
操作変数法(IV)
未観測の交絡があるとき、処置に影響するが結果には直接影響しない外部変数 Z(操作変数) を使って因果効果を識別する手法。
- 関連性: は処置 と相関する
- 外生性: は誤差項と無相関(他経路で に影響しない)
2 段階最小二乗法(2SLS)
- 1 段階目: を に回帰し、予測値 を得る
- 2 段階目: を に回帰 → 係数が因果効果
「生まれ月」を IV に使った有名研究。米国の学校開始年齢ルールにより、生まれ月が義務教育の終わり方を左右し、結果として教育年数に影響。生まれ月自体は賃金には直接無関係 → IV として有効。
次に学ぶこと
- [相関と因果はどう違うか(ブログ)](/blog/causal-inference-introduction)
- 次章: 回帰不連続デザイン(RDD)
- Synthetic Control / DML(Double ML)
- [ベイズ統計](/textbook/grade-pre1) ─ 因果推論との接続
回帰不連続デザイン(RDD)
しきい値で処置の有無が決まる 場面で使える手法。例えば「点数 60 点以上で奨学金が出る」「年収 1000 万円以上で増税」のように、ラニング変数(running variable, X)が cutoff を境に処置 が変わるとき、しきい値の すぐ近く で処置群と対照群を比較すると、ほぼ RCT と同等の因果効果が得られます。
アイデア
59 点と 61 点の学生は能力的にほぼ同じ。違いは『奨学金をもらえるかもらえないか』だけ。だから その近傍での結果の差 が奨学金の因果効果と解釈できます。
Sharp RDD と Fuzzy RDD
- Sharp: cutoff を超えると 100% 処置される(例: 法律で決まったルール)
- Fuzzy: cutoff を超えると処置確率が ジャンプ するが 100% ではない(IV 的に処理)
実装(Python)
狭くすると比較対象が似てくる(バイアス↓)が、サンプルが減る(分散↑)。広くすると逆。Imbens-Kalyanaraman などの最適バンド幅選択アルゴリズムが使われる(rdrobust パッケージ)。
RDD が破綻するとき
- 操作可能性: ラニング変数を被験者がねじ曲げられる(例: 試験で 60 点ぴったりが急増)
- 他の不連続性: cutoff で他の制度も同時に変わる(混淆)
- 密度のジャンプ: McCrary 密度検定で cutoff で人数が不自然に増減してないか確認
米国下院選挙で『現職が次回当選するか』を、現職の前回得票率 50% を cutoff にした RDD で分析。50% を僅かに超えた現職は再選率が急上昇 ── 現職効果(incumbency advantage)を頑健に推定した古典的論文。
学んだこと(全 6 章のまとめ)
- Ch1: 因果は相関ではない(ポテンシャルアウトカム)
- Ch2: DAG とバックドア基準で交絡を見抜く
- Ch3: 傾向スコアマッチングで似た者同士を比較
- Ch4: DID で『時間トレンド』を除去
- Ch5: IV で『未観測交絡』に立ち向かう
- Ch6: RDD でしきい値ジャンプを使う
因果推論は『どの仮定が現実的か』を問い続ける学問。ドメイン知識と組み合わせて、仮定 → 識別 → 推定 → 感度分析 の 4 段階を回しましょう。
合成統制法(Synthetic Control)
DID は「処置群 1 グループ vs 対照群 1 グループ」で平行トレンドを仮定する手法でしたが、現実には適切な対照群が見つからないことが多くあります。合成統制法 (Synthetic Control Method, Abadie & Gardeazabal 2003) は、複数の候補対照群を 重み付け線形結合 して、処置前の処置群とそっくりな「人工対照群」を作り、それと比較する手法です。
アイデア
「カリフォルニア州が 1989 年にタバコ規制を強化したことで、タバコ消費量はどれだけ減ったか?」という問題で、対照群として「他の 38 州」のデータがある。それぞれに重み ()を付けて、処置前のタバコ消費の推移がカリフォルニアと一致するように を最適化。処置後はその合成統制と比較すれば、規制の効果が推定できます。
数式
が処置群の処置前共変量・成果ベクトル、 が候補対照群 のもの。重み和 = 1、非負の制約により「過剰外挿」を防ぎます。
DID との違い
- DID は対照群を「全候補の単純平均」と暗黙に仮定。合成統制は「最も似たプロファイル」を作る点が違う
- 合成統制は処置群が 1 つしかない ケースに強い(国・州レベル政策評価)
- 推論は「プラセボテスト」で行う ─ 各対照群を仮の処置群として同じ手続きを実行し、本当の処置効果がそれらの分布の極端値にあるかを見る
1990 年カリフォルニア・タバコ規制(Proposition 99)。合成統制を作って実際のカリフォルニアと比較し、規制後 12 年で 1 人当たり消費量が約 25 パック減ったと推定。`Synth` (R) や `pysyncon` (Python) で実装可。
因果推論と機械学習の融合
近年、機械学習で因果効果を推定する手法が急速に発展しています。「処置効果は人によって違う(異質性)」を捉える 個別処置効果 (CATE: Conditional ATE) の推定が中心テーマです。
Double Machine Learning(DML)
高次元共変量を ML で扱いながら因果効果を一致推定する枠組み。、 で、 を任意の ML(ランダムフォレスト・勾配ブースティング)で推定し、残差同士で OLS する2段階法。直交化(Neyman orthogonality)により ML 部分の収束遅さがバイアスに伝わらない。
Causal Forest
Causal Forest (Wager & Athey 2018) は、ランダムフォレストを「同じ葉に入った観測同士で処置効果を推定」する形に拡張したアルゴリズム。共変量 ごとの異質処置効果 を非パラメトリックに推定でき、医療・マーケでターゲティングに使われます。R の `grf` パッケージが標準。
Meta-Learners(S/T/X-Learner)
- S-Learner: 処置を共変量の 1 つとして 1 本のモデルで学ぶ
- T-Learner: 処置群と対照群で別々のモデルを学び、予測差を取る
- X-Learner (Künzel et al. 2019): T-Learner を改良。サンプル不均衡に強い
アップリフトモデリング
マーケで「クーポンを送る人を選ぶ」とき、効果が大きい人 = 反応しやすい人とは限りません。「クーポンがあれば買うが、なければ買わない人」を見つけるのがアップリフトモデリングの目的。CATE 推定をビジネス意思決定に直結させた応用です。
EconML(Microsoft): DML・Causal Forest・X-Learner を網羅。CausalML(Uber): アップリフトモデリング特化。DoWhy(Microsoft): 識別 → 推定 → 反証の 3 ステップで因果分析を体系化。Python ベースで研究・実務両方で使える。
8 章のまとめ
- Ch7: 合成統制法 ─ 1 ユニット処置に強い
- Ch8: ML × 因果 ─ 高次元・異質性を扱う現代手法
- 因果推論は データ + 仮定 の学問。仮定を明示し、感度分析で頑健性を検証する姿勢が大切