跳到内容

第 12 卷 / 第 8 章 / 第 3 课

8.3 DAG 与观察性识别:控制变量也可能制造偏差 ​

观察性因果推断的核心不是某个算法,而是:哪些假设让数据中的比较等价于目标反事实比较?

本课目标 ​

  • 用 DAG 区分混杂、媒介与对撞变量;
  • 写出一致性、可交换性和正值性假设;
  • 理解回归、匹配和加权能够解决与不能解决的问题;
  • 审查工具变量、差分中的差分和回归不连续的识别条件。

1. 从相关问题改写为因果问题 ​

先写目标试验的基本要素:

  • 符合条件的总体;
  • 处理策略及其时间零点;
  • 对照策略;
  • 结果与随访窗口;
  • 分配机制;
  • estimand 与分析方案。

例如“训练较多的队伍成功率更高”只是关联;“对符合条件队伍,把训练从 10 小时增加到 20 小时,对未来 30 天任务成功率的平均影响”才接近可识别问题。

资格判断、处理分配和随访起点应对齐。尤其不能用未来是否完成训练定义起点时的处理组,再把完成前必须保持存活或无事件的时间计入处理组;这会制造 immortal time bias。日期不对齐也可能造成其他偏差,不能统称为不死时间偏差。见 Hernán 等关于目标试验的研究。

2. DAG 表达的是假设 ​

考虑:

text
经验 ──→ 训练时长 ──→ 协作熟练度 ──→ 成功率
  └────────────────────────────→ 成功率

训练时长 ──→ 受伤 ──← 任务难度 ──→ 成功率
  • 经验同时影响处理与结果,是混杂变量;
  • 协作熟练度位于处理到结果的路径上,是媒介;
  • 受伤由训练时长和任务难度共同导致,是对撞变量。

估计训练的总效应时,应阻断经验造成的后门路径,但通常不控制协作熟练度;在这个图里控制受伤还会打开 训练时长 → 受伤 ← 任务难度 → 成功率 路径。

DAG 的箭头来自领域知识、时间顺序和机制证据,不是从相关矩阵自动生成真相。遗漏变量的节点即使没有数据也应画出来,因为它决定识别是否可能。

下面用抽象的中心化变量验证对撞偏差,按 NumPy 代码块顺序运行。设 A 与 U 独立,C=A+U,Y=U;图为 A→C←U→Y,且 A 对 Y 没有因果作用:

python
import numpy as np

A = np.array([-1., -1., 1., 1.])
U = np.array([-1., 1., -1., 1.])
C = A + U
Y = U.copy()
plain = np.linalg.lstsq(np.column_stack([np.ones(4), A]), Y, rcond=None)[0]
adjusted = np.linalg.lstsq(np.column_stack([np.ones(4), A, C]), Y, rcond=None)[0]
print(round(plain[1], 6), round(adjusted[1], 6))
# 0.0 -1.0

不控制 C 时,A 的回归系数为 0;加入 C 后,因为 Y=C−A,系数变成 −1。更多控制变量把本来不存在的关系算得更确定了。

3. 三个基础识别条件 ​

一致性 ​

观测到接受处理 A=a 的单位,其结果等于对应潜在结果 Y(a)。这要求“20 小时训练”不是多个效果不同却混为一类的版本。

条件可交换性 ​

给定充分的处理前混杂变量 L 后:

Y(a)⊥A∣L.

它意味着没有剩余的未测混杂,是观察数据本身通常无法验证的假设。

正值性 ​

对二元处理 A∈{0,1},目标总体中每个相关的协变量组合都应有两种处理的正概率:

0<P(A=a∣L=l)<1.

若最危险任务从不接受短训练,就无法从数据比较该群体的两种策略。模型外推不能制造真实重叠。

4. 调整集不是“所有可用变量” ​

用后门准则识别总效应时,调整集应阻断所有后门路径,且不能包含处理的后代节点。控制受处理影响的媒介会改变目标效应;控制对撞变量还可能打开路径。关键是因果角色,而不只是变量在表里出现得早晚。

处理前变量也不必全部控制:某些工具变量式变量强烈预测处理但不直接预测结果,在有限样本中可能增加方差并放大未测混杂偏差。变量选择应由因果图和 estimand 指导,再考虑统计效率。

“分层后相关系数变小”不是充分因果分析。需要直接估计目标效应,并传播模型与抽样不确定性。

5. Outcome regression、匹配与加权 ​

结果模型 ​

拟合 E[Y∣A,L],为每个单位预测两种处理下的结果差,再按目标总体分布平均。除上述识别假设外,还需要正确估计条件均值;预测误差小本身不能保证反事实区域正确。

倾向评分 ​

倾向评分 e(L)=P(A=1∣L) 描述给定混杂变量后的处理概率。它可用于匹配、分层或逆概率加权。

二元处理的 ATE 逆概率权重可取 w=A/e(L)+(1−A)/(1−e(L)),分别计算两组归一化加权均值之差。拟合权重后要检查:

  • 处理组与对照组 propensity overlap;
  • 加权后的协变量平衡,而非只看 propensity 模型 AUC;
  • 极端权重和有效样本量;
  • 权重截尾与模型选择的敏感性。

匹配只能平衡已测且进入设计的变量。匹配后直接使用独立样本标准误也可能不正确。

下面人为设定两类单位各 10 个,接受处理的比例分别为 0.2 和 0.8,真实处理效应为 2。倾向评分在例子里已知:

python
L = np.repeat([0., 1.], 10)
A = np.array([1] * 2 + [0] * 8 + [1] * 8 + [0] * 2)
Y = 3 * L + 2 * A
propensity = np.where(L == 0, 0.2, 0.8)
assert np.all((propensity > 0) & (propensity < 1))
w = np.where(A == 1, 1 / propensity, 1 / (1 - propensity))
raw = Y[A == 1].mean() - Y[A == 0].mean()
weighted = np.average(Y[A == 1], weights=w[A == 1]) - np.average(
    Y[A == 0], weights=w[A == 0]
)
ess = [(w[A == a].sum() ** 2 / np.square(w[A == a]).sum()) for a in (0, 1)]
print(round(raw, 6), round(weighted, 6), np.round(ess, 6).tolist())
# 3.8 2.0 [6.4, 6.4]

加权前差为 3.8,加权后为 2;两组加权后的 L 均值都为 0.5。每组虽有 10 行,权重有效样本量 (∑w)2/∑w2 只有 6.4。这个构造检查计算,不提供真实观察研究的识别证据或置信区间。

双重稳健方法 ​

把结果模型与处理模型结合,在适当条件下其中一个正确即可保持一致性。但“双重稳健”不防未测混杂、正值性违反或错误时间顺序。

AIPW 在结果模型给出的效应上,加上按处理概率加权的预测残差修正。用上一例分别故意写错一个模型,再同时写错两个:

python
def aipw(m0, m1, e):
    return np.mean(m1 - m0 + A * (Y - m1) / e - (1 - A) * (Y - m0) / (1 - e))

correct_outcome = aipw(3 * L, 3 * L + 2, np.full(len(A), 0.5))
correct_propensity = aipw(np.zeros(len(A)), np.zeros(len(A)), propensity)
both_wrong = aipw(np.zeros(len(A)), np.zeros(len(A)), np.full(len(A), 0.5))
print(np.round([correct_outcome, correct_propensity, both_wrong], 6).tolist())
# [2.0, 2.0, 3.8]

两个模型中一个正确时,本例都恢复 2;同时错误时得到 3.8。一般结论是满足相应正则条件的一致性,不是每份有限样本都恰好正确。用灵活机器学习拟合这两个辅助模型时,推断还需考虑交叉拟合与收敛条件。参见 Bang 与 Robins 的双重稳健估计论文。

6. 工具变量的四道审查 ​

工具 Z 用于处理 A 和结果 Y 时,至少要论证:

  1. 相关性:Z 确实改变 A;
  2. 独立性:Z 与影响结果的未测因素独立;
  3. 排除限制:Z 只通过 A 影响 Y;
  4. 处理版本与干扰假设符合目标解释。

在不依从随机试验中,若再加入单调性等条件,常识别的是 compliers 的局部平均处理效应(LATE),不一定是总体 ATE。

例如二元分配使结果均值提高 0.02、实际接受率提高 0.40,在上述假设和单调性成立时,Wald 比率给出 LATE 0.02/0.40=0.05。它属于那些因分配而改变接受状态的人,不是所有接受者。Peng Ding 的教材 系统推导了随机实验、工具变量和局部效应。

弱工具会使估计不稳定并放大有限样本偏差。第一阶段显著不是完整证明;应报告强度诊断、置信区间和对排除限制的机制论证。

7. 准实验仍依赖设计 ​

差分中的差分(DiD) ​

比较两组前后变化差。关键假设是:没有处理时,两组潜在结果会保持平行趋势。处理前趋势检验未拒绝不能证明未来平行;还需检查提前反应、同期政策与组成变化。错位采用且效应随组别或时间变化时,普通双向固定效应系数也未必等于所需平均效应。

回归不连续(RD) ​

处理由阈值附近的 running variable 决定。识别阈值附近的局部效应,依赖单位不能精确操纵阈值、潜在结果在阈值处连续等条件。带宽和函数形式需做稳健性分析。

这里要求连续的是潜在结果,观测结果的跳跃恰恰可能是待估计信号。阈值完全决定处理的 sharp RD,与阈值只改变接受概率的 fuzzy RD,识别和估计方法也不同。

自然实验 ​

“自然发生”不等于随机。必须论证变化为什么对目标比较近似外生,以及谁受影响。若把这种变化作为工具变量,还需另外论证它只通过目标处理影响结果。

8. 敏感性分析与反证 ​

观察性结论要展示在假设变化下是否稳定:

  • 改变调整集、模型形式、带宽或权重截尾;
  • 用负对照结果/暴露检查不应存在的关系;
  • 检查处理前结果是否被“处理”预测;
  • 量化多强的未测混杂才能推翻结论;
  • 报告 overlap 不足的群体并缩小目标总体;
  • 将不同识别策略的结果并列,而不是只挑有利者。

敏感性分析不能证明假设成立,但能说明结论依赖它到什么程度。

9. 因果报告最少包含什么 ​

text
目标试验与 estimand
数据来源、纳入规则和时间零点
DAG 与调整集理由
识别假设及其不可检验部分
重叠、平衡和权重诊断
主效应、区间与绝对风险
替代模型和敏感性分析
适用总体与不能回答的问题

常见误区 ​

  • 控制变量越多越接近因果:媒介和对撞变量可能改变或制造偏差。
  • propensity score 匹配等于随机实验:它只处理已测混杂并依赖重叠。
  • 工具与处理显著相关就够了:独立性和排除限制通常更难论证。
  • DAG 从数据学出来就客观:纯观测分布通常不能唯一确定因果方向。

练习 ​

  1. 为训练时长、经验、协作熟练度、受伤和成功率画 DAG,并选择总效应调整集。
  2. 用模拟数据展示控制对撞变量如何制造关联。
  3. 做倾向评分加权,报告加权前后标准化差异、overlap 和有效样本量。
  4. 审查一个候选工具变量的相关性、独立性、排除限制和目标 estimand。

小结 ​

因果推断要求目标试验、因果图、时间顺序和识别假设彼此一致。方法可以在假设下估计效应,但模型运行成功不能证明这些假设。

下一章处理规模问题:当单机内存容不下数据时,先理解分区、shuffle、容错和执行语义,再决定是否采用分布式系统。

Built with VitePress | Software Systems Atlas