causal_inference_tutorial

第十三章:反事实推理与结构因果模型

本章我们将深入探讨因果推断的最高层次——反事实推理。通过结构因果模型(SCM),我们不仅能回答”如果采取某个行动会发生什么”,更能回答”如果当初采取了不同的行动,结果会如何”。这种能力在法律责任判定、医疗决策和政策评估等领域具有重要价值。我们将系统学习Pearl的因果层级理论、SCM的构建方法、反事实查询的计算以及必要性与充分性概率的应用。

13.1 Pearl因果层级

Judea Pearl提出的因果层级(Ladder of Causation)为我们理解不同类型的因果问题提供了清晰的框架。这个层级将因果问题分为三个递进的层次,每个层次需要不同类型的信息和推理能力。

13.1.1 关联层(Association)

关联层是最基础的层次,处理的是观察性问题:”看到X时,Y会是什么?”

数学表达:$P(Y X)$

这一层只需要观察数据就能回答,是传统统计学和机器学习主要关注的领域。例如:

关联层的局限性在于无法区分相关性和因果性。即使我们观察到强相关,也不能断言存在因果关系。

13.1.2 干预层(Intervention)

干预层处理的是行动问题:”如果我做了X,Y会是什么?”

数学表达:$P(Y do(X))$

这里的$do(X)$表示主动干预,将X设置为某个值,而不是被动观察X等于某个值。这一层需要:

例如:

13.1.3 反事实层(Counterfactual)

反事实层是最高层次,处理的是想象问题:”如果X不同,Y会是什么?”

数学表达:$P(Y_x X’, Y’)$

这表示:已知实际观察到$X’$和$Y’$,如果X的值是x(与实际不同),Y会是什么?

反事实问题的例子:

13.1.4 三层级的关系

        反事实层
           ↑
        干预层  
           ↑
        关联层

重要性质:

  1. 层级不可逆:高层信息可以回答低层问题,但低层信息无法回答高层问题
  2. 信息需求递增:每上升一层,需要更强的假设或更多的信息
  3. 实际应用递减:越高层的问题越难在实践中精确回答

13.2 结构因果模型(SCM)

结构因果模型是形式化表达因果关系的数学框架,能够统一处理所有三个层级的因果问题。

13.2.1 SCM的定义

一个结构因果模型M由三部分组成:

M = ⟨U, V, F⟩

其中:

13.2.2 结构方程示例

考虑一个简单的薪资模型:

U_E ~ N(0, 1)  # 教育的随机因素
U_S ~ N(0, 1)  # 薪资的随机因素

E = 2 + U_E                    # 教育年限
S = 3000 + 500*E + 1000*U_S    # 薪资

这个SCM告诉我们:

13.2.3 从SCM到因果图

SCM可以自然地转换为因果图(DAG):

    U_E → E
           ↓
    U_S → S

简化表示(隐藏外生变量):

    E → S

13.2.4 SCM的干预操作

在SCM中,干预$do(X=x)$通过替换相应的结构方程实现:

原始方程:$X = f_X(PA_X, U_X)$ 干预后:$X = x$

这相当于:

  1. 删除所有指向X的边
  2. 将X固定为常数x

13.3 反事实查询

反事实推理是SCM最强大的功能之一,让我们能够回答”如果…会怎样”的问题。

13.3.1 反事实的定义

反事实量$Y_x(u)$表示:在外生变量为u的情况下,如果设置X=x,Y的值是什么。

对于个体i,其反事实结果是: \(Y_{x}^{(i)} = Y_x(U^{(i)})\)

13.3.2 三步法计算反事实

Pearl提出了计算反事实的三步法:

步骤1:溯因(Abduction) 使用观察数据推断外生变量U的值: \(P(U|evidence)\)

步骤2:行动(Action) 在推断出的U下,应用干预$do(X=x)$,修改模型

步骤3:预测(Prediction) 在修改后的模型中计算Y的值

13.3.3 实例:薪资反事实

假设我们观察到某人:

问题:如果这个人接受了6年教育,他的薪资会是多少?

步骤1:溯因 从E = 4,推断:$U_E = 4 - 2 = 2$ 从S = 5000,E = 4,推断:$U_S = (5000 - 3000 - 500*4)/1000 = 0$

步骤2:行动 设置E = 6

步骤3:预测 $S_{E=6} = 3000 + 5006 + 10000 = 6000$

因此,反事实薪资是6000元。

13.3.4 反事实与潜在结果

在Rubin因果模型中,潜在结果$Y(1), Y(0)$实际上就是反事实:

个体因果效应: \(ICE = Y(1) - Y(0) = Y_{T=1} - Y_{T=0}\)

13.4 必要性与充分性概率

在法律、医疗和政策评估中,我们经常需要判断某个原因对结果的责任程度。必要性和充分性概率提供了量化这种责任的框架。

13.4.1 必要性概率(Probability of Necessity, PN)

必要性概率回答:”如果原因没有发生,结果还会发生吗?”

定义: \(PN = P(Y_0 = 0 | X = 1, Y = 1)\)

这表示:在观察到X=1且Y=1的情况下,如果X=0,Y也会是0的概率。

直观理解

法律应用: 在侵权法中,PN > 0.5通常作为”若非因果关系”(but-for causation)的标准。

13.4.2 充分性概率(Probability of Sufficiency, PS)

充分性概率回答:”如果原因发生了,结果一定会发生吗?”

定义: \(PS = P(Y_1 = 1 | X = 0, Y = 0)\)

这表示:在观察到X=0且Y=0的情况下,如果X=1,Y也会是1的概率。

直观理解

13.4.3 必要充分性概率(Probability of Necessity and Sufficiency, PNS)

PNS结合了必要性和充分性:

定义: \(PNS = P(Y_1 = 1, Y_0 = 0)\)

这表示:X=1时Y=1,且X=0时Y=0的概率。

关系公式: 在单调性假设下(没有个体对处理有负面反应): \(PNS = P(Y|X=1) - P(Y|X=0)\)

13.4.4 计算示例

考虑一个药物治疗的例子:

观察数据:

在单调性假设下:

这意味着50%的患者是”反应者”——服药会康复,不服药不会康复。

13.4.5 边界关系

即使无法精确计算PN、PS,我们也可以得到有用的边界:

PN的边界: \(\max(0, P(Y|X=1) - P(Y|X=0)) \leq PN \leq \min(P(Y|X=1), P(\bar{Y}|X=0))\)

PS的边界: \(\max(0, P(Y|X=1) - P(Y|X=0)) \leq PS \leq \min(P(\bar{Y}|X=0), P(Y|X=1))\)

13.5 行业案例:特斯拉自动驾驶事故责任判定

背景

2023年,一辆开启Autopilot的特斯拉Model 3在高速公路上发生事故,撞上了前方突然变道的卡车。事故造成特斯拉驾驶员受伤,引发了关于自动驾驶系统责任的诉讼。

关键事实:

因果模型构建

我们构建如下SCM:

变量定义:
- A: Autopilot状态 (1=开启, 0=关闭)
- W: 警告发出 (1=是, 0=否)
- R: 驾驶员反应 (1=及时, 0=不及时)
- S: 传感器检测 (1=正常, 0=异常)
- C: 碰撞发生 (1=是, 0=否)

结构方程:
S = f_S(U_S)  # 传感器状态
W = A * S      # 只有Autopilot开启且传感器正常才发警告
R = f_R(W, U_R)  # 驾驶员反应取决于警告和个人因素
C = f_C(A, R, S, U_C)  # 碰撞取决于多个因素

反事实分析

问题1:如果Autopilot没有开启,事故还会发生吗?

这是必要性问题:$P(C_{A=0} = 0 A=1, C=1)$

分析步骤:

  1. 溯因:从观察数据推断驾驶员的反应能力和环境条件
  2. 干预:设置A=0(Autopilot关闭)
  3. 预测:计算人工驾驶下的碰撞概率

根据类似事故统计:

因此:$PN ≈ 0.85$

问题2:Autopilot的存在是否增加了事故风险?

计算充分性概率:$P(C_{A=1} = 1 A=0, C=0)$

这需要评估:在没有使用Autopilot且没有发生事故的情况下,如果使用了Autopilot,发生事故的概率。

责任分配

基于反事实分析,我们可以量化各方责任:

  1. Autopilot系统责任
    • 必要性概率PN = 0.85表明,没有Autopilot事故很可能不会发生
    • 但系统确实发出了警告
  2. 驾驶员责任
    • 未能及时响应警告
    • 过度依赖自动驾驶系统
  3. 环境因素
    • 前车突然变道
    • 道路条件

法律启示

这个案例展示了反事实推理在法律责任判定中的应用:

  1. 因果贡献度量化:通过PN、PS等指标量化各因素的贡献
  2. 多重原因处理:SCM能够处理多个原因同时作用的情况
  3. 证据标准:PN > 0.5可作为民事诉讼的证据标准
  4. 政策制定:基于反事实分析改进自动驾驶法规

技术改进建议

基于因果分析,特斯拉可以:

  1. 增强预警系统:提高警告的显著性
  2. 驾驶员监控:实时监测驾驶员注意力
  3. 渐进式接管:设计更平滑的控制权转移机制
  4. 场景识别:改进高风险场景的识别算法

13.6 本章小结

本章我们深入探讨了因果推断的最高层次——反事实推理和结构因果模型。主要内容包括:

核心概念

  1. Pearl因果层级:关联、干预、反事实三个递进层次
  2. 结构因果模型:统一处理所有因果问题的数学框架
  3. 反事实查询:通过溯因-行动-预测三步法计算
  4. 必要性与充分性概率:量化因果责任的关键指标

关键公式

实践要点

13.7 练习题

基础题

练习13.1 Pearl因果层级理解 对于以下问题,判断它们属于哪个因果层级(关联/干预/反事实): a) “糖尿病患者的平均血糖水平是多少?” b) “如果给所有人注射胰岛素,血糖会下降多少?” c) “如果这个糖尿病患者昨天注射了胰岛素,他今天的血糖会是多少?” d) “看到某人血糖高,他患糖尿病的概率是多少?”

提示 关注问题是否涉及:观察(关联)、行动(干预)、或已知事实下的假设(反事实)
答案 a) 关联层 - 纯观察性问题 b) 干预层 - 涉及主动行动do(注射胰岛素) c) 反事实层 - 对特定个体的过去进行假设 d) 关联层 - 条件概率,观察性推断

练习13.2 SCM计算 给定如下结构因果模型:

U_X ~ Bernoulli(0.5)
U_Y ~ Bernoulli(0.3)
X = U_X
Y = X ⊕ U_Y  (异或运算)

计算: a) P(Y=1) b) P(Y=1|do(X=1)) c) 对于观察到X=1, Y=0的个体,计算反事实$Y_{X=0}$

提示 异或运算:相同为0,不同为1。先计算边际概率,再考虑干预和反事实。
答案 a) P(Y=1) = P(X=0,U_Y=1) + P(X=1,U_Y=0) = 0.5×0.3 + 0.5×0.7 = 0.5 b) do(X=1)后,Y = 1 ⊕ U_Y,所以P(Y=1|do(X=1)) = P(U_Y=0) = 0.7 c) 观察X=1, Y=0,推断U_Y=1(因为1⊕1=0) 反事实:若X=0,则Y = 0⊕1 = 1 因此$Y_{X=0} = 1$

练习13.3 必要性概率计算 某医院数据显示:

在单调性假设下,计算: a) 疫苗的必要充分性概率PNS b) 估计必要性概率PN的下界

提示 单调性假设意味着没有人因接种疫苗反而更容易感染。使用边界公式。
答案 a) P(感染|未接种) = 700/1000 = 0.7 P(感染|接种) = 200/1000 = 0.2 PNS = 0.7 - 0.2 = 0.5 b) PN下界 = max(0, P(Y|X=1) - P(Y|X=0)) 这里Y=未感染,X=接种 P(未感染|接种) = 0.8 P(未感染|未接种) = 0.3 PN下界 = 0.8 - 0.3 = 0.5

挑战题

练习13.4 多原因反事实 考虑火灾案例,有两个纵火犯A和B:

SCM:
火灾 = A OR B
A = 1 (A纵火了)
B = 1 (B纵火了)

现在火灾发生了。计算: a) A对火灾的必要性概率 b) 如果只有A或B其中一人纵火,火灾就会发生,这种情况下的责任如何分配? c) 设计一个更合理的SCM来处理共同原因

提示 OR逻辑意味着任一原因都充分。考虑Shapley值等合作博弈概念。
答案 a) PN_A = P(火灾_{A=0}=0 | A=1, B=1, 火灾=1) 由于B=1,即使A=0,火灾仍会发生 因此PN_A = 0 b) 两个纵火犯都不是必要的(PN=0),但都是充分的(PS=1) 可以使用Shapley值:每人分配50%责任 或考虑时间顺序、故意程度等其他因素 c) 更合理的SCM: ``` 火灾强度 = α*A + β*B + γ*A*B + U 火灾 = 1(火灾强度 > 阈值) ``` 这允许协同效应和部分贡献

练习13.5 反事实推理悖论 “如果我没有买彩票,我就不会中奖”——这看起来显然正确。但考虑:

解释为什么这个反事实是0,以及这与直觉的关系。

提示 区分事前(ex-ante)和事后(ex-post)视角。考虑信息的作用。
答案 反事实W_{T=0}=0是正确的,因为: 1. 观察到W=0意味着我的彩票号码不是中奖号码 2. 这个信息在反事实世界中保持不变 3. 因此即使没买彩票,"我的号码"仍不是中奖号码 直觉vs形式化: - 直觉:基于事前概率(买彩票才有机会) - 形式化:基于事后信息(已知号码不中奖) 这说明反事实推理必须明确信息集和时间点。

练习13.6 法律因果链 某公司数据泄露案:

SCM:

D = H * (1-P)  # 只有黑客攻击且无补丁才泄露

问题: a) 计算员工失职的必要性概率 b) 如果补丁只能阻止50%的攻击,如何修改模型? c) 讨论法律责任分配的原则

提示 考虑预防责任vs直接责任。概率性防护需要随机变量建模。
答案 a) PN_员工 = P(D_{P=1}=0 | H=1, P=0, D=1) 如果P=1(及时更新),则D=1*(1-1)=0 因此PN_员工 = 1(员工失职是必要原因) b) 修改模型: ``` U_D ~ Bernoulli(0.5) # 补丁效果的随机性 D = H * (P*U_D + (1-P)*1) ``` 现在补丁只提供概率性保护 c) 责任分配原则: - 直接原因(黑客)vs促成原因(员工) - 注意义务:员工有更新补丁的职责 - 可预见性:数据泄露是可预见的后果 - 最后清晰机会:员工有最后机会阻止 建议:主要责任在黑客,员工承担过失责任

练习13.7 开放性思考:反事实的哲学含义 David Lewis说:”反事实是关于最相似的可能世界的陈述。” 讨论: a) SCM如何形式化”最相似”的概念? b) 反事实推理在人工智能中的作用 c) 机器能否真正理解反事实?

提示 考虑外生变量U的作用、干预的最小性、以及符号vs语义理解。
答案 a) SCM中的"最相似": - 保持所有外生变量U不变 - 只改变干预变量 - 其他内生变量按结构方程传播 - 这定义了独特的反事实世界 b) AI中的作用: - 解释性:理解模型决策 - 鲁棒性:评估不同情况下的表现 - 公平性:检测歧视性决策 - 规划:评估行动后果 c) 机器理解反事实: - 形式层面:可以计算反事实查询 - 语义层面:缺乏真正的想象力 - 实用层面:足以支持决策 - 哲学争议:理解vs模拟的区别 关键洞察:SCM提供了反事实的计算框架,但"理解"仍是开放问题。

13.8 常见陷阱与错误

在应用反事实推理和SCM时,研究者经常遇到以下问题:

1. 混淆不同因果层级

错误:用观察数据直接回答反事实问题

错误推理:"吸烟者肺癌率30%,所以这个吸烟肺癌患者如果不吸烟,
         有70%概率不会得肺癌"

正确方法

2. 忽视模型假设

错误:盲目应用单调性假设

场景:教育对收入的影响
错误:"没有人会因为多受教育而收入降低"

正确方法

3. 反事实的时间不一致

错误:混淆不同时间点的反事实

问题:"如果没有疫情,现在的失业率是多少?"
陷阱:没有明确是2020年初没有疫情,还是疫情从未发生

正确方法

4. 过度解释必要性概率

错误:PN=0.6就断定存在因果关系

错误:"PN>0.5,所以X导致了Y"

正确方法

5. 忽视识别性问题

错误:假设所有反事实都可识别

问题:从观察数据计算P(Y₁|X=0)
陷阱:这需要跨越潜在结果,通常不可识别

正确方法

6. 循环定义

错误:在SCM中创建循环依赖

错误的SCM:
X = f(Y, U_X)
Y = g(X, U_Y)

正确方法

7. 混淆结构方程和回归方程

错误:将回归系数解释为因果参数

回归:Y = α + βX + ε
错误:"β是X对Y的因果效应"

正确方法

13.9 最佳实践检查清单

模型构建阶段

分析执行阶段

结果解释阶段

应用实践阶段


本章深入探讨了因果推断的最高层级——反事实推理。通过SCM框架,我们能够回答”如果…会怎样”的深层因果问题,这在法律、医疗、政策等领域具有重要价值。下一章我们将探讨因果推断与机器学习的结合。