Skip to content

StatsPai - 因果推断革命:从反事实思想到AI时代

"The credibility revolution has changed how we think about evidence."— Joshua Angrist, 2021 Nobel Laureate in Economics

PythonLicenseCausal InferenceAI Ready


致学习者的一封信

我们为什么创建 StatsPai?

亲爱的学习者

本书系统梳理并实践了以 Joshua Angrist(MIT,2021年诺贝尔经济学奖得主)为代表的 **"可信性革命"核心理念,深入阐释反事实框架(Counterfactual Framework)**在因果推断中的基石地位。教材内容融合了当代顶尖学者的最新研究成果,包括:

  • Susan Athey(斯坦福大学):机器学习与因果推断、Causal Forest
  • Guido Imbens(斯坦福大学,2021年诺贝尔经济学奖得主):工具变量、LATE框架
  • Esther Duflo(MIT,2019年诺贝尔经济学奖得主):随机对照试验(RCT)
  • David Card(UC Berkeley,2021年诺贝尔经济学奖得主):自然实验方法
  • Judea Pearl(UCLA,2011年图灵奖得主):因果图与结构因果模型

通过Python代码实现,本书将前沿理论与工程实践深度结合,助力读者掌握AI时代的因果推断能力。

在过去的30年里,因果推断经历了一场静悄悄的革命——我们称之为 "可信性革命"(Credibility Revolution)。这场革命改变了:

  • 经济学研究:从理论推导到实证识别
  • 政策评估:从相关性到因果性
  • 商业决策:从A/B测试到个性化因果推断
  • AI与机器学习:从预测到干预

核心洞察

相关性 ≠ 因果性

我们不仅要知道"会怎样"(预测),更要理解"为什么"(因果)

这就是反事实思想(Counterfactual Thinking)的力量:

  • :个体 接受处理后的结果
  • :同一个体不接受处理的结果(反事实

根本问题:我们只能观察到两者之一!

解决方案

  • RCT(随机对照试验):通过随机化构建反事实
  • 准自然实验(DID、RDD、IV):从观察数据中挖掘因果证据
  • 机器学习+因果推断(Causal Forest):估计异质性处理效应

可信性革命的三次浪潮

第一次浪潮(1990s):自然实验时代

代表人物:Joshua Angrist, Alan Krueger, David Card

核心贡献

  • 工具变量(IV):利用外生变异识别因果
  • 断点回归(RDD):利用阈值的不连续性

经典案例

  • Angrist & Krueger (1991):出生季节作为IV研究教育回报率
  • Card & Krueger (1994):最低工资与就业(DID)

第二次浪潮(2000s):实验经济学兴起

代表人物:Esther Duflo, Abhijit Banerjee

核心贡献

  • 田野实验(Field Experiments):在发展中国家开展大规模RCT
  • 政策评估:从理论到证据驱动

经典案例

  • Progresa/Oportunidades(墨西哥条件现金转移项目)
  • 肯尼亚免费蚊帐分发实验

第三次浪潮(2010s-现在):机器学习+因果推断

代表人物:Susan Athey, Guido Imbens, Stefan Wager

核心贡献

  • Causal Forest:估计条件平均处理效应(CATE)
  • Double Machine Learning(DML):高维数据的因果推断
  • 个性化决策:从平均效应到异质性效应

技术前沿

  • 因果AI:LLM + 因果推断
  • 反事实推理:大模型的因果能力
  • 科研助手:GPT-4辅助因果分析

为什么选择 Python?传统工具的范式转移

从 Stata/R 到 Python:科研工具的代际变迁

StataRPython
诞生年代198519931991
定位计量经济学专用统计学专用通用编程语言
因果推断⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
机器学习⭐⭐⭐⭐⭐⭐⭐⭐⭐
深度学习⭐⭐⭐⭐⭐⭐⭐
LLM集成⭐⭐⭐⭐⭐
工业界采用5%15%80%
成本$1,200+/年免费免费

Python 的独特优势:一站式因果推断平台

python
# 1. 数据处理(pandas)
data = pd.read_csv('experiment.csv')
data_clean = data.dropna()

# 2. 传统计量(statsmodels)
import statsmodels.api as sm
did_model = sm.OLS(y, X).fit(cov_type='cluster', cov_kwds={'groups': state_id})

# 3. 机器学习因果推断(econml, causalml)
from econml.dml import CausalForestDML
cf_model = CausalForestDML(model_y=RandomForestRegressor())
cf_model.fit(Y, T, X=X)
cate = cf_model.effect(X_test)

# 4. 因果图(DoWhy)
from dowhy import CausalModel
model = CausalModel(data, treatment='T', outcome='Y')
identified = model.identify_effect()
estimate = model.estimate_effect(identified)

# 5. LLM辅助分析(OpenAI API)
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
    model="gpt-5",
    messages=[{"role": "user", "content": f"解释这个DID结果:{did_model.summary()}"}]
)

关键对比

任务Stata命令R代码Python代码
DID回归xtreg y treat post i.year, fe cluster(state)`feols(y ~ treat:postyear, cluster='state')`
Causal Forest不支持grf::causal_forest(X, Y, W)econml.grf.CausalForest().fit(X, T, Y)
LLM集成不支持有限支持完整生态

AI时代的因果推断:大模型如何改变科研

1. GPT-5 作为因果推断助手

实际应用

python
# 场景:让GPT-5帮你设计DID策略
prompt = f"""
我想研究"远程办公政策对员工生产力的影响"。
数据:2019-2023年公司员工级面板数据
处理组:2020年3月后强制远程的公司
对照组:没有远程政策的公司

问题:
1. 这适合用DID吗?需要什么假设?
2. 如何检验平行趋势?
3. Python代码怎么写?
"""

response = openai.ChatCompletion.create(
    model="gpt-5",
    messages=[{"role": "user", "content": prompt}]
)

GPT-5 的回答(示例)

"这是经典的DID场景。关键假设:

  1. 平行趋势:2020年3月前,处理组和对照组生产力趋势相同
  2. 无预期效应:员工没有提前改变行为

检验平行趋势的Python代码:

python
# Event Study
for t in range(-6, 13):  # 事件前6个月到事件后12个月
    df[f'lead_lag_{t}'] = (df['treat'] == 1) & (df['month_relative'] == t)

formula = 'productivity ~ ' + ' + '.join([f'lead_lag_{t}' for t in range(-6, 13) if t != -1])
model = smf.ols(formula, data=df).fit(cov_type='cluster', cov_kwds={'groups': df['company_id']})
```"

2. Causal AI:下一代因果推断范式

传统因果推断 vs Causal AI

维度传统方法Causal AI
数据需求手工设计特征自动特征学习
模型复杂度线性/简单非线性深度神经网络
异质性手动分组分析自动学习CATE
可解释性中(SHAP, LIME)
应用场景小数据(n<10万)大数据(n>百万)

Python实现(DragonNet):

python
from causalml.inference.nn import DragonNet

# 深度学习因果模型
model = DragonNet(
    n_unit_in=X.shape[1],
    n_unit_out=1,
    n_unit_hidden=200
)

model.fit(X_train, treatment_train, y_train)
cate_pred = model.predict(X_test, treatment=1) - model.predict(X_test, treatment=0)

3. 科研新范式:LLM + 因果推断工作流

传统科研流程(6个月):
├─ 文献综述(1个月)
├─ 数据收集(1个月)
├─ 变量构造(2周)
├─ 模型估计(2周)
├─ 稳健性检验(3周)
└─ 论文撰写(1.5个月)

AI增强流程(2个月):
├─ LLM辅助文献综述(1周)← GPT-5搜索+总结
├─ 自动化数据清洗(3天)← Python自动化
├─ AI建议特征工程(1周)← AutoML
├─ 并行模型估计(2天)← 云计算
├─ 自动稳健性检验(3天)← 模板化代码
└─ AI辅助论文写作(3周)← GPT-5起草+润色

StatsPai 课程体系:三大模块

Part I:基础工具箱(Module 1-6)

目标:掌握Python统计分析的核心技能

Module 1:回归分析与Python应用

  • OLS线性回归:从Mincer方程到多元回归
  • Logit/Probit:二元因变量模型
  • 结果展示:summary_col生成学术级表格
  • 对比:Stata的reg、R的lm()

你将学会

python
# 一行代码运行回归
model = smf.ols('wage ~ education + experience + C(female)', data=df).fit()

# 学术级结果表格
from statsmodels.iolib.summary2 import summary_col
summary_col([model1, model2, model3], stars=True)

Module 2:反事实框架与RCT

  • 潜在结果框架
  • 因果推断的根本问题:我们只能观察到一个结果
  • RCT黄金标准:随机化如何消除选择偏误
  • 平均处理效应:ATE、ATT、LATE的区别

核心公式


Module 3-6:数据处理、统计检验、回归诊断、可视化

  • 数据清洗与变量构造
  • Statsmodels、Scipy、Linearmodels工具库
  • 回归诊断:异方差、多重共线性、内生性
  • 论文级图表制作

Part II:因果识别策略(Module 7-11)

目标:掌握准自然实验方法,从观察数据中挖掘因果证据

Module 7:时间序列与事件研究

  • ARIMA建模
  • 事件研究法(Event Study)
  • 动态效应估计

Module 8:面板数据与固定效应

  • 固定效应(FE):控制不可观测异质性
  • 个体内差分:每个样本作为自己的对照组
  • 双向固定效应(TWFE):控制个体+时间效应

直觉

传统OLS:跨个体比较(有偏,因为个体不同)
固定效应:个体内比较(无偏,同一个体随时间变化)

Python实现

python
from linearmodels import PanelOLS

# 双向固定效应
model = PanelOLS.from_formula(
    'wage ~ experience + EntityEffects + TimeEffects',
    data=panel_data
).fit(cov_type='clustered', cluster_entity=True)

Module 9:双重差分(DID)

核心思想差分之差

关键假设

  • 平行趋势:没有政策干预,两组趋势相同
  • 无预期效应:政策实施前无行为改变
  • SUTVA:无溢出效应

经典案例

  • Card & Krueger (1994):新泽西最低工资
  • Bertrand & Mullainathan (2004):性别歧视(简历实验)

Python完整流程

python
# 1. 数据准备
df['post'] = (df['year'] >= 2020).astype(int)
df['treated'] = df['state'].isin(['CA', 'NY']).astype(int)
df['did'] = df['post'] * df['treated']

# 2. DID回归
formula = 'employment ~ treated + post + did + C(year) + C(state)'
model = smf.ols(formula, data=df).fit(cov_type='cluster', cov_kwds={'groups': df['state']})

# 3. 事件研究图(平行趋势检验)
from did_event_study import plot_event_study
plot_event_study(df, outcome='employment', time_var='year', treat_var='treated')

前沿进展

  • Staggered DID:政策实施时间不同
  • Callaway & Sant'Anna (2021):异质性稳健估计
  • Difference-in-Differences with Multiple Time Periods

Module 10:工具变量(IV)与两阶段最小二乘(2SLS)

问题:内生性(Endogeneity)

  • 遗漏变量偏误
  • 反向因果
  • 测量误差

解决方案:找到工具变量

工具变量的两个条件

  1. 相关性(工具与内生变量相关)
  2. 排他性(工具只通过 影响

2SLS估计

python
from linearmodels.iv import IV2SLS

# 第一阶段:X ~ Z
# 第二阶段:Y ~ X_hat

model = IV2SLS.from_formula(
    'wage ~ 1 + [education ~ college_distance]',
    data=df
).fit(cov_type='robust')

经典工具变量

  • Angrist & Krueger (1991):出生季节 → 教育年限
  • Card (1995):大学距离 → 教育年限
  • Levitt (1997):选举周期 → 警力

Module 11:断点回归(RDD)

核心思想:利用阈值的不连续性

经典例子

  • Thistlethwaite & Campbell (1960):奖学金对大学入学的影响
  • Lee (2008):当选对政治生涯的影响
  • Cellini et al. (2010):学校建设债券投票

Python实现(rdrobust包):

python
from rdd import rdd

# RDD估计
result = rdd.rdd(
    data=df,
    cutoff=0,
    y='outcome',
    x='running_var',
    kernel='triangular',
    bw='mserd'  # 最优带宽选择
)

# RDD图
rdd.plot_rdd(df, cutoff=0, y='outcome', x='running_var')

Part III:机器学习与因果推断(Module 12-13)

目标:掌握前沿方法,估计异质性处理效应

Module 12:Causal Forest与异质性处理效应

核心问题

  • ATE只告诉我们平均效应
  • 但不同个体的处理效应可能完全不同
  • 如何估计条件平均处理效应(CATE)

Causal Forest算法(Wager & Athey, 2018):

  1. Bootstrap抽样
  2. 诚实分割(Honest Splitting):避免过拟合
  3. 构建多棵因果树
  4. 平均预测CATE

Python实现

python
from econml.grf import CausalForest

# 训练Causal Forest
cf = CausalForest(n_estimators=3000, min_samples_leaf=10)
cf.fit(X, T, Y)

# 预测CATE
cate = cf.predict(X_test)
cate_interval = cf.predict_interval(X_test, alpha=0.05)

# 识别高受益者
high_benefit = X_test[cate > cate.quantile(0.8)]

应用场景

  • 医疗:哪些患者最适合某种治疗?
  • 教育:哪些学生从在线课程中受益最多?
  • 营销:哪些客户对广告最敏感?
  • 政策:哪些地区应该优先推行政策?

前沿方法

  • Double Machine Learning(DML):Chernozhukov et al. (2018)
  • Generalized Random Forests(GRF):Athey et al. (2019)
  • DragonNet:深度学习+因果推断

Module 13:前沿专题

  • 合成控制法(Synthetic Control)
  • 中介分析(Mediation Analysis)
  • Meta-分析与因果推断
  • 因果发现(Causal Discovery)

学习路径建议

路径1:学术研究者(12-16周)

Week 1-2: Module 1-2(回归基础+反事实框架)

Week 3-4: Module 3-6(数据处理+统计检验)

Week 5-6: Module 8-9(面板数据+DID)← 重点!

Week 7-8: Module 10-11(IV+RDD)

Week 9-10: Module 12(Causal Forest)

Week 11-12: 完成实证项目

推荐项目

  • 研究最低工资对就业的影响(DID)
  • 教育回报率的异质性(Causal Forest)
  • 政策评估案例复现

路径2:数据科学家(6-8周,侧重应用)

Week 1: Module 1(回归快速入门)

Week 2: Module 2(因果思维)

Week 3-4: Module 9(DID)+ Module 12(Causal Forest)

Week 5-6: A/B测试与因果推断

Week 7-8: 实际业务问题建模

推荐项目

  • 营销活动效果评估(RCT)
  • 用户留存因果分析(Causal Forest)

路径3:AI/ML工程师(4-6周,Python深度集成)

Week 1: Module 1-2(快速掌握因果框架)

Week 2-3: Module 12(Causal Forest + DML)

Week 4: GPT-5 + 因果推断集成

Week 5-6: 构建Causal AI应用

️ 核心工具生态

Python因果推断库全景

开发者核心功能Github Stars
statsmodels社区传统计量模型10k+
linearmodelsKevin Sheppard面板数据、IV500+
econmlMicrosoftCausal ML (DML, Causal Forest)3k+
causalmlUberMeta-learners, Uplift5k+
DoWhyMicrosoft因果图推断7k+
PyMC社区贝叶斯因果推断8k+

安装全套工具

bash
# 基础工具
pip install pandas numpy scipy matplotlib seaborn

# 计量经济学
pip install statsmodels linearmodels

# 机器学习因果推断
pip install econml causalml dowhy

# 贝叶斯推断
pip install pymc arviz

# LLM集成
pip install openai anthropic

为什么StatsPai独一无二?

1. 顶尖学者的智慧结晶

本课程不是单一视角,而是汇集了:

  • Joshua Angrist(MIT):IV、DID、准自然实验
  • Susan Athey(Stanford):Causal Forest、机器学习+因果
  • Guido Imbens(Stanford):潜在结果框架、LATE
  • Esther Duflo(MIT):田野实验、政策评估
  • David Card(Berkeley):最低工资、教育回报率

2. 理论严谨 + 代码实战

每个概念都有

  • 数学推导(理解原理)
  • Python代码(动手实现)
  • 真实案例(掌握应用)
  • 对比Stata/R(快速迁移)

3. AI时代的前瞻性

  • GPT-5辅助代码生成
  • LLM集成实例
  • Causal AI前沿方法
  • 科研新范式探索

4. 从零到发表

完整科研流程

问题提出 → 文献综述 → 数据收集 → 变量构造 →
识别策略 → 模型估计 → 稳健性检验 → 结果呈现 → 论文撰写

每个环节都有Python实战代码


推荐阅读(顶尖学者的经典著作)

入门必读

  1. Angrist & Pischke (2009). Mostly Harmless Econometrics

    • 最实用的因果推断教材
    • 通俗易懂,案例丰富
    • 实证研究者的圣经
  2. Angrist & Pischke (2015). Mastering 'Metrics

    • MHE的简化版
    • 适合本科生和初学者

理论进阶

  1. Imbens & Rubin (2015). Causal Inference for Statistics, Social, and Biomedical Sciences

    • 潜在结果框架的权威教材
    • 数学严谨但清晰
  2. Pearl (2009). Causality: Models, Reasoning, and Inference

    • 因果图(DAG)视角
    • 图灵奖得主的经典之作

前沿方法

  1. Athey & Imbens (2019). "Machine Learning Methods for Estimating Heterogeneous Causal Effects". Statistical Science

  2. Wager & Athey (2018). "Estimation and Inference of Heterogeneous Treatment Effects using Random Forests". JASA


在线课程

  • Mixtape Sessions(Scott Cunningham)
  • Causal Inference Bootcamp(Stanford)
  • MIT 14.32(Esther Duflo & Sara Fisher-Ellison)

致谢

本课程的创建离不开:

  • 诺贝尔经济学奖得主的开创性研究
  • 开源社区的无私贡献(statsmodels, econml, causalml)
  • 所有学习者的反馈和建议

特别感谢:

  • MIT经济系、斯坦福经济系的学术支持
  • Microsoft Research、Uber AI的工程贡献

开始你的因果推断之旅

"In God we trust. All others must bring data."— W. Edwards Deming

准备好了吗?

从相关性到因果性,从描述到解释,从预测到干预——

让我们一起开启可信性革命的新篇章!


联系我们


StatsPai - 从反事实到因果AI,引领科研新时代


版权声明

CC BY-NC-SA 4.0

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

允许

  • 学习:自由阅读和学习本书内容
  • 分享:复制、分发本书内容
  • 改编:基于本书进行修改和创作

禁止

  • 商业使用:不得将本书用于任何商业目的

要求

  • 署名:必须给出作者署名和许可协议链接
  • 相同方式共享:若修改本书,必须采用相同许可协议

具体说明

  • 作者:王几行XING
  • 机构:斯坦福大学 Freeman Spogli Institute (FSI)
  • 版权所有:© 2024-2025 王几行XING
  • 原始链接https://learnpy.online/StatsPai/

商业授权咨询

如需商业使用(如出版、培训、企业内部教学等),请联系作者获取商业授权。


Built with ️ for the causal inference community


快速导航

Part I - 基础工具

Part II - 因果识别

Part III - 前沿方法


用Python掌握因果推断,用证据改变世界!

基于 MIT 许可证发布。内容版权归作者所有。