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

本章我们将深入探讨因果推断的最高层次——反事实推理。通过结构因果模型(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会是什么?

反事实问题的例子:

  • "如果这个吸烟者当初没有吸烟,他现在还会患肺癌吗?"
  • "如果希拉里赢得了2016年大选,今天的失业率会是多少?"

13.1.4 三层级的关系

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

重要性质:

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

13.2 结构因果模型(SCM)

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

13.2.1 SCM的定义

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

M = ⟨U, V, F⟩

其中:

  • U:外生变量集合(未观测的背景变量)
  • V:内生变量集合(模型中的变量)
  • F:结构方程集合,每个$V_i ∈ V$都有一个方程: $$V_i = f_i(PA_i, U_i)$$ 其中$PA_i$是$V_i$的父节点集合

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告诉我们:

  • 教育年限E由基础值2和随机因素$U_E$决定
  • 薪资S由基础工资3000、教育回报(每年500)和随机因素决定

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 实例:薪资反事实

假设我们观察到某人:

  • 教育年限:E = 4年
  • 薪资:S = 5000元

问题:如果这个人接受了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 + 500*6 + 1000*0 = 6000$

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

13.3.4 反事实与潜在结果

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

  • $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高:X是Y的必要原因(没有X就没有Y)
  • PN低:即使没有X,Y也可能发生

法律应用: 在侵权法中,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的概率。

直观理解

  • PS高:X是Y的充分原因(有X就有Y)
  • PS低:即使有X,Y也不一定发生

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 计算示例

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

观察数据:

  • $P(康复|服药) = 0.8$
  • $P(康复|未服药) = 0.3$

在单调性假设下:

  • $PNS = 0.8 - 0.3 = 0.5$

这意味着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在高速公路上发生事故,撞上了前方突然变道的卡车。事故造成特斯拉驾驶员受伤,引发了关于自动驾驶系统责任的诉讼。

关键事实:

  • 事故发生时Autopilot已开启
  • 驾驶员在事故前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. 预测:计算人工驾驶下的碰撞概率

根据类似事故统计:

  • 人工驾驶在相同场景下的事故率:15%
  • Autopilot在此场景下的事故率:5%

因此:$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. 必要性与充分性概率:量化因果责任的关键指标

关键公式

  • 干预:$P(Y|do(X))$
  • 反事实:$Y_x(u) = Y_{M_x}(u)$
  • 必要性概率:$PN = P(Y_0 = 0 | X = 1, Y = 1)$
  • 充分性概率:$PS = P(Y_1 = 1 | X = 0, Y = 0)$
  • 必要充分性:$PNS = P(Y_1 = 1, Y_0 = 0)$

实践要点

  • SCM提供了从数据到反事实的完整推理路径
  • 反事实分析在法律责任、医疗决策等领域具有重要应用
  • 必要性和充分性概率帮助量化因果贡献
  • 单调性假设简化了许多计算,但需要谨慎验证

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 必要性概率计算 某医院数据显示:

  • 接种疫苗且未感染:800人
  • 接种疫苗且感染:200人
  • 未接种且未感染:300人
  • 未接种且感染:700人

在单调性假设下,计算: 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 反事实推理悖论 "如果我没有买彩票,我就不会中奖"——这看起来显然正确。但考虑:

  • 实际:我买了彩票(T=1),没中奖(W=0)
  • 反事实:如果我没买(T=0),中奖概率W_{T=0}=?

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

提示

区分事前(ex-ante)和事后(ex-post)视角。考虑信息的作用。

答案

反事实W_{T=0}=0是正确的,因为:

  1. 观察到W=0意味着我的彩票号码不是中奖号码
  2. 这个信息在反事实世界中保持不变
  3. 因此即使没买彩票,"我的号码"仍不是中奖号码

直觉vs形式化:

  • 直觉:基于事前概率(买彩票才有机会)
  • 形式化:基于事后信息(已知号码不中奖)

这说明反事实推理必须明确信息集和时间点。

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

  • 黑客攻击了系统(H=1)
  • 员工未及时更新补丁(P=0)
  • 数据被窃取(D=1)

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%概率不会得肺癌"

正确方法

  • 认识到$P(Y|X) ≠ P(Y_x)$
  • 需要SCM或额外假设才能从观察数据推导反事实
  • 个体反事实可能与群体统计大相径庭

2. 忽视模型假设

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

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

正确方法

  • 某些情况下过度教育确实可能降低收入
  • 始终验证假设的合理性
  • 进行敏感性分析

3. 反事实的时间不一致

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

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

正确方法

  • 明确反事实的时间点
  • 区分预防性反事实vs治疗性反事实
  • 考虑路径依赖效应

4. 过度解释必要性概率

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

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

正确方法

  • PN衡量的是特定个体的反事实依赖
  • 不等同于一般性因果关系
  • 需要结合PS、PNS综合判断

5. 忽视识别性问题

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

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

正确方法

  • 检查反事实查询是否可识别
  • 使用边界when无法点识别
  • 明确陈述识别假设

6. 循环定义

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

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

正确方法

  • 确保SCM是无环的
  • 使用时间索引处理动态系统
  • 考虑平衡方程而非因果方程

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

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

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

正确方法

  • 结构方程描述因果机制
  • 回归方程描述统计关联
  • 需要因果假设连接两者

13.9 最佳实践检查清单

模型构建阶段

  • [ ] 明确因果问题层级
  • 确定是关联、干预还是反事实问题
  • 选择适当的分析框架

  • [ ] 构建合理的SCM

  • 基于领域知识确定变量关系
  • 确保无环性
  • 明确外生变量假设

  • [ ] 验证模型假设

  • 检查单调性、独立性等假设
  • 进行假设的合理性论证
  • 记录所有关键假设

分析执行阶段

  • [ ] 正确应用三步法
  • 溯因:准确推断外生变量
  • 行动:正确实施干预
  • 预测:在修改模型中计算结果

  • [ ] 检查识别性

  • 确认反事实查询是否可识别
  • 如不可识别,计算边界
  • 考虑额外假设或数据需求

  • [ ] 计算多个指标

  • 不仅计算PN,也计算PS和PNS
  • 比较不同指标的含义
  • 提供全面的因果picture

结果解释阶段

  • [ ] 谨慎解释结果
  • 区分个体vs群体效应
  • 明确时间和条件背景
  • 避免过度推广

  • [ ] 进行敏感性分析

  • 测试对关键假设的敏感性
  • 提供结果的不确定性范围
  • 讨论模型局限性

  • [ ] 沟通要点

  • 用通俗语言解释反事实
  • 提供直观的例子
  • 强调关键假设和限制

应用实践阶段

  • [ ] 法律与政策应用
  • 明确责任归属标准
  • 考虑多重原因情况
  • 提供可操作的建议

  • [ ] 决策支持

  • 评估不同行动的反事实后果
  • 量化决策的因果影响
  • 提供风险评估

  • [ ] 模型验证

  • 使用已知反事实验证模型
  • 与领域专家讨论合理性
  • 持续改进和更新模型

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