2.1 本章介绍(反事实框架与随机对照试验)
因果推断的基石:从潜在结果到黄金标准
为什么这一章至关重要?
在数据科学和经济学研究中,相关性≠因果性 是最容易犯的错误。
经典例子:冰淇淋与溺水
观察到的相关性:
- 冰淇淋销量 ↑ → 溺水事故 ↑
- 相关系数显著(p < 0.01)
错误结论: "冰淇淋导致溺水,应该禁止冰淇淋"
正确分析: 混淆变量:夏季温度
- 夏天 → 冰淇淋销量 ↑
- 夏天 → 游泳人数 ↑ → 溺水 ↑
- 因果路径:温度 → {冰淇淋, 溺水},两者无因果关系
真实案例:最低工资与就业
政策问题:提高最低工资会降低就业率吗?
传统回归的问题:
# 简单回归存在严重内生性问题
model = sm.OLS(employment_rate ~ min_wage).fit()
# 无法区分因果效应与选择偏误问题:
- 提高最低工资的州可能经济更好(逆向因果)
- 失业率高的州可能更倾向于提高最低工资(选择偏误)
- 其他政策同时实施(混淆因素)
反事实框架的解决方案:
- 使用 双重差分(DID)或 RCT 识别因果效应
- 构建反事实对照组
- 消除选择偏误和混淆因素
本章核心内容
第 1 节:潜在结果框架(Potential Outcomes Framework)
核心思想:因果推断的本质是 比较同一个体在不同处理状态下的结果
- Rubin 因果模型(Rubin Causal Model, RCM)
- 潜在结果的定义:Yi(1) vs Yi(0)
- 根本问题:我们永远无法同时观察到两种状态
- 因果效应的定义:τi = Yi(1) - Yi(0)
案例:教育培训的因果效应
个体 i:
- Yi(1) = 参加培训后的收入
- Yi(0) = 不参加培训的收入(反事实)
- 因果效应 τi = Yi(1) - Yi(0)
问题:我们只能观察到一个结果!第 2 节:随机对照试验(RCTs)
为什么 RCT 是黄金标准?
RCT 通过 随机化 解决因果推断的根本问题:
- 消除选择偏误(Selection Bias)
- 平衡混淆变量(Confounder)
- 使处理组和对照组 可比(Comparable)
RCT 的核心机制:
随机分配:Di ~ Bernoulli(0.5)
- Di = 1 → 处理组(Treatment)
- Di = 0 → 对照组(Control)
关键性质:E[Yi(0)|Di=1] = E[Yi(0)|Di=0]
即:如果没有处理,两组的平均结果相同实验设计:
- 完全随机化(Simple Randomization)
- 分层随机化(Stratified Randomization)
- 配对随机化(Matched-Pair Randomization)
- 聚类随机化(Cluster Randomization)
第 3 节:平均处理效应(Average Treatment Effects)
核心概念:
| 效应类型 | 定义 | 适用场景 |
|---|---|---|
| ATE | Average Treatment Effect | 全样本平均因果效应 |
| ATT | Average Treatment Effect on the Treated | 处理组的平均效应 |
| ATU | Average Treatment Effect on the Untreated | 对照组的平均效应 |
| LATE | Local Average Treatment Effect | 依从者的局部效应 |
| CATE | Conditional Average Treatment Effect | 条件平均效应(异质性) |
数学定义:
ATE = E[Yi(1) - Yi(0)]
= E[Yi(1)] - E[Yi(0)]
ATT = E[Yi(1) - Yi(0) | Di = 1]
= E[Yi(1) | Di = 1] - E[Yi(0) | Di = 1]
^^^^^^^^^^^^^^
(反事实,不可观测)RCT 的优势:
- 在 RCT 下:ATE = ATT = ATU
- 简单差分就能无偏估计 ATE
第 4 节:识别策略与有效性
内部有效性(Internal Validity):
- 因果推断在研究样本内是否正确
- 威胁因素:
- 选择偏误(Selection Bias)
- 混淆因素(Confounding)
- 同期效应(Contemporaneous Events)
- 样本流失(Attrition)
外部有效性(External Validity):
- 因果效应能否推广到其他总体
- SUTVA 假设(Stable Unit Treatment Value Assumption)
- 无溢出效应(No Spillover)
- 处理一致性(Treatment Consistency)
识别策略对比:
| 方法 | 随机性来源 | 内部有效性 | 外部有效性 | 实施难度 |
|---|---|---|---|---|
| RCT | 随机分配 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 高 |
| DID | 政策外生冲击 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 中 |
| RDD | 断点附近随机 | ⭐⭐⭐⭐ | ⭐⭐ | 中 |
| IV | 工具变量 | ⭐⭐⭐ | ⭐⭐⭐ | 高 |
| PSM | 条件独立 | ⭐⭐ | ⭐⭐⭐ | 低 |
第 5 节:Python 实战:RCT 分析完整流程
完整案例:在线教育平台的 A/B 测试
import pandas as pd
import numpy as np
from scipy import stats
import statsmodels.api as sm
# 1. 数据生成(模拟 RCT)
np.random.seed(42)
n = 1000
# 随机分配
treatment = np.random.binomial(1, 0.5, n)
# 潜在结果
Y0 = np.random.normal(75, 15, n) # 对照组成绩
tau = 5 # 真实因果效应
Y1 = Y0 + tau + np.random.normal(0, 2, n)
# 观测结果(根本问题:只观察到一个)
Y_obs = treatment * Y1 + (1 - treatment) * Y0
# 2. 平衡性检验(Balance Check)
balance_test = stats.ttest_ind(
Y0[treatment == 1],
Y0[treatment == 0]
)
print(f"平衡性检验 p-value: {balance_test.pvalue:.4f}")
# 3. ATE 估计(简单差分)
ATE_simple = Y_obs[treatment == 1].mean() - Y_obs[treatment == 0].mean()
print(f"ATE(简单差分): {ATE_simple:.2f}")
# 4. 回归估计(异方差稳健标准误)
X = sm.add_constant(treatment)
model = sm.OLS(Y_obs, X).fit(cov_type='HC3')
print(model.summary())
# 5. 异质性分析(CATE)
# 按照学生基础分层
baseline = Y0
high_baseline = baseline > baseline.median()
CATE_high = (Y_obs[treatment == 1 & high_baseline].mean() -
Y_obs[treatment == 0 & high_baseline].mean())
CATE_low = (Y_obs[treatment == 1 & ~high_baseline].mean() -
Y_obs[treatment == 0 & ~high_baseline].mean())
print(f"高基础学生 CATE: {CATE_high:.2f}")
print(f"低基础学生 CATE: {CATE_low:.2f}")学习目标
完成本章后,你将能够:
| 能力 | 具体目标 |
|---|---|
| 概念理解 | 理解潜在结果框架和反事实逻辑 |
| 掌握因果推断的核心挑战(选择偏误、混淆) | |
| 理解 RCT 为什么是黄金标准 | |
| 技术掌握 | 能够设计和分析 RCT 实验 |
| 区分 ATE、ATT、LATE 等不同效应 | |
| 进行平衡性检验和有效性诊断 | |
| 实战能力 | 使用 Python 实现完整的 RCT 分析 |
| 进行异质性分析(CATE) | |
| 正确解读和报告因果效应 |
️ 学习路线图
Week 1: 反事实思维入门
├─ 理解潜在结果框架
├─ 因果推断的根本问题
└─ 简单案例分析
Week 2: RCT 理论与设计
├─ 随机化的魔力
├─ 实验设计类型
└─ 平衡性与有效性
Week 3: 效应估计与推断
├─ ATE/ATT/LATE 的区别
├─ 标准误与假设检验
└─ 异质性分析
Week 4: Python 实战
├─ 数据生成与模拟
├─ 完整分析流程
└─ 结果可视化与报告与其他模块的联系
前置知识(来自 Python Fundamentals)
- Module 3: 基础语法(条件判断、循环)
- Module 4: 数据结构(列表、字典、DataFrame)
- Module 5: 函数与模块
- Module 9: NumPy、Pandas、可视化
后续应用
- Module 3: 数据清洗与变量构造(为因果分析准备数据)
- Module 6: OLS 回归(控制变量回归)
- Module 8: 计量经济学(IV、DID、RDD 等准自然实验)
- Module 10: 因果推断模型(DoWhy、CausalML)
推荐阅读
经典教材
Angrist & Pischke (2009): Mostly Harmless Econometrics
- 第 2 章:随机分配解决了选择问题
- 实用、直观、案例丰富
Imbens & Rubin (2015): Causal Inference for Statistics, Social, and Biomedical Sciences
- 潜在结果框架的权威教材
- 数学严谨但易懂
Pearl (2009): Causality: Models, Reasoning, and Inference
- DAG(有向无环图)视角
- 理论深度最高
前沿论文
- Athey & Imbens (2017): "The State of Applied Econometrics: Causality and Policy Evaluation"
- Abadie (2020): "Statistical Nonsignificance in Empirical Economics"
在线资源
- Mixtape Sessions: Scott Cunningham 的因果推断课程
- YouTube: Ben Lambert 的计量经济学系列
学习建议
DO(推荐做法)
- 从案例出发:每个概念都要有具体例子
- 对比思考:相关性 vs 因果性的区别
- 动手实践:运行 Python 代码,修改参数观察变化
- 画图理解:DAG(有向无环图)是理解因果关系的最佳工具
DON'T(避免误区)
- 不要死记公式:理解概念比记忆更重要
- 不要跳过平衡性检验:这是 RCT 有效性的基础
- 不要过度解读:因果效应有边界条件(SUTVA)
- 不要忽略标准误:统计推断和点估计同样重要
本章数据集
我们将使用以下真实/模拟数据集:
| 数据集 | 描述 | 来源 | 样本量 |
|---|---|---|---|
| STAR Project | 田纳西州小班教学实验 | 真实 RCT | 11,600 |
| Progresa/Oportunidades | 墨西哥条件现金转移项目 | 真实 RCT | 506 村庄 |
| Online Education A/B Test | 在线课程 RCT 模拟数据 | 模拟 | 1,000 |
| Job Training RCT | 就业培训实验 | 模拟 | 2,000 |
自测题(开始前)
在学习本章之前,先测试你的理解:
概念题:什么是反事实(Counterfactual)?为什么它是因果推断的核心?
案例题:研究发现"使用社交媒体的学生成绩更低",这能证明社交媒体导致成绩下降吗?为什么?
设计题:如果要研究"远程办公对员工生产力的因果效应",你会如何设计 RCT?
答案提示:
- 如果你能清晰回答问题 1,说明你已经有了因果推断的思维
- 如果问题 2 让你困惑,本章会帮你建立严谨的因果推理框架
- 如果问题 3 难以下手,本章将教你完整的 RCT 设计流程
准备好了吗?
反事实框架和 RCT 是现代因果推断的基石,也是经济学、社会学、医学等领域最可信的因果证据来源。
掌握这一章,你将:
- 建立严谨的因果思维方式
- 理解实验设计的核心原理
- 能够独立分析 RCT 数据
- 为学习更高级的准自然实验方法打下基础
让我们开始吧!
本章文件清单
module-2_Counter Factual and RCTs/
├── 00-本章介绍.md # 本文件
├── 01-potential-outcomes-framework.md # 潜在结果框架
├── 02-randomized-controlled-trials.md # RCT 原理与设计
├── 03-average-treatment-effects.md # 平均处理效应
├── 04-identification-strategies.md # 识别策略与有效性
└── 05-practical-implementation.md # Python 实战预计学习时间:12-16 小时 难度系数:⭐⭐⭐⭐(需要较强的抽象思维能力) 实用性:⭐⭐⭐⭐⭐(现代因果推断的必修课)
下一节:01 - 潜在结果框架
让因果推断之旅从这里启航!