2.2 潜在结果框架
"Statistics is the science of inferring things we cannot see from things we can see.""统计学是从我们能看到的事物推断我们看不到的事物的科学。"— Donald Rubin, 2016 DeGroot Prize Winner (由美国统计协会 ASA 颁发)
因果推断的基石:理解反事实逻辑
本节目标
- 理解 Rubin 因果模型(RCM)的核心思想
- 掌握潜在结果的数学表示
- 认识因果推断的根本问题
- 区分个体因果效应与平均因果效应
从一个问题开始
案例:教育培训对收入的影响
研究问题:参加职业培训会提高收入吗?
观察到的数据:
| 姓名 | 是否参加培训 | 月收入(元) |
|---|---|---|
| 张三 | 是 | 8,000 |
| 李四 | 否 | 6,000 |
| 王五 | 是 | 9,000 |
| 赵六 | 否 | 5,500 |
简单对比:
- 参加培训组平均收入:(8000 + 9000) / 2 = 8,500
- 未参加组平均收入:(6000 + 5500) / 2 = 5,750
- 差异:8500 - 5750 = 2,750 元
这能说明培训导致收入提高 2,750 元吗?
不能! 存在 选择偏误(Selection Bias):
- 参加培训的人可能本来能力就强(即使不培训也收入高)
- 没参加培训的人可能本来能力弱(即使培训也效果有限)
正确的因果问题:
- 张三参加了培训,收入 8,000 元
- 如果张三没参加培训,收入会是多少?(反事实)
- 两者的差异才是培训对张三的因果效应
问题:我们无法观察到"张三没参加培训"的收入(他已经参加了)
这就是 因果推断的根本问题(Fundamental Problem of Causal Inference)。
潜在结果框架(Potential Outcomes Framework)
核心思想
Rubin 因果模型(1974) 提出:每个个体在每种处理状态下都有一个 潜在结果(Potential Outcome)
符号定义
对于个体 :
| 符号 | 含义 | 英文 |
|---|---|---|
| 处理指示变量 | Treatment Indicator | |
| :接受处理 | Treated | |
| :未接受处理 | Control | |
| 接受处理时的潜在结果 | Potential Outcome under Treatment | |
| 未接受处理时的潜在结果 | Potential Outcome under Control | |
| 观测到的结果 | Observed Outcome |
观测规则(Switching Equation)
含义:
- 如果 (接受处理),我们观察到
- 如果 (未接受处理),我们观察到
- 关键:我们永远无法同时观察到 和
个体因果效应(Individual Treatment Effect)
定义
个体 的因果效应定义为:
含义:同一个体在两种状态下结果的差异
案例:张三的因果效应
假设我们拥有"上帝视角",知道所有潜在结果:
| 姓名 | 参加培训的收入 | 不参加培训的收入 | 因果效应 | 实际选择 | 观测收入 |
|---|---|---|---|---|---|
| 张三 | 8,000 | 7,000 | +1,000 | 1 | 8,000 |
| 李四 | 7,500 | 6,000 | +1,500 | 0 | 6,000 |
| 王五 | 9,000 | 8,500 | +500 | 1 | 9,000 |
| 赵六 | 7,000 | 5,500 | +1,500 | 0 | 5,500 |
观察:
- 张三的真实因果效应是 +1,000 元(不是 8,000 元!)
- 每个人的因果效应可能不同(异质性)
现实中的问题:
- 我们只能观察到 黑体部分 的数字
- 灰色部分(反事实)永远无法观察
- 这就是 因果推断的根本问题
平均因果效应(Average Treatment Effect)
定义
由于无法识别个体因果效应,我们转而估计 平均因果效应(ATE):
含义:总体中所有个体因果效应的平均值
继续张三的例子
使用上表的"上帝视角"数据:
解读:培训的平均因果效应是 +1,125 元
选择偏误(Selection Bias)
简单对比的问题
简单对比(Simple Difference in Means):
与真实 ATE 的对比:
- 简单对比:2,750
- 真实 ATE:1,125
- 偏误:2,750 - 1,125 = 1,625 元
选择偏误的来源
简单对比可以分解为:
第一项(ATT):处理组的平均因果效应
第二项(选择偏误):两组在不接受处理时的基线差异
验证:
结论:
- 参加培训的人本来就能力更强( 更高)
- 简单对比高估了培训效应
- 选择偏误 = 2,000 元 是由自选择(Self-Selection)导致的
因果推断的核心挑战
根本问题(Fundamental Problem)
缺失数据问题:
| 个体 | |||||
|---|---|---|---|---|---|
| 张三 | ? | 7,000 | ? | 1 | 8,000 |
| 李四 | 7,500 | ? | ? | 0 | 6,000 |
| 王五 | ? | 8,500 | ? | 1 | 9,000 |
| 赵六 | 7,000 | ? | ? | 0 | 5,500 |
50% 的数据天然缺失(不是随机缺失!)
三大挑战
| 挑战 | 描述 | 后果 |
|---|---|---|
| 选择偏误 | 处理组和对照组本来就不同 | 简单对比有偏 |
| 混淆因素 | 第三个变量同时影响处理和结果 | 无法分离因果 |
| 反向因果 | 结果反过来影响处理 | 因果方向错误 |
因果识别的条件
理想实验的条件
要无偏估计 ATE,需要:
含义:如果两组都不接受处理,他们的平均结果应该相同
等价表述:
- 处理分配 与潜在结果 独立
- 记为:
如何实现这个条件?
答案:随机化(Randomization)!
- 通过 抛硬币 决定谁接受处理
- 保证两组在所有特征上都平均可比
- 消除选择偏误
下一节将详细讲解 RCT(随机对照试验)
Python 实现:理解潜在结果
案例:模拟"上帝视角"数据
import pandas as pd
import numpy as np
# 设定随机种子
np.random.seed(42)
# 生成潜在结果(通常不可观测)
n = 1000
data = pd.DataFrame({
'id': range(n),
'ability': np.random.normal(100, 15, n), # 潜在能力
})
# 潜在结果(上帝视角)
data['Y0'] = 5000 + 50 * data['ability'] + np.random.normal(0, 1000, n)
data['Y1'] = data['Y0'] + 1500 + np.random.normal(0, 500, n) # 培训效应 +1500
# 个体因果效应
data['tau'] = data['Y1'] - data['Y0']
# 真实 ATE
true_ATE = data['tau'].mean()
print(f"真实 ATE: {true_ATE:.2f}")
# 自选择:能力强的人更可能参加培训
prob_treat = 1 / (1 + np.exp(-(data['ability'] - 100) / 10))
data['D'] = np.random.binomial(1, prob_treat)
# 观测结果(根本问题:只观察一个)
data['Y_obs'] = data['D'] * data['Y1'] + (1 - data['D']) * data['Y0']
# 简单对比(有偏!)
naive_estimate = (data[data['D'] == 1]['Y_obs'].mean() -
data[data['D'] == 0]['Y_obs'].mean())
print(f"简单对比: {naive_estimate:.2f}")
print(f"偏误: {naive_estimate - true_ATE:.2f}")输出:
真实 ATE: 1502.34
简单对比: 6847.91
偏误: 5345.57结论:由于选择偏误,简单对比严重高估了培训效应!
可视化:潜在结果
import matplotlib.pyplot as plt
import seaborn as sns
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
fig, axes = plt.subplots(1, 3, figsize=(15, 5))
# 子图 1:潜在结果分布
axes[0].scatter(data['Y0'], data['Y1'], alpha=0.3, s=10)
axes[0].plot([3000, 12000], [3000, 12000], 'r--', label='45° 线')
axes[0].set_xlabel('Y(0): 不培训的收入')
axes[0].set_ylabel('Y(1): 培训后的收入')
axes[0].set_title('潜在结果(上帝视角)')
axes[0].legend()
# 子图 2:个体因果效应分布
axes[1].hist(data['tau'], bins=50, edgecolor='black', alpha=0.7)
axes[1].axvline(true_ATE, color='red', linestyle='--',
label=f'平均效应 = {true_ATE:.0f}')
axes[1].set_xlabel('个体因果效应 τ_i')
axes[1].set_ylabel('频数')
axes[1].set_title('因果效应的异质性')
axes[1].legend()
# 子图 3:选择偏误可视化
treated = data[data['D'] == 1]
control = data[data['D'] == 0]
axes[2].hist(treated['Y0'], bins=30, alpha=0.5, label='处理组的 Y(0)', color='blue')
axes[2].hist(control['Y0'], bins=30, alpha=0.5, label='对照组的 Y(0)', color='orange')
axes[2].set_xlabel('Y(0): 不培训时的收入(反事实)')
axes[2].set_ylabel('频数')
axes[2].set_title('选择偏误:两组基线不同')
axes[2].legend()
plt.tight_layout()
plt.show()不同类型的平均效应
ATE vs ATT vs ATU
| 效应 | 定义 | 公式 | 适用场景 |
|---|---|---|---|
| ATE | 总体平均效应 | 政策普遍推广 | |
| ATT | 处理组平均效应 | 评估已参与者 | |
| ATU | 对照组平均效应 | 评估未参与者 |
何时 ATE = ATT?
条件:处理效应齐性(Homogeneous Treatment Effect)
现实:通常存在异质性(Heterogeneity)
- 基础好的学生培训效果可能更大
- 健康人群的药物效果可能不同于病人
小结
核心概念
| 概念 | 含义 |
|---|---|
| 潜在结果 | 个体在不同处理状态下的可能结果 |
| 反事实 | 未实际发生的状态(无法观测) |
| 个体因果效应 | |
| 平均因果效应 | |
| 选择偏误 | 处理组和对照组基线不同导致的偏误 |
| 根本问题 | 无法同时观察 和 |
关键洞察
相关性 ≠ 因果性
- 简单对比通常有偏
- 偏误来源:选择、混淆、反向因果
因果推断的目标
- 估计平均因果效应(ATE)
- 需要构建可比的对照组
解决方案预告
- 随机化(RCT):最可信
- 准自然实验(DID、RDD、IV):次优选择
- 匹配方法(PSM):需要强假设
思考题
概念题:为什么我们说" 和 同时存在,但只能观察到一个"?这句话如何理解?
案例题:研究发现"喝咖啡的人平均寿命更长"。请用潜在结果框架分析:
- 定义 和
- 可能存在哪些选择偏误?
- 如何设计 RCT?
计算题:假设真实数据如下:
| 个体 | |||
|---|---|---|---|
| A | 80 | 70 | 1 |
| B | 75 | 65 | 0 |
| C | 90 | 85 | 1 |
| D | 70 | 60 | 0 |
计算:
- (a) 真实 ATE
- (b) ATT
- (c) 简单对比估计
- (d) 选择偏误
点击查看答案
(a) ATE = [(80-70) + (75-65) + (90-85) + (70-60)] / 4 = [10+10+5+10] / 4 = 8.75
(b) ATT = [(80-70) + (90-85)] / 2 = [10+5] / 2 = 7.5
(c) 简单对比 = [(80+90)/2] - [(65+60)/2] = 85 - 62.5 = 22.5
(d) 选择偏误 = 简单对比 - ATE = 22.5 - 8.75 = 13.75
或者:Bias = E[Y(0)|D=1] - E[Y(0)|D=0] = [(70+85)/2] - [(65+60)/2] = 77.5 - 62.5 = 15
下一步
下一节我们将学习 随机对照试验(RCT),看随机化如何解决因果推断的根本问题。
核心问题预告:
- 为什么随机化能消除选择偏误?
- RCT 的实验设计原理是什么?
- 如何在 Python 中实现 RCT 分析?
继续前进!
参考文献:
- Rubin, D. B. (1974). "Estimating causal effects of treatments in randomized and nonrandomized studies". Journal of Educational Psychology.
- Holland, P. W. (1986). "Statistics and Causal Inference". Journal of the American Statistical Association.
- Imbens, G. W., & Rubin, D. B. (2015). Causal Inference for Statistics, Social, and Biomedical Sciences. Cambridge University Press.