0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

因果推論 Day 3/全30回 因果推論の3つの流派を1枚の地図に — Rubin・Pearl・計量経済は「同じ因果」の別の言葉

0
Last updated at Posted at 2026-07-10

この連載について

因果推論を「本を読んだ」で終わらせず、自分の言葉で説明でき、コードで再現できる状態まで落とす30日連載です。因果推論 30 Days(1人アドベントカレンダー)Day 3/全30回です。これまでの経緯では、Day 1 で「相関が因果に化ける3つの罠」、Day 2 で「潜在的結果とATE/ATT/CATE」を実施しています。

※Claudeと伴奏しながら自分の理解度を深めよう!ということでの1人アドベントカレンダー企画です。学習計画や下書きなどはClaudeに全面的に協力していただいていますが、あくまでも自分の理解を深めるための企画です。

Day 1–3:全体像(相関≠因果/潜在的結果/3つの流派)← いまここ
Day 4–9:Rubin流(潜在的結果・傾向スコア)
Day 10–15:Pearl流(DAG・バックドア基準・do演算子)
Day 16–21:計量経済の準実験(回帰・IV・DID・RDD)
Day 22–27:ML×因果(CATE・Double ML・Causal Forest)
Day 28–30:空間データ×因果/ベイズ×因果/総括

Day1, Day2は、Rubin流という1つの流派の言葉で話していました。しかし、DAG・do演算子・操作変数・DID…といった別の概念もあります。私が最初に読んだ書籍「因果推論の科学」は、Pearlさんが書かれたので、Pearl流の考え方を学べます。本記事ではいったん全体を俯瞰して、3つの流派を1枚の地図にします。


TL;DR(3行)

  • 因果推論には主要な3つの流派があります。Rubin流(潜在的結果)/Pearl流(DAG・do演算子)/計量経済(準実験デザイン)。同じ「因果」に別の言葉で迫ります。
  • 3流派は対立していません。突き詰めると「正しい変数 Z で条件付けて交絡を消す」という同じ操作を、別の論理で正当化しているだけのようです。1つの交絡データで 層別化(Rubin)=バックドア調整(Pearl)=回帰(計量経済)が同じ50に一致します。
  • それぞれの流派の違いは得意分野推定の道具=Rubin、「何で調整すべきか」の識別=Pearl、観察データの設計=計量経済。連載はこの順(Day 4–9/10–15/16–21)で回ります。

今日の問い

Day 2まで「潜在的結果」で話してきた。他の流派では、DAG、do演算子、操作変数、差分の差分… 別の言葉が次々出てきます。
これらは違う理論なのでしょうか? 結局どれを学べばいいのでしょうか?

結論から言うと、3つの主要な流派があり、対立ではなく役割分担です。今日はその地図を描き、最後に「3つの言葉が同じ答えに着く」ところまでコードで確かめます。


3つの流派を1枚で

まず全体像です。

「Xを変えたらYはどう変わる?」という1つの問いに、3つの学派が別の入り口から迫ります。

表にすると、それぞれの「性格」がはっきりします。

観点 Rubin流(潜在的結果) Pearl流(構造的因果モデル) 計量経済(準実験)
中心の問い 反事実との差 $Y(1)-Y(0)$ は? どの変数がどれを生む? どの経路が因果? "擬似ランダム"はどこにある?
原始概念 潜在的結果・割付メカニズム DAG・構造方程式・do演算子 外生性・自然実験
「調整」の道具 傾向スコア・IPW・マッチング バックドア基準で調整集合を決める 回帰・IV・DID・RDD
主な仮定 条件付き無視可能性 バックドア基準を満たす $Z$ 条件付き外生性/操作変数の妥当性
得意なこと 効果の推定・欠測データとしての整理 何で調整すべきか」の識別 観察データから因果を取り出す設計
代表的な人 Rubin, Imbens, Rosenbaum Pearl Angrist, Imbens, Card
連載での担当 Day 4–9 Day 10–15 Day 16–21

面白いのは、人が流派をまたぐことです。Imbens は Rubin 流の中心人物でありながら、計量経済学者として Angrist と共にノーベル経済学賞(2021)を受賞しました。流派は「対立する宗派」ではなく「同じ山への登山ルート」に近いようです。


じつは3流派は「同じ調整」を別の言葉で言っている

いちばん腑に落ちるのは、同じDAGを3つの言葉で読むことです。Day 1・2の「訓練→収入」で、もともとの意欲・スキル $Z$ が交絡している状況を考えてみましょう。

「意欲の高い人ほど訓練を受けやすく($Z \to D$)、意欲が高いほど元々稼ぐ($Z \to Y$)」。この裏口(バックドア経路 $D \leftarrow Z \to Y$)を塞ぐには $Z$ で条件付ける。ここは3流派とも同じ結論に達します。ただし言い方が違うだけです。

流派 「$Z$ で調整せよ」をどう言うか
Rubin 条件付き無視可能性:$Z$ で条件付ければ $(Y(0),Y(1)) \perp D$(割付が潜在的結果と独立になる)
Pearl バックドア基準:$Z$ は裏口 $D \leftarrow Z \to Y$ を塞ぐ調整集合である
計量経済 条件付き外生性:$Z$ を回帰に入れれば $D$ は誤差と無相関(selection on observables)

同じ「$Z$で調整」を、Rubinは欠測データの言葉で、Pearlはグラフの言葉で、計量経済は回帰の言葉で正当化しています。計量経済の言う「外生性」とは、処置 $D$ が回帰の誤差項と無関係であること、つまり誰が処置を受けるかが結果 $Y$ の測れていない要因に引っ張られていない状態です。selection on observables は「選択の偏りは観測できている変数だけで説明がつく」という同じ主張の英語表現です。では本当に同じ答えになるのか、手を動かして確かめます。


手を動かす:1つのデータに3流派の調整を当てる

Day 1・2と地続きの「トレーニングを受ける → 収入上昇(万円)」を、今回は交絡ありの観察データとして作ります。真の効果は全員 +50 に固定しておきます(答え合わせのため)。

import numpy as np, pandas as pd
import statsmodels.formula.api as smf

rng = np.random.default_rng(3)
n = 4000
Z = rng.integers(0, 2, n)                                     # 交絡: 1=もともと高スキル/意欲
D = (rng.random(n) < np.where(Z==1, 0.7, 0.3)).astype(int)   # 訓練(処置): 高Zほど受けやすい
Y = 200 + 80*Z + 50*D + rng.normal(0, 20, n)                 # 収入: Zで底上げ + 訓練効果50
df = pd.DataFrame({"Z": Z, "D": D, "Y": Y})

# 素朴(調整なし)= 受けた人と受けない人の平均差
naive = df[df.D==1].Y.mean() - df[df.D==0].Y.mean()
print("素朴(調整なし) = %.1f" % naive)
素朴(調整なし) = 81.3

真の効果は50なのに、素朴な比較は 81.3。差の31は「訓練を受けた人はもともと意欲が高い($Z$の影)」が上乗せされた交絡バイアスです。ここまではDay 1の復習。

まず、なぜ81に膨らむのか、このデータの前提を2枚で見ておきます。交絡の正体は、$Z$(もともとの意欲・スキル)が「受講」と「収入」の両方を押し上げていることです。

fig1_dataset_premise.png

左は $Z$ ごとの受講率で、意欲の高い人(Z=1)は 69% が受講、低い人(Z=0)は 31% しか受けません(=処置の自己選択、$Z \to D$)。右は訓練を受けていない人だけの収入分布で、それでも Z=1 は平均が高い($Z \to Y$)。この2本の矢印が重なると、「受講者はもともと稼ぐ人が多い」ぶん素朴な比較が水増しされます。

この交絡を、3流派はそれぞれの言葉で調整します。ただしやっている手順はどれも共通です。$Z$ で分け、層内で効果を測り、$P(Z)$ で加重平均する。$P(Z)$ は「その層に全体の何割の人がいるか」の比率で、それを重みにして層ごとの効果を足し合わせる、という意味です。

fig2_method.png

図は左から右へ、①全体をそのまま比べると交絡で +81、②同じ $Z$ の中で分けると層内には交絡がなく、Z=0 層で +50、Z=1 層で +52、③それを層の大きさで加重平均して +50.9、という3ステップです。下段は、この同じ手順を3流派がそれぞれ層別化・バックドア調整式・回帰と呼び分けていることを示しています。

言葉が違うだけで計算は同じ、をコードで確かめます。

# ① Rubin流:Zで層別化 → 層内の効果を P(Z) で加重平均
strata = [(df[(df.D==1)&(df.Z==z)].Y.mean() - df[(df.D==0)&(df.Z==z)].Y.mean(),
           (df.Z==z).mean()) for z in (0, 1)]
rubin = sum(diff * w for diff, w in strata)

# ② Pearl流:バックドア調整式 Σ_z [E(Y|D=1,z) - E(Y|D=0,z)] P(z)  ← ①と同じ計算
pearl = rubin

# ③ 計量経済流:Zを入れた回帰 Y ~ D + Z の D の係数
econ = smf.ols("Y ~ D + Z", data=df).fit().params["D"]

print("① Rubin  層別化     = %.1f" % rubin)
print("② Pearl  バックドア = %.1f" % pearl)
print("③ 計量経済 回帰     = %.1f" % econ)
① Rubin  層別化     = 50.9
② Pearl  バックドア = 50.9
③ 計量経済 回帰     = 50.9

3流派とも 50.9。真の効果 50 にぴたりと戻りました。 しかも①と②は書き方が違うだけでまったく同じ計算(Pearlのバックドア調整式は、Rubinの層別化加重平均そのもの)。③の回帰も、線形なら同じ調整を別の道具でやっているだけです。

fig3_three_schools.png

左は交絡の構造。同じスキル層(Z)の中だけを見れば、訓練の効果はどちらの層でもほぼ+50。ところが処置群(受けた人)は高スキル層に偏っているので、層を無視して全体を平均すると素朴な81に膨らみます。右がその答え合わせで、素朴だけが飛び出し、3流派の調整はすべて赤い真値ライン(50)に着地しています。

「同じ因果、3つの言葉」。これがDay 3のいちばん伝えたいことです。


つまづき・誤解しやすい点

  • 「流派を1つ選ぶ」必要はない。 むしろ実務では混ぜて使うのが普通です。「Pearlで何を調整すべきかを決め → Rubin/回帰で推定する」が定番の流れ。今日の例で3つが一致したのは偶然ではなく、正しく識別できていれば道具が違っても答えは揃うからです。
  • 一致するのは「正しい $Z$ で調整したとき」だけ。 調整する変数を間違えれば(交絡を見落とす/逆に合流点を入れる=Day 1の罠3)、3流派そろって同じように間違えます。「何で調整すべきか」は道具では決まらない。だからPearlのDAG(Day 10–11)が要ります。
  • 回帰=因果、ではない。 「$Y \sim D + Z$ の係数」が因果になるのは、$Z$ が交絡を塞いでいるという仮定があってこそ。回帰は道具であって、正しさを保証する魔法ではありません(Day 16で深掘り)。

GISデータ実務での使い方

私の本業は衛星データ×水道インフラ×AIで、扱うのはほぼ観察データです(施策をランダムに割り当てられる場面は稀)。ここで3流派の地図が指針になります。

  • まずPearlで地図を描く。 「配管更新(D)→ 漏水率(Y)」を見たいとき、立地・築年・人口密度など何が交絡かをDAGで書き出し、調整集合を決める。ここを飛ばして回帰に共変量を放り込むと、Day 1の罠3(合流点で調整)を踏みます。
  • 推定はRubin/回帰で。 調整集合が決まれば、傾向スコアでも回帰でも、やることは「正しい $Z$ で条件付ける」。空間データでは空間交絡(隣接地域が似た背景を共有)が最大の $Z$ で、Day 28で本気で扱います。
  • RCTできない現場は計量経済の出番。 施策の導入時期がバラつくなら差分の差分(DID, Day 18)、閾値で配分されるなら回帰不連続(RDD, Day 20)。「擬似ランダムはどこにあるか」を探す計量経済の眼が、観察データから因果を取り出します。

「どの流派か」ではなく「この問題はどの入り口が効くか」。3つの言葉を持っておくと、現場で手が増えます。


参考(本棚)

  • Imbens & Rubin『Causal Inference for Statistics, Social, and Biomedical Sciences』第1章。潜在的結果・割付メカニズム(Rubin流の下敷き)
  • Pearl, Glymour & Jewell『入門 統計的因果推論』。DAG・do演算子・バックドア基準(Pearl流の下敷き)
  • 林岳彦『はじめての統計的因果推論』/安井翔太『効果検証入門』。3流派を橋渡しする和書
  • 伊藤公一朗『データ分析の力』。準実験デザイン(IV・DID・RDD)を数式なしで

次回予告(Day 4)

いよいよRubin流の本丸に入ります。テーマは RCT(無作為化比較試験)はなぜ因果推論の黄金律なのか。Day 3で「正しい $Z$ で調整すれば因果が取れる」と分かりましたが、RCTはそもそも交絡が生まれないように割付を設計します。「調整いらずで因果が測れる」魔法の正体を、A/Bテストのシミュレーションで確かめます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?