mcpField
C
causal-inference-mixtape

causal-inference-mixtape

github.com/brycewang-stanfordデータ・データベース4.8k67 回インストール2 日前に更新
リポジトリ

causal-inference-mixtape について

Scott Cunninghamの『Causal Inference: The Mixtape』を基にした、実践者向けの因果推論スキルです。10種類の識別戦略について、Python、R、Stataのコード例と手法選択・頑健性検証の指針を提供します。

主な機能

  1. 0110種類の識別戦略のテンプレート
  2. 02Python・R・Stataのコード例
  3. 03言語間の手法比較
  4. 04手法選択のガイダンス
  5. 05手法別の頑健性検証
  6. 06再利用可能な実装・検証プロンプト

活用シーン

  1. 01使用言語に応じた因果デザインの実装
  2. 02言語間で等価な推定手法の比較
  3. 03DiD・IV・RDD分析の検証項目の選定
  4. 04研究データに合わせたテンプレートの調整

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/brycewang-stanford/auto-empirical-research-skills --skill causal-inference-mixtape

インストール後、Claude Code で/causal-inference-mixtapeを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README-original.md
prompts/
01-implement-method.md
02-robustness-checks.md
references/
method-patterns.md
r-stata-comparison.md

詳細

Causal Inference: The Mixtape — コードスキル

Scott Cunningham の Causal Inference: The Mixtape リポジトリを基にした、実務者向けの因果推論スキルです。すぐに実行できる Python、R、Stata のコードテンプレートを使って、10 種類の識別戦略を扱います。


対応する手法

手法PythonRStata参照
OLS / 回帰statsmodelsestimatrreg/reghdfereferences/method-patterns.md §1
差の差法statsmodels + C()lfe/fixestxtreg/reghdfereferences/method-patterns.md §2
イベントスタディ(動学的 DiD)手動のリード/ラグestimatrreghdfereferences/method-patterns.md §3
段階的 DiD / TWFEstatsmodelsbacondecompbacondecompreferences/method-patterns.md §4
回帰不連続デザインstatsmodels 多項式rdrobustrdplot/rdrobustreferences/method-patterns.md §5
操作変数法linearmodels IV2SLSAER/ivregivregress 2slsreferences/method-patterns.md §6
合成コントロール法rpy2 → R SynthSynth + SCtoolssynthreferences/method-patterns.md §7
マッチング / PSM / IPW手動の logit + 重みMatchIt + Zeligteffects/cemreferences/method-patterns.md §8
DAG / コライダーバイアスdagitty(概念的)dagitty/ggdag—references/method-patterns.md §9
ランダム化推論置換ループri2ritestreferences/method-patterns.md §10

基本的なワークフロー

因果推論手法を実装する
  1. 上の表から手法を特定します
  2. references/method-patterns.md から適切なテンプレートを読み込みます
  3. 変数名、固定効果、クラスター化をユーザーのデータに合わせて調整します
  4. ロバスト性チェックを追加します(DiD では平行トレンド、RDD では McCrary 検定、IV では第 1 段階の F 検定)
適切な言語を選択する
シナリオ推奨
ML パイプラインとの統合Python(statsmodels + linearmodels)
合成コントロール法R(Synth パッケージ)または Stata(synth)— Python には成熟した実装がありません
Bacon 分解R(bacondecomp)または Stata — Python に相当するものはありません
論文掲載用の表Stata(outreg2/esttab)または R(stargazer/modelsummary)
粗化完全マッチングStata(cem)または R(MatchIt)— Python に相当するものはありません
素早いプロトタイピングstatsmodels を使った Python
言語間の対応関係
タスクPythonRStata
ロバスト標準誤差を用いた OLSsmf.ols().fit(cov_type='HC1')lm_robust()reg y x, robust
クラスター標準誤差fit(cov_type='cluster', cov_kwds={'groups': g})`felm(y ~ x0
双方向固定効果数式中の C(id) + C(time)`felm(y ~ xid + time)`
IV / 2SLSIV2SLS.from_formula('y ~ 1 + exog + [endog ~ inst]')`ivreg(y ~ exoginst)`
DiDC(treat)*C(post)数式中の treat:postdid_multiplegt または交互作用

主要な Python パターン

クラスター頑健標準誤差を用いた DiD
import statsmodels.formula.api as smf

model = smf.ols('y ~ C(treated)*C(post) + controls', data=df)
results = model.fit(cov_type='cluster', cov_kwds={'groups': df['firm_id']})
イベントスタディ(リード/ラグ)
# Create relative time dummies
for k in range(-4, 5):
    col = f'rel_{k}' if k >= 0 else f'rel_m{abs(k)}'
    df[col] = (df['relative_time'] == k).astype(int)

# Drop t=-1 as reference
formula = 'y ~ ' + ' + '.join([c for c in rel_cols if c != 'rel_m1']) + ' + C(id) + C(year)'
IV / 2SLS
from linearmodels.iv import IV2SLS

model = IV2SLS.from_formula('y ~ 1 + exog + [endog ~ instrument]', data=df)
results = model.fit(cov_type='clustered', clusters=df['cluster_var'])

ロバスト性チェックのパターン

手法必須のチェック
DiD平行トレンド(イベントスタディのプロット)、プラセボの処置時点
RDDMcCrary 密度検定、バンド幅のロバスト性(IK 最適バンド幅の半分/2 倍)、多項式のロバスト性
IV第 1 段階の F > 10、除外制約の論拠、過剰識別検定
合成コントロール法処置前の RMSPE、プラセボ分布、1 単位ずつ除外した分析
マッチング共変量バランス表、キャリパー感度分析

よくある落とし穴

  1. 段階的処置におけるTWFE — 標準的な二元固定効果は、処置のタイミングにばらつきがある場合、バイアスが生じます。Bacon 分解または Sun & Abraham / Callaway & Sant'Anna 推定量を使用してください。
  2. 処置群が多数ある場合の合成コントロール法 — Synth パッケージは、処置群が1つの場合に対応しています。複数ある場合は、拡張合成コントロール法またはスタック法を使用してください。
  3. McCrary 検定を行わないRDD — 推定の前に、必ずカットオフでの操作の有無を検定してください。
  4. IVの弱い操作変数 — 第1段階のF統計量を報告してください。10を下回る場合は、弱い操作変数によるバイアスが示唆されます。
  5. Python版Synthの不足 — 成熟したPython版Synthパッケージはありません。rpy2を使ってPythonからRのSynthを呼び出してください。

追加リソース

リファレンスファイル
  • references/method-patterns.md — 10種類すべての手法について、完全な例を含む詳細なコードテンプレート
  • references/r-stata-comparison.md — 言語間のパッケージ比較と、手法の対応範囲に関するギャップ
プロンプトファイル
  • prompts/01-implement-method.md — あらゆる因果推論手法の実装に使えるコピー&ペースト用プロンプト
  • prompts/02-robustness-checks.md — 頑健性検定のコード生成に使えるコピー&ペースト用プロンプト

コメント