論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
逆因果関係
Reverse Causation
因果推論
別称: 逆因果 / 逆向きの因果

🔖 キーワード索引

因果方向時間順序操作変数ランダム化実験Granger因果DAG選択バイアス観察研究内生性経済学

別名・略称:逆因果 / 逆向きの因果

💡 30秒で分かる結論

逆因果関係(Reverse Causation):原因と結果を取り違える誤り(Y → X なのに X → Y と解釈)。

📍 あなたが今見ているもの

警察を増やしたら犯罪が増えた」というデータがあるとき、 警察が犯罪を起こしているわけではなく、 犯罪が多い地域に警察を増員した のが真実。 これが逆因果。 観察データから因果を語るときの 最重要罠 の 1 つです。

🎨 直感で掴む

逆因果の古典例

観察誤った解釈真の因果方向
警察が多い地域は犯罪が多い警察が犯罪を生む犯罪 → 警察増員
病院に行く人ほど病気が多い病院が病気を作る病気 → 通院
広告を多く打つ商品ほど売れる広告が売上を生む売れている → 広告増(or 双方向)

📐 定義 / 数式

【仮定したい因果と真の因果】
$$\text{研究者の仮定:} \quad X \to Y$$ $$\text{真の因果:} \quad Y \to X$$
どちらも観察された相関で同等に説明できるが、 介入効果は逆になる

🔬 記号・式を言葉で読み解く

時間順序
「原因は結果より時間的に先」が必要条件。 同時計測データではこれが分からない。
操作変数
X に影響するが Y には直接影響しない第3変数。 これを使って因果方向を識別。
ランダム化
X を実験的にランダムに割り当てれば、 Y との関係は X→Y のみ。
DAG
Directed Acyclic Graph。 変数間の因果構造を明示的に描く。
Granger 因果
「X の過去が Y の未来を予測する」。 但し本当の因果とは限らない。

🧮 実データで計算してみる

SSDSE データ例:「医療費の高い県ほど死亡率が高い」

  • 仮定したい因果:医療費 → 死亡率(医療費を増やすと死亡率が上がる)
  • 真の因果(推測):高齢化 → 死亡率 + 高齢化 → 医療費。 共通原因型疑似相関、 または死亡率の高い地域に医療費を投入する逆因果も。
  • 解決策:パネルデータで時間順序を見る、 操作変数を導入、 DAG で構造を明示

🐍 Python 実装

SSDSE-B-2026(47 都道府県・2023 年データ)を題材にした最小コード:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Granger 因果検定で時間方向を確認
import pandas as pd
from statsmodels.tsa.stattools import grangercausalitytests

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)

# 時系列ペアを準備(同一都道府県の複数年データ)
ts = df[['年度', '医療費', '死亡率']].sort_values('年度')
result = grangercausalitytests(ts[['死亡率', '医療費']], maxlag=2)
# p < 0.05 なら「医療費の過去が死亡率を予測する」

⚠️ よくある落とし穴

⚠️ 相関だけで因果方向を断定
X-Y に相関があっても、 方向は分からない。
⚠️ 時系列の見落とし
クロスセクションデータでは時間順序が見えない。 必ずパネルデータも検討。
⚠️ Granger 因果=真の因果と混同
Granger は予測可能性のみ。 共通因子も同じパターンを生む。
⚠️ 自然実験を使わない
政策変更・天災などの「外生ショック」は因果識別の機会。
⚠️ DAG を描かない
因果関係を頭の中だけで考えると見落としが多い。 必ず図示。

🌐 関連手法・この用語を使う論文

📄 2018_H1_daijin — 因果と相関の区別
観察データから因果を語る難しさの実例。