🎓 レベル:発展 | 重要度:B(標準)
📎 前提:バックドア基準と識別 | 構造的因果モデルとdo演算子 | 関連:過剰調整とMバイアス
要点(BLUF)
- 媒介分析は、処置 の効果を「媒介変数 を通る間接効果」と「 を通らない直接効果」に分けます。総効果 = 直接効果 + 間接効果。
- 識別:間接・直接効果は反事実で定義されます(自然直接効果 NDE・自然間接効果 NIE、反事実とPearlの因果の階梯)。識別には、・・ の交絡がないこと、加えて** に影響される 交絡がない**ことが要ります。
- 落とし穴:媒介 を「交絡だと思って」回帰に入れると、 を通る経路が塞がれ、間接効果が消えて直接効果しか出ません。総効果を過小評価するこの過剰調整を、真値を仕込んだ擬似データで数値化します。
1. 媒介の構造:通る道と通らない道
処置 が結果 に効くとき、その効き方には2通りの経路があり得ます。
flowchart LR
X["処置 X"] --> M["媒介 M"]
M --> Y["結果 Y"]
X --> Y
- 間接効果(媒介経路) : が を動かし、 が を動かす。例:運動 が体重 を下げ、体重が血圧 を下げる。
- 直接効果 : を経由しない効き方。例:運動が体重と無関係に血圧へ及ぼす分。
は の子孫であり、 は因果ダイアグラムとd分離の鎖(媒介) です。ここで決定的に重要なのは、 は交絡ではないこと。交絡は の親()でしたが、 は の子です。にもかかわらず「関係しそうな変数だから」と を調整集合に入れると、本来見たい効果の通り道を塞いでしまいます(第4節)。
2. 効果の分解:自然直接効果と自然間接効果
効果を厳密に定義するため、入れ子の反事実を使います(潜在結果モデル・反事実とPearlの因果の階梯)。
- : にしたときに が取る値(媒介の潜在値)
- :・ にしたときの結果
- : を に、しかし は「 だったときの値」に固定したときの結果(入れ子)
これを使うと、総効果(TE) は
と書け、次のように分解できます。自然直接効果(NDE) は、媒介を「処置しなかったときの値 」に固定したまま だけを に変えた効果。
自然間接効果(NIE) は、 に固定したまま、媒介を から へ変えた効果(=媒介が動いたことによる分)。
すると2つを足すと中間項 が打ち消し合い、きれいに総効果に戻ります。
線形・交互作用なしの場合、これは古典的な「係数の積」になります。、 とすると、
直接効果は の係数 、間接効果は「 の係数 」×「 の係数 」。Pearl はこの積が、線形・無交互作用のもとで NIE に一致することを示しました(Baron–Kenny 法の因果的な裏づけ)。
3. 識別の仮定:媒介分析は交絡に二重に弱い
NDE・NIE が観測データから識別できるには、逐次的無交絡(sequential ignorability) が要ります。直観的には4つです。
- の交絡がない(処置の割り当てが結果に対して交換可能)
- の交絡がない(処置が媒介に対して交換可能)
- の交絡がない(媒介が結果に対して、 と共変量で条件づけたうえで交換可能)
- に影響される 交絡がない(媒介と結果の共通原因が、それ自身 の下流にない)
総効果だけなら をランダム化すれば 1・2 は満たせますが、3・4 はランダム化でも保証されません。 は割り当てられた変数ではないからです。媒介分析が「交絡に二重に弱い」と言われるゆえんで、特に 4(処置後交絡)が崩れると NDE/NIE は非パラメトリックには識別できなくなります。本ノートのシミュレーションは をランダム化し、 交絡もゼロに作って 1〜4 を満たしています。
4. 擬似データで分解し、過剰調整を再現する
真の直接効果 ・間接効果 ・総効果 を仕込みます。 は無作為割り当てです。総効果・直接効果を回帰で取り出し、間接効果を「係数の積」と「総効果 − 直接効果」の2通りで回収します。最後に、 を調整すると何が起きるかを見ます。
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
# === X→M→Y と X→Y を仕込み、総効果を直接効果+間接効果に分解する ===
rng = np.random.default_rng(604)
n = 20000
# 処置は無作為割り当て(X-Y, X-M に交絡なし → 総効果が識別できる)
X = rng.binomial(1, 0.5, size=n)
# 媒介 M = 0.5 + a_XM*X + ノイズ
a_XM = 1.5
M = 0.5 + a_XM * X + rng.normal(0.0, 1.0, size=n)
# 結果 Y = 1 + 直接効果*X + gamma*M + ノイズ
direct_true = 1.0 # X→Y の直接効果(NDE)
gamma = 0.8 # M→Y
Y = 1.0 + direct_true * X + gamma * M + rng.normal(0.0, 1.0, size=n)
indirect_true = a_XM * gamma # 間接効果(NIE) = 1.5*0.8 = 1.2
total_true = direct_true + indirect_true # 総効果 = 2.2
df = pd.DataFrame({"Y": Y, "X": X, "M": M})
# (A) 総効果: Y~X のみ(Mを入れない)。Xが無作為なので E[Y|X=1]-E[Y|X=0]=総効果
total_est = smf.ols("Y ~ X", data=df).fit().params["X"]
# (B) 直接効果: Y~X+M でMを調整したときのX係数(=媒介を固定した分の効果)
fit_full = smf.ols("Y ~ X + M", data=df).fit()
direct_est = fit_full.params["X"]
gamma_est = fit_full.params["M"]
# (C) 間接効果: 係数の積 a_XM*gamma、または 総効果-直接効果
aXM_est = smf.ols("M ~ X", data=df).fit().params["X"]
indirect_prod = aXM_est * gamma_est
indirect_diff = total_est - direct_est
print("真値 : 総効果={:.2f} 直接効果={:.2f} 間接効果={:.2f}".format(
total_true, direct_true, indirect_true))
print("推定 : 総効果={:.2f} 直接効果={:.2f}".format(total_est, direct_est))
print("間接効果: 係数の積={:.2f} 総効果-直接効果={:.2f}".format(indirect_prod, indirect_diff))
print("-- 過剰調整の罠 --")
print("Mを「交絡だと思って」調整したY~X+MのX係数={:.2f}".format(direct_est))
print(" → これは直接効果(1.0)。間接効果1.2が消え、総効果2.2を1.0と誤る")
実行すると次のように印字されます。
真値 : 総効果=2.20 直接効果=1.00 間接効果=1.20
推定 : 総効果=2.23 直接効果=1.03
間接効果: 係数の積=1.20 総効果-直接効果=1.20
-- 過剰調整の罠 --
Mを「交絡だと思って」調整したY~X+MのX係数=1.03
→ これは直接効果(1.0)。間接効果1.2が消え、総効果2.2を1.0と誤る
出力の意味:総効果 ・直接効果 がそれぞれ真値 ・ に一致し、間接効果は「係数の積 」「総効果 − 直接効果 」のどちらでも真値 を回収しました(線形・無交互作用なので2法が一致)。決定的なのは最後のブロックです。 を回帰に入れた瞬間、 の係数は から へ落ちます。これは過誤ではなく、 の経路を で条件づけて塞いだ結果で、残った は直接効果です。もし を「念のため入れた共変量」と誤解すれば、本当の総効果 を と過小評価してしまいます。「変数を入れるほど正確になる」という素朴な発想が、媒介の前では逆に働くのです。
5. 仮定の直観的意味:なぜ調整で間接効果が消えるのか
因果ダイアグラムとd分離の d分離で説明できます。 は鎖で、中継点 を条件づけると経路は遮断されます。総効果は「(間接)」と「(直接)」の2経路の和でしたが、 を調整すると間接の経路が閉じ、直接経路しか に伝わらなくなる——だから の係数は直接効果に縮みます。
ここから実務の指針が出ます。何を見たいかで を入れるか決める。
- 総効果( が最終的に をどれだけ動かすか)を知りたいなら、 を入れてはいけない。媒介は調整対象ではありません。
- 直接効果( を経由しない分)を知りたいなら、 を入れる(ただし第3節の識別仮定、特に 交絡なしが要る)。
交絡 ( の親)は「入れるべき」、媒介 ( の子)は「総効果には入れてはいけない」。親か子かで真逆であり、両者を「関係する変数」と一括りにするのが過剰調整の温床です(過剰調整とMバイアス)。
⚠️ よくある誤解・落とし穴
- 媒介を交絡と混同しない。「 と相関するから」と を入れると総効果が壊れます。調整してよいのはバックドア基準を満たす集合( の非子孫)だけ(バックドア基準と識別)。
- 媒介を調整すると合流点バイアスも起こりうる。 と に未観測の共通原因 があると、 は の合流点になり、 を条件づけると と に偽の相関が生まれます(因果ダイアグラムとd分離のコライダー)。直接効果の推定はこの 交絡に非常に弱く、第3節の仮定3・4が崩れると一致しません(過剰調整とMバイアス)。
- NDE/NIE は反事実依存。入れ子の反事実 は観測できない量で、識別には逐次的無交絡という強い仮定が要ります。係数の積が NIE に一致するのも線形・無交互作用のときだけで、交互作用があれば「制御直接効果 CDE」と「自然直接効果 NDE」は分かれます。
- 媒介の向きを取り違えない。 か ( が実は結果の下流)かはデータだけでは決まらず、分野知識と時間順序で固定します(向きの探索は因果探索の概観)。
関連ノート
- 因果:バックドア基準と識別(調整すべきは親、媒介=子は別)/因果ダイアグラムとd分離(鎖=媒介、合流点=コライダー)/構造的因果モデルとdo演算子(NDE/NIE を do と反事実で定義)/反事実とPearlの因果の階梯(入れ子反事実)/過剰調整とMバイアス(過剰調整の一般論)/潜在結果モデル(潜在結果と媒介の潜在値)
- 統計:構造方程式モデル・パス解析(パス解析と係数の積)/重回帰分析(回帰係数の意味)
- 第6章 ベイズと構造的因果 目次