⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

第18章:因果结构的形式化——三层阶梯与 do-calculus

从数据里永远推不出因果。除非你愿意承认某些结构是假设,不是发现。


第17章结尾留下了一个令人不舒服的事实:概率论,无论多么精密,都无法区分"X 导致 Y"和"Y 导致 X"——只要两者产生相同的联合分布,贝叶斯更新就对两者一视同仁。

这不是计算能力的问题,不是数据量的问题,而是数学的结构性限制:观测描述的是世界静止时的样子,不描述世界被拨动后的样子

但我们一直在拨动世界。医生开药,政策制定者调整税率,工程师修改参数。每一次干预,都是在问一个概率论无法回答的问题:"如果我改变 XY 会怎样?"

要回答这个问题,需要一种新的推断规则。这一章的任务,就是把"改变"这个动作本身形式化。


18.1 三层阶梯

Judea Pearl 用一个比喻描述因果推断的层级结构,他称之为因果阶梯(Ladder of Causation)。阶梯有三层,从低到高,每一层都需要前一层没有的能力。

第一层:关联(Association)

这是概率论的领地。问题的形式是:

"看到 XY 是什么?"

用数学语言:P(YX)。这一层只需要数据——足够多的观测,就能估计条件概率。动物、婴儿、以及几乎所有的统计模型,都生活在这一层。

第二层:干预(Intervention)

问题的形式变成了:

"如果我把 X 设置为某个值,Y 会是什么?"

这和第一层的区别是根本性的。"看到 X=x"和"把 X 设置为 x"是完全不同的两件事。前者是被动观察,后者是主动操作。

被动观察时,X=x 可能是因为某个共同原因 Z 同时影响了 XY。主动干预时,你切断了 X 和它的所有原因之间的联系,强行把 X 固定在 x——Y 此时的变化,才真正来自 XY 的直接影响。

这一层需要的不只是数据,还需要行动——或者,当行动不可行时,需要某种允许你在数学上模拟行动的工具。

第三层:反事实(Counterfactual)

问题变得更难:

"如果当初 X 不是那个值,Y 会怎样?"

这已经是对单个个体在另一个可能世界里的询问。"这个病人服药后康复了——如果他当时没有服药,他还会康复吗?"这个问题无法通过任何观测或实验直接回答,因为那个"没有服药"的平行世界,我们永远无法进入。

三层阶梯是真实的分层,不是哲学修辞

这三层对应着能力的真实边界。纯粹的观测数据只能回答第一层问题。随机对照实验(RCT)能回答第二层,但代价是实际执行干预。反事实推断需要一个完整的因果模型,加上关于"个体机制"的额外假设——这超出了任何实验的能力范围。大多数统计学家花了大半个职业生涯在第一层工作,却误以为自己在回答第二层的问题。这个混淆,造成了大量科学文献里的错误推论。

兔狲教授评

"误以为"这个词太客气了。这不是认知错误,这是工具错误。手里只有相关性的锤子,每个问题看起来都是相关性的钉子。问题不在于统计学家的智识,而在于标准训练从来没有把第一层和第二层之间的边界画清楚。


18.2 图:因果的几何

第一步是给"因果结构"一个精确的数学表示。

**有向无环图(DAG)**是最自然的工具。节点代表变量,有向边代表直接因果影响:XY 表示 X 直接影响 Y。"无环"是一个重要约束——因果不能成圈(如果 X 导致 Y 导致 X,那么时间上就出现了悖论)。

一个简单的例子。考虑三个变量:季节(S)、洒水器是否开启(W)、草地是否湿润(G)。直觉上的因果结构是:

SW,SG,WG

季节影响洒水器(夏天更可能开),季节也直接影响草地(下雨),洒水器也直接影响草地。

在这个图里,WG 是相关的——洒水器开着的时候,草地更可能是湿的。但这个相关性有两条路径:一条是直接因果路径 WG,另一条是通过共同原因 S 的"后门路径" WSG

概率论看到的是两者叠加的结果,无法区分。图把这个结构显式地画出来了。

图不是从数据里读出来的

这是初学者最容易犯的错误。因果图表示的是领域知识,不是统计推断的产物。你不能从 P(S,W,G) 里推导出这张图——数据只告诉你变量之间的相关程度,不告诉你箭头的方向。因果图是你把世界的运作机制写下来的地方,它是假设,不是发现。接受这一点需要认知上的一次不舒服的跨越:科学推断不是纯粹从数据出发的,它总是带着结构假设进场。

兔狲教授评

箭头的方向是你带进来的,不是数据给出的——这句话会让很多做数据科学的人不舒服,因为他们习惯于"让数据说话"。但数据说不了这个话。承认这一点需要勇气,很多论文逃避了这一步。逃避的代价,是把假设藏进了方法里,假装它是结论。


18.3 结构因果模型

图只是骨架。要让它成为一个可以做推断的机器,需要在每条边上附上内容。这就是结构因果模型(Structural Causal Model,SCM)

一个 SCM 由三部分组成:

外生变量 U:来自系统外部的噪声或背景因素,不被模型内其他变量决定。它们捕捉我们无法观测或不打算建模的一切随机性。

内生变量 V:被模型内其他变量决定的变量,包括我们关心的所有可观测量。

结构方程:对每个内生变量 Vi,有一个方程

Vi=fi(Pa(Vi),Ui)

其中 Pa(Vi)Vi 在因果图里的父节点(直接原因),Ui 是该变量的噪声项。

这个方程不是统计回归方程——它是一个机制,描述的是"在给定父节点和噪声的情况下,这个变量取什么值"。这个机制是稳定的、局部的:改变其他变量的方程,不会影响这个方程。这个局部稳定性,是因果模型区别于统计模型的核心特征。

回到洒水器的例子,结构方程可以是:

W=fW(S,UW),G=fG(S,W,UG)

W 由季节和它自己的噪声决定,G 由季节、洒水器状态和它自己的噪声决定。每个方程描述一个局部机制,彼此独立。


18.4 do 算子:干预的形式化

现在可以精确地定义"干预"了。

干预 do(X=x) 的操作定义是:X 的结构方程替换为常数方程 X=x,同时保持其他所有方程不变。

这个操作在图上的效果很直观:删除所有指向 X 的边。因为 X 被强行固定了,它的父节点对它的影响被切断了。X 的后代仍然受 X 影响(X 的出边保留),但 X 不再响应它的原因(入边消失)。

这个"被手术过的图",称为干预图,记作 GXX 的入边被删除的图)。

干预后的概率分布,记作 P(Ydo(X=x)),有时也写作 Px(Y),在干预图 GX 中定义。

把它和条件概率做比较:

P(YX=x)vs.P(Ydo(X=x))

前者是"在观测到 X=x 的那些样本里,Y 的分布"。后者是"如果整个世界的 X 都被强行设置为 xY 的分布会是什么"。

两者可以相差悬殊。在洒水器的例子里,P(G=湿W=) 包含了"因为夏天所以洒水器开、因为夏天所以可能下雨"的混淆效应;而 P(G=湿do(W=)) 切断了 WS 这条路,只保留 WG 的直接效应。这才是"洒水器本身对草地湿润度的因果影响"。

随机对照实验做的是什么

随机对照实验(RCT)的核心操作,在数学上正是 do:把受试者随机分配到处理组和对照组,切断了处理变量(服药/不服药)和所有可能混淆因素之间的联系。随机化等价于在因果图里删除指向处理变量的所有边。这就是为什么 RCT 是估计因果效应的"黄金标准"——它在物理上实现了 do 算子。do-calculus 的价值在于:它告诉你在不做实验的情况下,什么时候可以从观测数据里计算出 P(Ydo(X))


18.5 后门准则:混淆的几何

do-calculus 的核心问题是:在什么条件下,可以用观测数据估计因果效应,也就是说,什么时候 P(Ydo(X=x)) 可以用 P 和图的结构来计算,而不需要真正做干预?

回答这个问题,需要理解"混淆"的几何结构。

在因果图里,XY 的总效应被"混淆",当且仅当存在从 X 出发、不经过 X 的子孙、但可以到达 Y 的非因果路径。这类路径叫做后门路径——它们绕过了 XY 的直接效应,从背后混入了虚假关联。

后门准则(Backdoor Criterion)给出了一个精确的条件:变量集 Z 满足后门准则(相对于 XY),当且仅当:

  1. Z 中没有 X 的后代;
  2. Z 阻断了所有从 XY 的后门路径。

如果这样的 Z 存在,因果效应可以用下面的公式计算:

P(Ydo(X=x))=zP(YX=x,Z=z)P(Z=z)

这个公式叫做调整公式。它的意思是:在 Z 的每个取值下,分别计算 X=xY 的条件分布,然后按 Z 的边际分布加权平均。这个操作叫做Z 调整,在流行病学里也叫"控制混淆变量"。

在洒水器的例子里,X=WY=G,后门路径是 WSG。选取 Z={S}S 不是 W 的后代(满足条件1),S 阻断了后门路径 WSG(满足条件2)。于是:

P(Gdo(W=w))=sP(GW=w,S=s)P(S=s)

这个量完全由观测数据决定,不需要真正操控洒水器。


18.6 do-calculus 三条规则

后门准则覆盖了大量实际情况,但不是全部。有些因果图里,后门路径无法被任何可观测变量集完全阻断——比如存在不可观测的混淆因素时。

为了处理更一般的情况,Pearl 提出了 do-calculus:三条关于 do 算子的推断规则,它们构成了因果推断的完备演算。

X,Y,Z,W 是因果图 G 中的变量集,GX 表示删除 X 入边的图,GX 表示删除 X 出边的图。

规则一(观测的增删)

P(Ydo(X),Z,W)=P(Ydo(X),W)

当且仅当在 GX 中,YZX,W

意思是:如果在干预图里,ZY 没有额外信息(被 XW 阻断),那么观测 Z 与否不影响对 Y 的推断。

规则二(行动与观测的互换)

P(Ydo(X),do(Z),W)=P(Ydo(X),Z,W)

当且仅当在 GXZ 中,YZX,W

意思是:在某些条件下,干预 Z 和观测 ZY 的影响是等价的——干预失去了它"强行切断"的特殊性,退化成普通的条件化。

规则三(干预的消除)

P(Ydo(X),do(Z),W)=P(Ydo(X),W)

当且仅当在 GXZ(W) 中,YZX,W(其中 Z(W)Z 中不是 W 的祖先的节点)。

意思是:在某些条件下,do(Z)Y 没有影响,可以从公式中删除。

三条规则的完备性

Pearl 和 Shpitser 证明了:对于任意因果图,如果 P(Ydo(X)) 可以从观测分布 P 计算出来(即"可识别"),那么一定可以通过反复应用这三条规则得到一个只含观测概率的表达式。这是 do-calculus 的完备性定理——它不只是一套工具,而是一个完整的演算,不会遗漏任何可以被识别的因果效应。

这三条规则的形式,和第14章的推断规则高度相似:横线上是条件,横线下是可以做的推断。区别在于,这里的"语言"不只是命题,而是带着 do 算子的概率表达式;图的结构——条件独立性——扮演了公理的角色。


18.7 d-分离:图的独立性语言

do-calculus 的三条规则,每一条都依赖一个核心判断:在某个图里,两组变量是否关于另一组变量条件独立。如何从图的结构直接读出条件独立性?这正是 d-分离(directional separation)的工作。

给定有向无环图 G 和三组节点 X,Y,ZXYZ d-分离,记作 XGYZ,当且仅当 Z 阻断了 XY 之间的所有路径。

"阻断"的定义依赖路径上经过的节点类型:

  • ABCBZ 中时,路径被阻断(B 传递信息,控制 B 后信息停止流动)。
  • ABCBZ 中时,路径被阻断(B 是共同原因,控制 B 后关联消失)。
  • 对撞 ABCB 不在 Z 中时,路径被阻断(对撞节点默认阻塞信息;但控制它或其后代,反而开放了路径——这是"碰撞偏差"的来源)。

对撞节点的行为是反直觉的,值得停下来想清楚。考虑"身高"(H)和"篮球技术"(T)都影响"是否入选篮球队"(S):HST。在整个人群里,HT 可能是独立的。但如果只看"已经入选篮球队"的样本——相当于控制了 S——矮个子球员往往技术特别好,高个子球员技术有时平平。控制了对撞节点,原本独立的变量变得相关了。这就是统计学里的选择偏差,在图的语言里是对撞节点被控制后路径被打开的自然结果。


18.8 反事实:单个个体的另一个世界

三层阶梯的最高层,反事实,需要一个在结构因果模型里的精确定义。

考虑一个具体的个体,在某个具体情况下,经历了 X=x,结果是 Y=y。反事实问题是:如果这个个体当时经历的是 X=x,结果 Y 会是什么?

在 SCM 里,这个问题有三步走的回答:

第一步:溯因(Abduction)。利用观测到的 X=x,Y=y,以及所有其他观测值,更新对该个体的外生噪声变量 U 的分布——从先验分布 P(U) 推到后验分布 P(U观测)。这一步用贝叶斯更新完成,把个体的"特殊性"编码进 U 的后验里。

第二步:行动(Action)。在结构方程里,把 X 的方程替换为 X=x(即施加干预 do(X=x)),其他方程不变。

第三步:预测(Prediction)。在修改后的模型和第一步得到的 U 的后验分布下,计算 Y 的分布。这给出了反事实结论:如果这个个体当时面对的是 X=xY 的分布是什么。

这三步合在一起,给出了反事实推断的操作定义——不是哲学思辨,而是可以计算的程序,只要你有一个足够完整的 SCM。

平均处理效应与个体处理效应

流行病学里常用的"平均处理效应"(ATE)是第二层的概念:E[Ydo(X=1)]E[Ydo(X=0)],它回答的是"在整个人群里,平均而言,处理使结果改变了多少"。"个体处理效应"(ITE)是第三层的概念:对这个特定的人,如果改变处理,他的结果会变多少。ITE 在观测数据里原则上不可识别(因为每个人只能处于一种处理状态),这正是反事实推断的根本困难——也是精准医疗难题的数学根源。


18.9 因果与推断:一个更大的图景

回顾这一章走过的路。

从第14章开始,推断规则是关于命题的:从 Γ 里的一批假设,推出新的命题。第15章发现这套机制有内在的限制——某些真命题无法被证明。第16章质疑了"假设可以重复使用"这个默认,发现去掉它会得到一种新的逻辑。第17章把真值从 {0,1} 扩张到 [0,1},推断变成了信念的更新。

现在,第18章做的事情是:在推断的语言里加入一个新的动词——干预do 算子不是条件化,它是一种新的推断规则,需要在语法里单独处理。图提供了这条规则的语境:什么时候 do 可以被化简掉,什么时候不能。

这个结构和形式系统的结构完全平行:

形式系统因果推断
命题变元变量
推断规则do-calculus 三条规则
公理图(局部独立性假设)
可证(可识别(identifiable)
不完备定理不可识别性定理

可识别性定理扮演着不完备定理的角色:存在某些因果效应,即使有了完整的观测数据和完整的图,也永远无法从观测中计算出来——必须实际做实验。这不是方法的缺陷,而是结构性的边界。


悬而未决

因果图从哪里来? 整章都在假设你已经有了一张正确的因果图。但在实践中,图是主观知识和领域假设的产物。如果图画错了,do-calculus 给出的答案也是错的——系统的可靠性依赖于图的正确性,而图的正确性无法从数据里验证。这是因果推断最深的困境:工具越精密,假设的重量就越重。

能否从数据里自动发现因果图? 因果发现(Causal Discovery)算法——PC 算法、FCI 算法、LiNGAM——尝试从观测数据中推断因果结构的某些方面。但在一般情况下,可观测的数据只能确定一个"马尔科夫等价类"——一组产生相同条件独立性关系的图,箭头方向在类内无法区分。把等价类中的一张图选出来,仍然需要领域知识,或者对误差分布的额外假设。

在因果图上做推断,代价有多大? 即使有了图,因果效应的识别和计算,在一般情况下是计算上昂贵的。判断一个因果效应是否可识别,是多项式时间可完成的;但在存在隐变量的复杂图里,计算可识别效应的具体表达式,代价急剧上升。这个问题的全貌,是第19章的主题:推理的代价,不只是逻辑的限制,也是计算的限制。


思考题

★ 热身

判断以下问题分别属于因果阶梯的哪一层(关联/干预/反事实),并说明理由。

  1. "吸烟者的肺癌发生率比不吸烟者高多少?"
  2. "如果强制推行禁烟令,肺癌发生率会下降多少?"
  3. "这位肺癌患者如果当年没有吸烟,他现在会患癌吗?"
  4. "在检测到高血压的人群中,使用降压药的比例是多少?"
  5. "给这名高血压患者开降压药,他未来10年的心血管事件风险会减少多少?"

★★ 推导

考虑因果图:ZXY,且 ZYZ 同时影响 XYX 也影响 Y)。

  1. 列出所有从 XY 的路径。哪些是因果路径(沿箭头方向),哪些是后门路径?
  2. 用后门准则,写出 P(Ydo(X=x)) 的调整公式。
  3. 如果 Z 是不可观测的隐变量,调整公式是否还能使用?P(Ydo(X=x)) 在这种情况下是否可识别?

★★★ 挑战

在因果图 ZXYZ 可观测)中,加入中介变量 M,满足 XMY,同时保留 XY 的直接路径。

你想分别估计:

  • XY直接效应(不经过 M 的部分)
  • XY间接效应(经过 M 的部分)

直接效应和间接效应属于因果阶梯的哪一层?试着用 do 算子的语言写出这两个量的定义——你会发现"直接效应"的定义需要同时做两个干预。进一步思考:为什么间接效应的定义(自然间接效应)比直接效应更难,必须诉诸反事实?