mcpField
C
causal-inference-mixtape

causal-inference-mixtape

github.com/brycewang-stanford数据与数据库4.8k67 次安装2 天前更新
代码仓库

关于 causal-inference-mixtape

基于 Scott Cunningham 的 *Causal Inference: The Mixtape* 构建的因果推断技能,面向实践者。提供 Python、R 和 Stata 的十种识别策略代码模板,并涵盖方法选择与稳健性检验。

主要功能

  1. 01十种识别策略的代码模板
  2. 02Python、R 和 Stata 示例
  3. 03跨语言方法对照
  4. 04方法选择指引
  5. 05按方法整理的稳健性检验
  6. 06可复用的实现与检验提示词

适用场景

  1. 01用首选语言实现因果设计
  2. 02比较不同语言中的等效估计方法
  3. 03为 DiD、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

详细介绍

因果推断:Mixtape — 代码技能

面向实践者的因果推断技能,基于 Scott Cunningham 的 Causal Inference: The Mixtape 仓库构建。涵盖 10 种识别策略,并提供可直接运行的 Python、R 和 Stata 代码模板。


涵盖的方法

方法PythonRStata参考
OLS / 回归statsmodelsestimatrreg/reghdfereferences/method-patterns.md §1
双重差分statsmodels + C()lfe/fixestxtreg/reghdfereferences/method-patterns.md §2
事件研究(动态 DiD)手动设置 lead/lagestimatrreghdfereferences/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 检验第一阶段 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']})
事件研究(Lead/Lag)
# 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 最优带宽的一半/两倍),多项式稳健性
IV第一阶段 F > 10,排除限制论证,过度识别检验
合成控制处理前 RMSPE,安慰剂分布,逐一剔除检验
匹配协变量平衡表,卡钳敏感性

常见误区

  1. 采用错开的处理时点时使用 TWFE — 当处理时点不同时,标准双向固定效应估计会产生偏差。请使用 Bacon 分解或 Sun & Abraham / Callaway & Sant'Anna 估计量。
  2. 有许多处理组单位时使用合成控制法 — Synth 软件包仅支持一个处理组单位。若有多个处理组单位,请使用增强型合成控制法或堆叠方法。
  3. 未进行 McCrary 检验就使用 RDD — 估计前务必检验临界值处是否存在操纵。
  4. IV 弱工具变量 — 报告第一阶段 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 — 可复制粘贴的提示词,用于生成稳健性检验代码

评论

支持 Markdown