文章目录
-
- 因果推断:
-
- 因果推断的发展起源与理论体系
- 因果关系的验证逻辑与局限
- 传统统计框架的局限:辛普森悖论
- 图中的关联因果流动
-
- 传统联合分布建模的缺陷
- 局部马尔可夫假设
- 最小性假设
- 三大基础结构与关联传播规则
- D-分离 (d-separation practice)
- 结构因果模型(SCM)与潜在结果框架(PO)
- DoWhy、NOTERAS 与 LLM × 因果
-
- DoWhy 因果推理的“工程脚手架”
-
- Model(建模)
- Identify(识别)
-
- 后门准则(Backdoor Criterion)
- 前门准则(Frontdoor Criterion)—— 应对【有隐藏混杂,但存在中介】
- 边界分析
- 工具变量准则(Instrumental Variable, IV)—— 高混杂场景补充方案
- Estimate(估计)
-
- S-Learner(标准 COM 估计器)
- T-Learner(GCOM,分组 COM 估计)
- 混合架构改进:TARNET
- X-Learner(高效分组学习)
- Refute(反驳 / 验证)
- NOTEARS:因果发现(学 DAG)的 “里程碑算法”
- LLM× 因果:当前最火的 “缝合怪” 方向
-
- LLM 做因果发现(替代 / 辅助 NOTEARS、PC 算法)
- LLM 辅助因果效应估计(搭配 DoWhy、EconML)
- LLM 做反事实推理(结合 SCM 结构因果模型)
- 额外补充:双重差分法
因果推断:
传统机器学习方法,如决策树、支持向量机、XGBoost等,都是独立、具体的算法工具,对应固定的建模方法。但因果推断并非单一算法或模型,而是一套通用的完整统计分析框架。
因果推断的核心是推断一个变量、干预措施或政策对另一变量的真实影响,用于量化各类行为、政策、疗法的实际效果。
因果推断的发展起源与理论体系
相较于成熟的统计学、机器学习学科,因果推断是一门新兴学科,整套标准化的理论与数学描述体系,仅在近30余年才逐步成型。在此之前,学界研究数据、机器学习问题时,甚至没有一套规范的数学语言来定义和描述因果问题。
20世纪80年代末至90年代初,三位学者奠定了因果推断的核心理论基础,三人基于不同研究领域搭建了差异化又相互关联的因果框架:
- Rubin:流行病学家,从流行病学研究场景出发,构建了适配医学、公共卫生领域的因果分析框架;
- Judea Pearl:计算机科学家,依托图模型、图网络的计算机思维,搭建了因果推断的图形化理论体系;
- Donald Rubin:统计学家,聚焦计量经济学问题,以估计方程、等式估计为核心,形成了专属的因果描述体系。

理论诞生初期,因果推断并未受到学界重视,研究热度极低,直至近十几年,才逐步成为人工智能、数据分析领域的核心研究热点。
因果推断的爆火,与机器学习的迭代升级密不可分。早期机器学习的核心任务是模式识别,属于人工智能的基础阶段。如今人脸识别、手写识别等基础识别任务的算法精度已全面超越人类,模式识别技术基本成熟、趋于饱和。
机器学习由此进入全新发展阶段:不再局限于“识别已知模式”,开始追求逻辑推理、因果溯源。而因果推断正是支撑这一进阶研究的核心工具。
目前因果推断学科发展尚未成熟,没有统一的工业标准,但凭借不可替代的分析价值,已快速从科研领域落地到工业场景,是当下极具潜力的前沿研究方向。
比如大数据时代的到来,让因果推断的价值被彻底激活。
互联网平台(微信、淘宝等)积累的海量数据均为观测数据,是平台无干预、被动记录的用户行为数据。
这类数据仅能体现变量的表面关联,无法直接反映内在逻辑,传统统计方法和机器学习模型,只能挖掘数据相关性,无法区分虚假关联、真实关联与因果关系。而因果推断框架可以突破这一局限,从复杂的观测数据中拆解多变量之间的真实因果逻辑,解决传统统计方法无法攻克的难题。
因果推断并非颠覆传统统计与概率理论,而是对其的拓展与包容,两套体系可以兼容互补。
相关性 ≠ 因果性
统计学最重要的核心结论之一:数据的相关性,完全不等同于因果性。传统机器学习模型大多基于相关性建模,用于预测任务效果优异,但一旦用于决策判断,极易产生荒谬的结论。我们可通过多个真实案例直观理解:
预测不等于因果,因果关联更像是一种有向的路径,我们观察到的关联(总体关联)实际上是多种关联的混合体(包含了因果关联和混杂关联)。 —- 相关性只是关联性的一种类型,相关性衡量的是线性统计依赖性,而额外的混杂关联导致相关性不等于因果性。
- 美国航空航天科研经费支出与人群窒息、上吊死亡人数高度逐年正相关,但二者无任何因果关系,减少科研经费无法降低死亡人数;

- 尼古拉斯·凯奇主演电影数量与泳池溺水死亡人数高度相关,仅为数据巧合,无内在逻辑;

- 国民奶酪消耗量与床单窒息死亡人数高度相关,属于虚假关联;

因果关系的验证逻辑与局限
判断变量间是否存在因果关系,最直接的方式是施加外部干预:人为改变某一变量,观察另一变量是否随之发生对应变化。
但现实中,大量场景无法开展干预实验,存在伦理、成本、可行性等诸多限制。例如,无法通过让孕妇主动吸烟的实验,验证吸烟对孕妇健康的影响。
因果推断的核心研究价值,正是在无法人为干预的场景下,依托观测数据,科学挖掘变量间的真实因果关系。
相关性模型的适用边界 . 基于相关性的传统模型并非无用,它有明确的适用边界:仅面向纯预测任务时,相关模型完全可用,不需要区分变量间因果方向。
举例:发电量与经济 GDP 高度相关,真实因果是经济活跃带动用电需求、推高发电量;但我们无需探明因果,仅凭发电量就能反向预测经济走势,该用法在预测场景合理。
但一旦跳出预测、落地到干预决策,直接依靠相关性指导行动,极易产生决策谬误。例如不能仅凭二者正相关,就通过强行加大发电量来拉动经济。
传统统计框架的局限:辛普森悖论
传统统计仅能分析数据间的相关性,无法识别变量间的真实因果关系,辛普森悖论就是该缺陷的典型体现。
辛普森悖论指:同一组数据中,整体汇总数据得出的变量关联结论,与按维度拆分后的分组结论完全相反。面对这类矛盾,传统统计方法无法判断哪一组结论有效,也就无法挖掘背后的因果逻辑。
案例 1:伯克利大学招生争议 1973 年,加州大学伯克利分校被指控研究生招生存在性别歧视。
- 整体数据:男性申请者约 8000 人,录取率 44%;女性申请者约 4000 人,录取率 35%。单看整体,容易判定学校偏袒男性。
- 按院系分组:拆分到各个院系后,绝大多数院系的女性录取率高于男性,仅少数院系男性录取率略高。
不同院系的报考热度、录取门槛差异很大,女性更倾向报考竞争激烈的专业。传统统计忽略了院系这一关键干扰因素,仅凭整体数据得出错误结论,无法判断是否存在真实歧视。


案例 2:锻炼量与胆固醇含量 研究锻炼量和人体胆固醇含量的关系,以年龄作为分组依据:
- 整体数据:不区分年龄时,锻炼量越大,胆固醇含量越高,二者呈正相关。
- 按年龄分组:固定年龄后,所有年龄段均表现为锻炼量越大,胆固醇含量越低,二者呈负相关。
造成结论反转的核心是年龄:年龄会同时影响锻炼习惯与胆固醇水平。高龄人群本身胆固醇基线更高,且普遍锻炼更多;低龄人群胆固醇偏低、锻炼也更少。传统统计无法剥离年龄的干扰,自然无法得出 “锻炼可以降低胆固醇” 的真实因果关系。


量化案例:药物疗效验证 研究某药物对疾病恢复的作用,以性别分组,是解释悖论原理的典型量化场景。
- 男性:87 人服药,恢复率 93%;270 人未服药,恢复率 87%。服药恢复率更高。
- 女性:263 人服药,恢复率 73%;80 人未服药,恢复率 69%。服药恢复率同样更高。 分组结论:无论男女,该药物均可提升恢复概率,药物有效。
整体结论:不服药恢复效果更好,药物无效。 两组结论完全相悖,传统统计无法解释这一矛盾。

悖论原理分析
变量设定—-设:
X
X
X= 性别(1 = 男性,0 = 女性),
Y
Y
Y= 是否恢复(1 = 恢复,0 = 未恢复),
Z
Z
Z= 是否服药(1 = 服药,0 = 未服药)。
定义:
-
A
A
A:全体服药人群恢复率,B
B
B:全体未服药人群恢复率 -
1
1
1:男性服药恢复率,2
2
2:男性未服药恢复率 -
3
3
3:女性服药恢复率,4
4
4:女性未服药恢复率 数据可总结为不等式:1
>
2
、
3
>
4
1>2、3>4
1>2、3>4(分组服药有效),但A
<
B
A<B
A<B(整体服药无效)。



概率本质 整体恢复率是分组概率的凸组合(线性加权),权重由各组样本占比决定:
-
A
=
Q
⋅
1
+
(
1
−
Q
)
⋅
3
A = Q\\cdot1 + (1-Q)\\cdot3
A=Q⋅1+(1−Q)⋅3,Q
Q
Q 代表服药人群中男性的占比,取值范围[
0
,
1
]
[0,1]
[0,1]; -
B
=
Q
′
⋅
2
+
(
1
−
Q
′
)
⋅
4
B = Q'\\cdot2 + (1-Q')\\cdot4
B=Q′⋅2+(1−Q′)⋅4,Q
′
Q'
Q′ 代表未服药人群中男性的占比。
A
A
A 的数值落在
1
1
1 和
3
3
3 之间,
B
B
B 的数值落在
2
2
2 和
4
4
4 之间。当权重分布发生变化,整体结果就可能和分组结果相反。
本案例中,性别是典型的混淆变量,它同时影响两个关键环节:
- 样本分布:服药人群里女性占比极高(
Q
Q
Q 趋近于 0),使得整体服药恢复率A
A
A 更贴近女性服药恢复率3
3
3; - 基线差异:无论是否服药,女性整体恢复能力天然弱于男性(
3
<
1
、
4
<
2
3<1、4<2
3<1、4<2)。
大量恢复能力偏弱的女性集中在服药组,直接拉低了整体服药恢复率,掩盖了药物本身的效果。

总结
解决思路:想要判断因果关系,必须对混淆变量进行控制(如按维度分组)。而系统识别混杂因子、校正数据偏差、推导因果机制,正是因果推断的核心任务。
并非所有场景都能采信分组数据
通过前文药物与性别的案例,我们得出结论:存在混淆变量时,需要通过分组子数据(subpopulation data)剔除干扰,才能得到真实因果关系。但这并不代表“分组数据永远正确、整体数据永远错误”。
辛普森悖论的判定核心,不取决于数据形式,而取决于变量间的因果结构。同样是三变量结构,只要因果箭头关系改变,最终采信的数据维度就会完全反转,这也是传统统计框架最大的盲区。
新案例:药物的双重作用机制
本次案例包含三个核心变量:服药、血压、疾病恢复,变量的因果结构发生了本质变化: 药物对疾病恢复存在双重双向作用:
简单来说:服药既伤身体,又能通过降压治病,最终疗效是两种作用的叠加结果。

我们按血压高低对人群分组,对比两组数据结论:
按血压分组数据(细分样本)
- 低血压人群:服药恢复率87%,未服药恢复率93%,服药效果更差;
- 高血压人群:服药恢复率69%,未服药恢复率73%,服药效果更差。
分组结论:无论高血压、低血压人群,服药均不利于病情恢复,药物无效且有害。
整体汇总数据(全量样本) 整体数据样本均衡:服药、未服药患者各350人。服药群体恢复率更高,未服药群体恢复率更低。
整体结论:服药可提升疾病恢复概率,药物整体有效。
两组结论再次完全相悖,但本次场景中,正确结论为采信整体数据、舍弃分组数据,与前文性别混淆案例完全相反。
本案例中,血压不是混淆变量,而是中介变量,这是和上一案例的本质区别:
之前的案例中,性别是前置混淆变量,同时干预服药行为与恢复能力,分组可剔除干扰、还原真实因果;
本案例中,血压是药物起效的中间传导路径:药物 → 降低血压 → 促进恢复。若强行按血压分组、固定血压值,会产生严重误差:
分组后同组人群血压趋于一致,药物“降低血压、促进恢复”的正向间接作用被完全屏蔽,数据中仅剩余药物的毒性副作用。此时分组数据只体现了药物的单一负面影响,完全抹杀了药物的核心治疗价值,结论彻底失真。
而整体数据保留了完整的因果链路,同时包含药物的副作用与降压治病的正向作用,还原了药物的真实综合疗效。
结合两组正反辛普森悖论案例,可彻底暴露传统统计与传统概率计算的核心问题: 传统统计只看数据相关性、不看因果结构,无法区分变量是混淆变量还是中介变量,没有统一的判定标准:什么时候该分组、什么时候该看整体。 仅三个变量的简单场景,传统统计就会出现判定混乱、结论失真的问题,一旦变量数量增多、因果链路复杂化,传统方法将完全无法分析。
因果推断的核心价值:跳出数据表象,通过标准化的因果框架识别变量角色、梳理因果链路,精准判断数据取舍规则,解决传统统计无法破解的悖论问题。
图中的关联因果流动
在尚未引入因果逻辑时,概率图模型的纯统计框架,核心是解决高维联合分布建模时参数爆炸的问题,并通过两套核心假设(局部马尔可夫假设、最小性假设)建立 图结构 与 变量概率分布、独立性 / 依赖性 的对应关系。
传统联合分布建模的缺陷
概率链式法则对于任意一组随机变量
X
1
,
X
2
,
.
.
.
,
X
N
X_1,X_2,…,X_N
X1,X2,…,XN,联合概率分布都可以通过概率链式法则无条件分解,这是概率论的基础公式:
P
(
X
1
,
X
2
,
…
,
X
N
)
=
P
(
X
1
)
⋅
P
(
X
2
∣
X
1
)
⋅
P
(
X
3
∣
X
1
,
X
2
)
⋯
P
(
X
N
∣
X
1
,
X
2
,
…
,
X
N
−
1
)
P(X_1,X_2,\\dots,X_N) = P(X_1) \\cdot P(X_2|X_1) \\cdot P(X_3|X_1,X_2) \\cdots P(X_N|X_1,X_2,\\dots,X_{N-1})
P(X1,X2,…,XN)=P(X1)⋅P(X2∣X1)⋅P(X3∣X1,X2)⋯P(XN∣X1,X2,…,XN−1)
从第一个变量开始,后一个变量依次对前面所有变量做条件概率。以 4 个二元变量(变量仅取 0、1 两个值,现实中分类变量最常见形式)为例,分解式为:
P
(
X
1
,
X
2
,
X
3
,
X
4
)
=
P
(
X
1
)
P
(
X
2
∣
X
1
)
P
(
X
3
∣
X
2
,
X
1
)
P
(
X
4
∣
X
3
,
X
2
,
X
1
)
P(X_1,X_2,X_3,X_4)=P(X_1)P(X_2|X_1)P(X_3|X_2,X_1)P(X_4|X_3,X_2,X_1)
P(X1,X2,X3,X4)=P(X1)P(X2∣X1)P(X3∣X2,X1)P(X4∣X3,X2,X1)
核心问题:参数数量指数级增长
概率模型的本质是学习分布中的未知参数,我们通过计算二元变量场景下的参数数量,直观理解缺陷:
我们逐段计算 4 个二元变量对应的参数总量:
P
(
X
1
)
P(X_1)
P(X1):仅 1 个变量,参数数 =
1
\\boldsymbol{1}
1
P
(
X
2
∣
X
1
P(X_2|X_1
P(X2∣X1):
X
1
X_1
X1 有 2 种取值,每种取值下对应一组
X
2
X_2
X2 的概率,参数数 =
2
×
1
=
2
2 \\times 1 = \\boldsymbol{2}
2×1=2
P
(
X
3
∣
X
1
,
X
2
)
P(X_3|X_1,X_2)
P(X3∣X1,X2):
X
1
,
X
2
X_1,X_2
X1,X2 组合共
2
2
=
4
2^2=4
22=4 种,参数数 =
4
×
1
=
4
4 \\times 1 = \\boldsymbol{4}
4×1=4
P
(
X
4
∣
X
1
,
X
2
,
X
3
)
P(X_4|X_1,X_2,X_3)
P(X4∣X1,X2,X3):
X
1
,
X
2
,
X
3
X_1,X_2,X_3
X1,X2,X3 组合共
2
3
=
8
2^3=8
23=8 种,参数数 =
8
×
1
=
8
8 \\times 1 = \\boldsymbol{8}
8×1=8 总参数数:
1
+
2
+
4
+
8
=
15
1+2+4+8 = \\boldsymbol{15}
1+2+4+8=15
推广到 N 个二元变量:
最后一项
P
(
X
N
∣
X
1
,
…
,
X
N
−
1
)
P(X_N|X_1,\\dots,X_{N-1})
P(XN∣X1,…,XN−1) 的参数数为
2
N
−
1
2^{N-1}
2N−1; 整体参数总数为
2
N
−
1
2^N -1
2N−1,属于指数增长。
在现实场景(医疗指标、用户特征、图像像素等)中,变量数量常常达到几十、上百个,传统链式分解会导致:
- 参数数量爆炸,无法存储、训练、估计;
- 高维条件概率表极度稀疏,样本不足时模型完全失效。
这就是传统联合分布建模的致命缺陷,也是贝叶斯网络被提出的核心动因:利用变量间的依赖结构,简化概率分解、减少参数。
局部马尔可夫假设
贝叶斯网络用有向无环图(DAG) 编码变量之间的依赖关系:图中节点 = 随机变量,有向边 = 直接依赖关系。而局部马尔可夫假设是连接 图结构 和 变量独立性 的核心规则。
局部马尔可夫假设:在有向无环图(DAG)中,给定一个节点的所有父节点,该节点与自身所有非后代节点相互条件独立。

沿用 4 变量场景,假设 DAG 结构为:
X
1
→
X
2
→
X
3
→
X
4
X_1 \\to X_2 \\to X_3 \\to X_4
X1→X2→X3→X4
-
X
4
X_4
X4 的父节点只有X
3
X_3
X3; -
X
1
、
X
2
X_1、X_2
X1、X2 是X
4
X_4
X4 的非后代节点(X
4
X_4
X4 没有子节点,无后代)。
根据局部马尔可夫假设:给定父节点
X
3
X_3
X3,
X
4
X_4
X4 与
X
1
、
X
2
X_1、X_2
X1、X2 条件独立。因此原条件概率可直接简化:
P
(
X
4
∣
X
1
,
X
2
,
X
3
)
=
P
(
X
4
∣
X
3
)
P(X_4|X_1,X_2,X_3) = P(X_4|X_3)
P(X4∣X1,X2,X3)=P(X4∣X3)
局部马尔可夫假设的本质:用人工定义的图结构(先验知识),剔除变量间冗余的依赖关系,把高维条件概率降为低维,从根源上缓解参数爆炸问题。
贝叶斯网络因子分解
在局部马尔可夫假设的基础上,我们可以推导出贝叶斯网络专属的概率分解规则,这是贝叶斯网络进行概率计算的核心公式。
贝叶斯网络因子分解:有向无环图(DAG)对应的变量联合分布,可分解为所有节点的条件概率乘积;每个节点的概率仅以其在图中的父节点为条件。
通用公式:
P
(
X
1
,
X
2
,
…
,
X
N
)
=
∏
i
=
1
N
P
(
X
i
∣
Pa
(
X
i
)
)
P(X_1,X_2,\\dots,X_N) = \\prod_{i=1}^N P\\big(X_i \\;\\big|\\; \\text{Pa}(X_i)\\big)
P(X1,X2,…,XN)=i=1∏NP(Xi
Pa(Xi))
Pa
(
X
i
)
\\text{Pa}(X_i)
Pa(Xi) 依旧表示节点
X
i
X_i
Xi 的全部父节点。
案例对比(链式 DAG:
X
1
→
X
2
→
X
3
→
X
4
X_1 \\to X_2 \\to X_3 \\to X_4
X1→X2→X3→X4)
- 原始链式分解(无结构约束):
P
=
P
(
X
1
)
P
(
X
2
∣
X
1
)
P
(
X
3
∣
X
1
,
X
2
)
P
(
X
4
∣
X
1
,
X
2
,
X
3
)
P=P(X_1)P(X_2|X_1)P(X_3|X_1,X_2)P(X_4|X_1,X_2,X_3)
P=P(X1)P(X2∣X1)P(X3∣X1,X2)P(X4∣X1,X2,X3)
- 贝叶斯网络分解(受 DAG 约束):
P
=
P
(
X
1
)
P
(
X
2
∣
X
1
)
P
(
X
3
∣
X
2
)
P
(
X
4
∣
X
3
)
P=P(X_1)P(X_2|X_1)P(X_3|X_2)P(X_4|X_3)
P=P(X1)P(X2∣X1)P(X3∣X2)P(X4∣X3)
计算参数数量:
1
+
2
+
2
+
2
=
7
1+2+2+2 = \\boldsymbol{7}
1+2+2+2=7,远小于传统建模的 15 个参数,再次验证降参效果。
局部马尔可夫假设
⟺
\\iff
⟺ 贝叶斯网络因子分解
这是贝叶斯网络的理论基石,两层含义:
二者是同一套规则的两种表达形式 局部马尔可夫假设:从变量独立性角度描述规则; 贝叶斯因子分解:从概率计算公式角度描述规则。 二者可以互相推导,完整数学证明可参考《Probabilistic Graphical Models》(Koller & Friedman)第三章。
最小性假设
局部马尔可夫假设解决了 参数化简、独立性判断 的问题,但存在模型歧义:同一个概率分布,可以对应多张不同的 DAG,且部分图的边失去实际意义。为了解决这个问题,学界补充了最小性假设。
最小性假设的两部分构成
结合两部分约束,最小性假设从两个维度规范图与分布的匹配关系:
- 约束边的语义:
强制要求 有边 = 存在直接统计依赖 ,直接淘汰
X
→
Y
X\\to Y
X→Y但
X
、
Y
X、Y
X、Y 独立 这类不合理情况,让图中的边具备实际意义。
- 唯一选择最优图(最小边原则):
对于同一个概率分布,在所有满足马尔可夫假设的 DAG 中,优先选择边数量最少的图。
总结: 马尔可夫假设:负责解读统计独立性 —- 从 DAG 结构中快速判断:哪些变量无条件独立、哪些变量条件独立,服务于概率推理、计算化简。 最小性假设:负责解读统计依赖性 —- 保证 图上的边 对应真实的变量依赖,同时实现 一个分布尽可能对应唯一一张图,提升模型可解释性。
补充:因果边假设
因果的定义:若变量X发生变化,会主动引起变量Y随之发生变化,则称 X 是 Y 的原因。
因果定义中的 “引起”,是一种机制层面的作用关系,不是单纯的数据同步。统计模型只能从数据中观测到 “同步变化”,而因果模型旨在挖掘背后的作用机制。 —— 统计相关性仅描述两两个变量同步变化,是双向,无方向的关系。因果性描述变量间主动改的干预影响,是单向有明确方向的关系。 —– 例:吸烟量增加(X)会导致肺病风险上升(Y),X 是Y的原因;但肺病发作不会反向导致人增加吸烟量(常规场景下),因果方向不可逆。
因果图依然使用有向无环图(DAG) 作为载体,节点依旧对应随机变量,但我们需要为图中的有向边(箭头) 赋予全新的因果含义,这一规则就是因果边假设。
因果边假设是整个因果图体系的灵魂:没有它,DAG 就只是普通的概率图;
因果图建模的标准框架:
DAG
+
马尔可夫假设
+
因果边假设
\\boldsymbol{\\text{DAG} + \\text{马尔可夫假设} + \\text{因果边假设}}
DAG+马尔可夫假设+因果边假设
因果图的载体:节点存储研究变量,有向边承载变量间的作用关系;
强制无环:现实世界不存在逻辑自洽的 “因果循环”(比如 “结果反过来成为原因” 会形成逻辑悖论),因此因果模型必须规避环路。
完全继承自贝叶斯网络(统计层规则)。 作用:编码变量之间的统计独立性 / 关联性,简化联合概率分解、判断关联传播路径。
因果作用一定会产生统计关联,因此统计层的独立性规则在因果模型中依然完全生效,无需抛弃。
因果层的核心新增规则。
为有向边赋予单向因果语义,明确 “原因→结果” 的流向,实现从 “统计关联” 到 “因果推断” 的升级。
最小性假设无需单独使用
结合因果边假设,可推导出:因果边假设天然蕴含最小性假设的第二部分,同时,因果图框架本身已经包含马尔可夫假设(最小性假设第一部分)。
根据因果边假设:有向边
父节点
→
子节点
\\text{父节点} \\to \\text{子节点}
父节点→子节点代表 父节点是子节点的直接原因; 根据因果的定义:原因发生变化,必然会引起结果发生变化; 变量 “一者变化带动另一者变化”,在统计学上就等价于两个变量存在统计依赖性; 由此可得:只要 DAG 中存在有向边(存在直接因果),相邻节点就一定存在统计依赖。
综上:最小性假设的两条约束,全部被因果图的基础假设覆盖,因此在因果建模中,不需要再单独引入、使用最小性假设。
三大基础结构与关联传播规则
所有复杂有向图均可拆解为三类三节点基础结构,关联性(统计依赖性)的传播规则是本节重点。
X
1
→
X
2
→
X
3
X_1 \\to X_2 \\to X_3
X1→X2→X3
通过因果边假设我们知道
X
1
X_1
X1和
X
2
X_2
X2是相关的,而
X
1
X_1
X1和
X
3
X_3
X3通常也是相关的(统计依赖性,对称),关联性沿路径双向流动;
以中间节点
X
2
X_2
X2为条件:路径被阻断,
X
1
X_1
X1与
X
3
X_3
X3条件独立;

X
1
←
X
2
→
X
3
X_1 \\leftarrow X_2 \\to X_3
X1←X2→X3
X
1
X_1
X1与
X
3
X_3
X3因共享共同原因
X
2
X_2
X2产生关联;
以中间节点
X
2
X_2
X2为条件:路径被阻断,
X
1
X_1
X1与
X
3
X_3
X3条件独立;

X
1
→
X
2
←
X
3
X_1 \\to X_2 \\leftarrow X_3
X1→X2←X3节点
X
2
X_2
X2称为对撞节点,该结构规则与前两者完全相反:
对撞节点天然阻断路径,
X
1
X_1
X1与
X
3
X_3
X3相互独立;
以对撞节点
X
2
X_2
X2(或其后代节点)为条件:路径被打通,诱导出新的关联性;
实例解释: 设
X
1
X_1
X1= 外貌帅气、
X
3
X_3
X3= 性格善良、
X
2
X_2
X2= 处于恋爱状态。总体人群中,外貌与性格相互独立;若限定 “单身人群”(对
X
2
X_2
X2条件化),帅气的人大概率性格不友善,二者出现明显负相关。这是典型的选择偏误。
如果对一个对撞节点的后代进行条件化会发生什么?
当我们对一个对撞节点进行条件化时,他会在其父节点之间诱导出关联,这里
X
2
X_2
X2是一个对撞节点,而
X
4
X_4
X4是一个后代,这通常会在
X
1
X_1
X1和
X
3
X_3
X3之间诱导出关联
对
X
4
X_4
X4进行条件化,很可能会提供关于
X
2
X_2
X2的信息,等同于对
X
2
X_2
X2进行条件化的一个代理,而当我们对
X
2
X_2
X2进行条件化的时候,就会在
X
1
X_1
X1和
X
3
X_3
X3之间诱导出关联。
根据上面的内容,我们如何在三种不同的三节点图中,阻断路径?
路径阻断判定规则(给定条件集Z)
一条路径被Z阻断,满足以下任一条件:
- 路径中存在链 / 分叉结构的中间节点,且该节点属于条件集Z;
- 路径中存在对撞节点,且该节点及其所有后代均不属于条件集Z。
不满足上述条件的路径,即为未阻断路径,关联性可自由传播。
D-分离 (d-separation practice)
若节点集X与节点集Y之间的所有路径都被条件集Z阻断,则称X和Y被Z D 分离。

D 分离典型例题(判断T与Y是否被 D 分离)
以条件集(灰色节点)为判断依据,结论汇总:
M
1
M_1
M1为条件:仍存在其他未阻断路径,未被分离;
W
2
W_2
W2 /
W
3
W_3
W3为条件:对应路径被阻断,被分离;
M
1
、
W
2
、
W
3
M_1、W_2、W_3
M1、W2、W3为条件:被分离;
X
2
X_2
X2为条件:打通原阻断路径,未被分离;
X
1
、
X
2
X_1、X_2
X1、X2为条件:重新阻断路径,被分离;
X
2
X_2
X2为条件:
X
2
X_2
X2打通对撞路径,未被分离;
结构因果模型(SCM)与潜在结果框架(PO)
SCM是一套从 “因果结构” 出发的理论,核心是回答 “为什么会发生”,以及 “如果主动干预,结果会怎么变”。
普通数学等式具备对称性,无法表达因果方向;结构方程专门刻画因果关系,标准形式:
X
:
=
f
(
p
a
(
X
)
,
U
)
X := f(pa(X), U)
X:=f(pa(X),U)
-
p
a
(
X
)
pa(X)
pa(X):X 的直接原因(因果图中的父节点); - U:未观测随机噪声(外生变量),因果图中常用虚线节点表示;
等式右侧为诱因、左侧为结果,明确单向因果关系。

图模型用于直观刻画因果结构,而结构因果模型通过严谨的数学函数,精准定义变量间的因果生成机制,二者一一对应,是因果推断的核心基础工具。
现实世界的真实因果机制往往是复杂的物理、生化、社会过程,无法直接用于研究分析。因此我们需要对真实因果关系进行抽象简化,通过数学变量+函数关系刻画变量间的因果生成规则,这套简化的抽象模型,即为结构因果模型。
SCM的核心价值:剥离复杂的真实物理过程,保留核心因果逻辑,实现因果关系的量化分析与可视化。
包含三个核心概念:因果图(用箭头画出变量之间的因果关系),do算子(区分“观察到的关联”和“主动干预的因果效应”),以及 反事实 counterfactuals(如果当初不一样,现在会怎样)。
如何理解观察到的关联和主动干预的因果效应之间的区别?
不写 do 算的是观察到的相关性(被混杂变量污染,假因果)。 —— 写 do 算的是主动干预后的因果效应(消除混杂,真因果)。
| P(Y∣X=1) | 条件概率(观察) | 看到 X=1 时,Y 发生的概率 | 被动观察,包含混杂偏差 |
| P(Y∣do(X=1)) | do 算子(干预) | 强行让 X=1 时,Y 发生的概率 | 主动干预,消除混杂 |
当你写
d
o
(
X
)
do(X)
do(X) 时,强制切断所有指向 X 的箭头,让 X 不受任何其他变量影响!
可以把SCM看成理论层,负责因果图、因果识别、能不能算因果。 后面PO可以看成统计层,负责效应计算、怎么算数值、ATE、后面详细展开。
适用场景:当你需要理解变量间的因果链条、分析干预的长期影响、或者做反事实假设时,SCM 是更直观的框架。比如研究 “教育水平对收入的影响”,可以用因果图画出教育、家庭背景、能力、收入之间的关系,再用 do 算子消除混杂偏差。
混杂变量与中介变量的区别是什么?
简单来说,混杂变量(Confounder):是 第三者 ,同时影响原因和结果,让两者产生虚假的相关性,不是因果链条里的一环。中介变量(Mediator):是 中间环节,原因通过它影响结果,是因果链条里的必经之路。
通过下面的图来详细展示两者之间的区别:

怎么在实际数据中理清它们?
- 控制 Z 后,X 和 Y 的相关性消失:Z 大概率是混杂变量(消除了虚假关联)。
- 控制 Z 后,X 和 Y 的相关性减弱但未消失:Z 大概率是中介变量(部分因果效应被切断了)。
- 控制 Z 后,X 和 Y 的相关性完全消失:Z 是完全中介变量(X 对 Y 的影响全部通过 Z 传递)。
潜在结果框架(PO)是一套从 “个体处理效应” 出发的统计框架,核心是回答 “这个干预到底有没有效果”,尤其擅长处理实验数据。
它也包含三个核心概念:潜在结果(对每个个体,定义两个可能的结果),处理效应 treatment effect(计算两个结果的差值,代表干预对个体的真实影响),随机对照实验RCT与倾向得分(消除混杂偏差)
观察类研究最大痛点就是 无法排除未观测混杂因子,而随机实验从根源上规避混杂。 协变量平衡:
- 定义:所有协变量X在治疗组、对照组的条件分布一致,即
P
(
X
∣
T
=
1
)
=
P
(
X
∣
T
=
0
)
P(X|T=1)=P(X|T=0)
P(X∣T=1)=P(X∣T=0)。 - 推导:随机化使治疗 T 与所有协变量 X 相互独立,两组协变量分布等价于边缘分布,自然达成平衡。
- 结论:协变量平衡后,观测关联 = 因果效应,可用组间结果差异直接代表治疗的因果作用。

适用场景:当你需要量化干预的效果、做 A/B 测试、评估政策或药物的有效性时,PO 框架更直接。比如互联网公司的 A/B 测试,本质就是用 PO 框架计算新功能(处理)和旧功能(对照)对用户留存的平均处理效应。
DoWhy、NOTERAS 与 LLM × 因果
DoWhy 因果推理的“工程脚手架”
DoWhy 是因果推理的“工程脚手架”,它把 Pearl 和 Rubin 两套框架包装好的 “因果分析流水线”,帮你从数据直接跑出因果效应,不用自己写复杂公式。
包含四个步骤:(Model → Identify → Estimate → Refute)
Model(建模)
- Model(建模):把业务问题转化成因果模型,定义:Treatment 处理变量 T(你要研究的干预 / 动作(是否投放广告:1 = 投,0 = 不投))、Outcome 结果变量 Y、Confounders 混杂变量 X。
比如下面这个因果图结构(Pearl框架)
年龄/收入/季节(W) → 投放广告(T):
年龄/收入/季节(W) → 销售额(Y)
投放广告(T) → 销售额(Y)
你只需要告诉代码:T/Y/W 是哪些列,它自动构建因果图;也可以手动画图,保证符合业务逻辑。
Identify(识别)
- Identify(识别):用后门 / 前门 / 工具变量准则,判断 “能不能从观测数据算出因果效应”,输出待估的因果量。
日常拿到的表格数据,只能统计,比如【看到投放广告时销售额是多少】,对应普通条件概率
P
(
Y
∣
T
)
P(Y|T)
P(Y∣T);但我们真正想要的是干预结果:
P
(
Y
∣
d
o
(
T
)
)
P(Y\\mid do(T))
P(Y∣do(T))(强行控制广告投放后,销售额的分布)。
P
(
Y
∣
d
o
(
T
)
)
P(Y\\mid do(T))
P(Y∣do(T)) 是因果层面的量,原始统计软件 / 常规回归算不出来,do 算子无法直接用观测数据计算。
识别(Identify)的本质 就是依靠因果图 + Pearl 的规则,把带 do 算子的因果表达式,等价转换成只含普通条件概率的表达式。
model 阶段只定义了变量和因果图结构;Identify 也还在理论阶段,没有碰数据,它只分析变量之间的连接关系,路径类型,不需要读取数据表,也不需要计算均值和方差。
在识别这部分,需要补充模块化假设这个概念
因果机制定义:在下图中,我们可以把因果图中某个特定变量
X
i
X_i
Xi 的因果机制看作是该变量所有父节点以及它们指向该变量的箭头。
模块化假设的直观理解:
对一组变量 S 执行干预时,仅改变集合 S 内变量的因果机制,其余所有变量的生成规则、条件分布保持不变,干预具有局部性。
所以说因果机制是模块化的,改变一个变量的因果机制,不会改变任何其他变量的因果机制.
假设观测数据是由左图生成的,右图是某个干预分布的图,挑选一个想要干预的变量,把这个变量设定为一个特定值。 —– 当我们查看干预数据时,它在因果图中将不再有父节点。 —– 在这个干预分布中,唯一发生变化的因子就是干预的那个变量的因子。(此外,称这个删除了指向被干预变量T的边的图为 操纵图)

这里需要补充关于后门,前门准则相关的概念帮助更好的理解:
后门准则(Backdoor Criterion)
后门准则最常用,所以这里先介绍:
针对处理变量 T 和结果变量 Y:找到一组可观测变量集合 Z,满足两个条件:
满足以上两条 → 后门准则成立,因果效应可识别。
后门路径:从处理变量 T 出发、存在指向 T的入箭头、最终连通结果 Y 的路径,这类路径传递非因果的虚假关联;(
T
→
M
→
Y
T \\to M \\to Y
T→M→Y 是有向路径,因果关联沿着这条路径流动)。
观测数据无法像干预一样直接删除 T 的入边,因此通过对协变量条件化阻断所有后门路径,从而分离出纯粹的因果效应。
下图中 红色是后门路径,我们想要阻断这些路径,以便分离出因果关联。 —– 移除所有指向T的边,就相当于移除了所有这些后门路径。

在识别阶段需要进行do算子公式转换,输出【估计公式】:
识别环节会推导出标准的后门调整公式(消去 do 算子):
E
[
Y
∣
d
o
(
T
)
]
=
∑
w
E
[
Y
∣
T
,
W
=
w
]
⋅
P
(
W
=
w
)
\\mathbb{E}\\big[Y \\,\\big|\\, do(T)\\big] = \\sum_{w} \\mathbb{E}\\big[Y \\,\\big|\\, T, W=w\\big] \\cdot P(W=w)
E[Y
do(T)]=w∑E[Y
T,W=w]⋅P(W=w)
-
E
[
Y
∣
T
,
W
=
w
]
\\mathbb{E}[Y \\mid T, W=w]
E[Y∣T,W=w]:固定混杂变量 W(比如只看【夏季】这个分层),计算同一分层内,投放 / 不投放广告对应的平均销售额; -
P
(
W
=
w
)
P(W=w)
P(W=w):每个分层(季节 / 人群)在整体数据中的占比; - 最后按占比加权求和,得到纯干预效应。
这就是识别环节最终输出的因果估计公式,下一步 Estimate 只需要把原始数据套进这个公式计算即可。
下面举一个实际案例:钠摄入量对血压的因果效应
- 结果 Y:收缩压(连续变量);处理 T:钠摄入量(二值化:>3.5mg 取 1,反之取 0);
- 协变量:W(年龄,T 与 Y 的共同原因,混杂变量)、Z(尿蛋白排泄量,T 与 Y 的共同结果,碰撞节点);
- 基准真值:模拟数据的真实平均处理效应 (ATE=1.05)。
W 是需要调整的混杂变量,Z 是碰撞节点(T 的后代),绝对不能对 Z 做条件调整。
- 不做任何调整:估计值 = 5.33,误差 407%(混杂未处理,严重高估);
- 调整全部协变量((W+Z)):估计值 = 0.85,误差 19%(碰撞偏差导致失真);
- 仅调整混杂变量 W:估计值≈1.0502,误差 0.02%(估计无偏,微小误差仅来自抽样随机性)。

举一个反例,什么时候不满足后门准则,导致不可识别,流程终止:
除了可观测的 W,还存在无法观测的隐藏混杂 U(比如用户天生消费偏好,数据里没有记录)。
新因果图:
U
→
T
,
U
→
Y
,
W
→
T
,
W
→
Y
,
T
→
Y
U\\rightarrow T,\\; U\\rightarrow Y,\\; W\\rightarrow T,\\; W\\rightarrow Y,\\; T\\rightarrow Y
U→T,U→Y,W→T,W→Y,T→Y
此时新增一条后门路径:
T
←
U
→
Y
T \\leftarrow U \\rightarrow Y
T←U→Y
- U 观测不到,我们无法控制它;
- 所有后门路径无法被完全阻断 → 不满足后门准则。
✅ 结果:DoWhy 在 Identify 阶段直接判定 不可识别,抛出提示:Cannot identify causal effect,整个分析流程提前终止,永远算不出可靠的因果效应。
前门准则(Frontdoor Criterion)—— 应对【有隐藏混杂,但存在中介】
当存在无法观测的隐藏混杂,后门准则失效,但 T 和 Y 之间有一条完整的中介链条(Chain 结构)时,使用前门准则。

比如研究:吸烟 (T) → 肺癌 (Y)
- 问题:存在隐藏混杂 W(遗传体质),
W
→
T
,
W
→
Y
W\\rightarrow T,\\;W\\rightarrow Y
W→T,W→Y,后门路径断不掉; - 但存在完整中介:吸烟 → 肺部焦油沉积 (M) → 肺癌
(
T
→
M
→
Y
(T\\rightarrow M\\rightarrow Y
(T→M→Y)。
前门准则利用中介变量 M,绕开隐藏混杂,把含 do 的表达式转换成观测可计算的公式,实现因果效应识别。
在上面这张图中,我们有沿着有向路径
T
→
M
→
Y
T\\rightarrow M\\rightarrow Y
T→M→Y流动的因果关联,同时,有沿着后门路径
T
→
W
→
Y
T\\rightarrow W\\rightarrow Y
T→W→Y 的非因果关联。
前门调整的直观理解是 所有因果关联都通过点M来传递,如果我们只关注M 就可以分离出因果关联。一共分成三步:
我们想要处理
P
(
m
∣
d
o
(
t
)
)
P(m\\mid do(t))
P(m∣do(t)),把它变成一个不包含do算符的表达式。从图中可以看出 T到M没有后门路径。

在图中,可以通过对T做条件化,阻断路径
M
→
T
→
W
→
Y
M\\rightarrow T\\rightarrow W\\rightarrow Y
M→T→W→Y


前门准则使用条件如下所示:
- 完全中介:T到Y的所有因果路径都经过M;
-
T
→
M
T \\to M
T→M 无未阻断的后门路径; -
M
→
Y
M \\to Y
M→Y 的所有后门路径,均可通过对T条件化阻断。

边界分析
前面的内容一直是在“无混杂”的设定下进行研究的(条件可交换性,可忽略性或后门准则),下图中W是被观测的(所有的混杂因素),随后可以使用调整公式来识别因果效应,但如果我们有一些未观测的混杂因素U呢?

这样我们还需要对U进行 调整,但我们无法调整它,因为没有被观测到。所以我们只能调整观测W得到的估计值,与真实ATE(调整W+U)的差距;这部分的重点是如何量化图中两个等式的接近程度。通过弱假设缩小因果效应的可信范围,解决未观测混杂下的因果推断难题。
下面将介绍一些前置概念:
关于非参数边界的研究,很大程度上源于这样一个观点:无未观测混杂(No Unobserved Confounding)的假设是完全不现实的。
Manski定义了一个非常有用的概念,叫做“可信度递减定律”:假设强度 ↑ → 识别精度 ↑ → 结论可信度 ↓
- 强假设(完全无混杂):精准识别单点ATE,精度最高,但假设脱离现实,可信度低;
- 弱假设(无假设/单调性假设):仅能识别ATE区间(集合识别/部分识别),精度下降,但假设更贴合现实,结论可信度更高。

无混杂是一个非常强的假设,当我们有了它就可以使用调整公式识别空间中的一个特定点。换句话说,如果我们有无混杂假设,并且我们有无限的数据,从而可以完美的估计这些期望值,那么我们就可以将平均处理效应精确地识别为空间中的一个点。
然而,Manski认为无混杂假设太强了,所以他希望做更弱的假设,而更弱的假设不允许我们识别出那一个点是什么,但我们可以确定它位于某个点和另一个点之间,它位于哪个区间内。这与精确识别形成对比,这也称为部分识别(不依赖强无混杂假设,通过最弱假设划定ATE可信区间,假设越弱、结论越可信、精度越低;)。
无混杂假设这样的强假设会导致结论的可信度没有那么高,所以,我们可以通过提出更弱的假设来获得更可信的结论,作为交换,需要牺牲精度,最终只能识别一个区间而不是一个点。
观测-反事实分解
所有边界分析的通用核心公式,基于期望线性性质,把每一项都拆成两个部分(先以某个变量为条件,将其边缘化),把
E
[
Y
(
1
)
]
\\mathbb{E}\\left\\lbrack {Y\\left( 1\\right) }\\right\\rbrack
E[Y(1)] 拆成
P
(
T
=
1
)
E
[
Y
(
1
)
∣
T
=
1
]
+
P
(
T
=
0
)
E
[
Y
(
1
)
∣
T
=
0
]
P\\left( {T = 1}\\right) \\mathbb{E}\\left\\lbrack {Y\\left( 1\\right) \\mid T = 1}\\right\\rbrack + P\\left( {T = 0}\\right) \\mathbb{E}\\left\\lbrack {Y\\left( 1\\right) \\mid T = 0}\\right\\rbrack
P(T=1)E[Y(1)∣T=1]+P(T=0)E[Y(1)∣T=0]。
同时借助一致性假设,把
E
[
Y
(
1
)
∣
T
=
1
]
\\mathbb{E}\\left\\lbrack {Y\\left( 1\\right) \\mid T = 1}\\right\\rbrack
E[Y(1)∣T=1] 替换成
E
[
Y
∣
T
=
1
]
\\mathbb{E}\\left\\lbrack {Y \\mid T = 1}\\right\\rbrack
E[Y∣T=1] ,对于
Y
(
0
)
{Y\\left( 0\\right) }
Y(0)同理。
将ATE拆解为可观测项(可直接从数据计算) + 反事实项(不可观测、需要边界约束),所有边界推导均通过约束反事实项的上下限实现。

通用设定:潜在结果 Y₀、Y₁ 有界,取值范围 [A, B]。无任何约束时:ATE ∈ [A-B, B-A],区间长度 = 2(B-A)
无假设边界(最弱假设:仅约束潜在结果范围)
为得到边界,对分解式中的反事实项直接取全局最值约束,因为我们无法直接观测到他们。
E
[
Y
(
1
)
−
Y
(
0
)
]
=
π
E
[
Y
∣
T
=
1
]
+
(
1
−
π
)
E
[
Y
(
1
)
∣
T
=
0
]
\\mathbb{E}\\left\\lbrack {Y\\left( 1\\right) – Y\\left( 0\\right) }\\right\\rbrack = \\pi \\mathbb{E}\\left\\lbrack {Y \\mid T = 1}\\right\\rbrack + \\left( {1 – \\pi }\\right) {\\mathbb{E}\\left\\lbrack {Y\\left( 1\\right) \\mid T = 0}\\right\\rbrack }
E[Y(1)−Y(0)]=πE[Y∣T=1]+(1−π)E[Y(1)∣T=0]
−
π
E
[
Y
(
0
)
∣
T
=
1
]
−
(
1
−
π
)
E
[
Y
∣
T
=
0
]
]
\\left. {-\\left. {\\pi {\\mathbb{E}\\left\\lbrack {Y\\left( 0\\right) \\mid T = 1}\\right\\rbrack } – \\left( {1 – \\pi }\\right) \\mathbb{E}\\left\\lbrack {Y \\mid T = 0}\\right\\rbrack }\\right\\rbrack }\\right.
−πE[Y(0)∣T=1]−(1−π)E[Y∣T=0]] where
π
≜
P
(
T
=
1
)
\\pi \\triangleq P\\left( {T = 1}\\right)
π≜P(T=1)
目标是 为平均处理效应找到一个上界和一个下界,其中,不需要对观测项做任何处理(可以直接从观测分布中计算出来)。随后,对反事实项进行上界估计,因为结果变量的上界是b,所以在下面第一个公式中可以直接把b放进去作为上界。同理,需要对负的反事实项进行上界估计,因为是一个负值,要取可能得到的最小结果值,所有结果的下界都是a,代入到公式中。
E
[
Y
(
1
)
−
Y
(
0
)
]
≤
π
E
[
Y
∣
T
=
1
]
+
(
1
−
π
)
b
−
π
a
−
(
1
−
π
)
E
[
Y
∣
T
=
0
]
\\mathbb{E}\\left\\lbrack {Y\\left( 1\\right) – Y\\left( 0\\right) }\\right\\rbrack \\leq \\pi \\mathbb{E}\\left\\lbrack {Y \\mid T = 1}\\right\\rbrack + \\left( {1 – \\pi }\\right) b – {\\pi a} – \\left( {1 – \\pi }\\right) \\mathbb{E}\\left\\lbrack {Y \\mid T = 0}\\right\\rbrack
E[Y(1)−Y(0)]≤πE[Y∣T=1]+(1−π)b−πa−(1−π)E[Y∣T=0]
E
[
Y
(
1
)
−
Y
(
0
)
]
≥
π
E
[
Y
∣
T
=
1
]
+
(
1
−
π
)
a
−
π
b
−
(
1
−
π
)
E
[
Y
∣
T
=
0
]
\\mathbb{E}\\left\\lbrack {Y\\left( 1\\right) – Y\\left( 0\\right) }\\right\\rbrack \\geq \\pi \\;\\mathbb{E}\\left\\lbrack {Y \\mid T = 1}\\right\\rbrack + \\left( {1 – \\pi }\\right) \\;a – \\pi \\;b – \\left( {1 – \\pi }\\right) \\;\\mathbb{E}\\left\\lbrack {Y \\mid T = 0}\\right\\rbrack
E[Y(1)−Y(0)]≥πE[Y∣T=1]+(1−π)a−πb−(1−π)E[Y∣T=0]
接下来,如何计算边界范围?
在上面的 观测-反事实分解 中的最后提到,ATE 必须介于b-a和a-b之间,即平凡的区间长度是2(b-a)。而将 无假设边界 中的上界和下界进行减法运算会得到区间长度为(b-a),即平凡区间长度的一半。
所以,在不做任何额外假设的情况下,可以将平凡 ATE 区间长度减半。
举一个实例:
潜在结果被限定在 0 到 1 之间,处理概率是 0.3,处理组的y均值是0.9,对照组的y均值是0.2,将这些值代入到无假设边界后计算结果,如下图所示。

理想情况下,我们希望区间完全在正侧或者负侧,这样就会知道是否存在因果效应。如果区间包含 0 ,那么可能存在零因果效应。
固有缺陷:无假设边界必然包含0,无法判断因果效应的正负、无法确定是否存在真实因果效应。
我们还可以引入非正向单调治疗响应假设,MTS、OTS 系列假设及组合边界策略。完整数学推导、数值演算细节不再展开,各类假设对应的区间推导逻辑、适用场景可自行查阅因果边界分析相关资料深入学习。
工具变量准则(Instrumental Variable, IV)—— 高混杂场景补充方案
观察性研究中,常存在无法获取数据的未观测混杂因素
U
U
U,导致后门调整等依赖观测混杂的方法失效。在此前内容中,已介绍多类处理方案:
Z
Z
Z,利用
Z
Z
Z引发的、不受未观测混杂影响的处理
T
T
T的变异,分离出
T
T
T对结果
Y
Y
Y的因果效应。

比如研究 【线上问诊时长 (T)】对【病情康复效果 (Y)】的影响
隐藏混杂 U:患者自身基础健康水平(观测不到,同时影响问诊时长和康复效果); 选取工具变量:患者到医院的距离 (IV)
距离只影响【愿不愿意花长时间问诊】
(
I
V
→
T
(IV\\rightarrow T
(IV→T); 距离不会直接影响病情康复(和 Y 无直接关联)。
利用工具变量的特性,同样可以完成 do 算子的公式转换,实现效应识别。
工具变量的定义与三大核心假设
一个变量
Z
Z
Z要成为合格的工具变量,必须满足三个基础假设,对应因果图的结构约束:
- 含义:
Z
Z
Z对处理变量T
T
T存在因果效应,Z
Z
Z是T
T
T的直接原因。 - 图形对应:因果图中存在
Z
→
T
Z \\rightarrow T
Z→T的有向边。 - 作用:保证
Z
Z
Z能够带来T
T
T的有效变异,是识别成立的数值前提(避免估计时分母为 0)。

- 含义:
Z
Z
Z对结果Y
Y
Y的所有因果效应,完全通过处理T
T
T中介传导;Z
Z
Z不存在对Y
Y
Y的直接效应,也没有其他不经过T
T
T的影响路径。 - 图形对应:不存在
Z
Z
Z直接指向Y
Y
Y的边,也没有其他绕过T
T
T的从Z
Z
Z到Y
Y
Y的路径。 - 本质:将
Z
Z
Z排除在Y
Y
Y的生成机制之外,Z
Z
Z的变化只能通过T
T
T传导至Y
Y
Y。

- 含义:
Z
Z
Z对Y
Y
Y的效应不存在未观测混杂,即不存在无法阻断的、从Z
Z
Z到Y
Y
Y的后门路径。 - 图形对应:没有未观测变量同时影响
Z
Z
Z和Y
Y
Y;若存在观测混杂W
W
W,可通过控制W
W
W阻断后门路径,此时Z
Z
Z称为条件工具变量。 - 推论:该假设下,未观测混杂
U
U
U与工具变量Z
Z
Z相互独立。

工具变量的核心局限:无法非参数识别平均处理效应
在完全非参数框架下(不对变量的结构方程、因果机制形式做任何假设),工具变量无法识别总体平均处理效应(ATE)。
因果识别的本质是:能不能只观测数据的概率分布,算出我们想要的因果量(比如 ATE)。
非参数识别有一个必要条件:所有从处理
T
T
T到结果
Y
Y
Y的后门路径都必须可阻断。而工具变量的典型场景中,
T
T
T和
Y
Y
Y之间存在经过未观测变量
U
U
U的后门路径,无法阻断,因此不满足非参数识别的必要条件。
前门准则可以实现非参数识别,而工具变量不可以,二者的图结构与识别逻辑有本质差异。
- 前门准则的结构:
T
→
M
→
Y
T \\rightarrow M \\rightarrow Y
T→M→Y,同时T
←
U
→
Y
T \\leftarrow U \\rightarrow Y
T←U→Y(U 未观测)。它的逻辑是:通过观测到的中介变量 M,把 T→Y 的因果路径拆成两段:T→M:没有混杂(U 不影响 M),直接识别;M→Y:混杂路径M
←
T
←
U
→
Y
M \\leftarrow T \\leftarrow U \\rightarrow Y
M←T←U→Y可以通过控制 T 阻断,也能识别。 —— 两段相乘就得到 T 对 Y 的总 ATE,全程不需要任何函数形式假设,因此是非参数识别总体 ATE。 - 标准工具变量的因果图是这样的:
Z
→
T
←
U
→
Y
Z \\rightarrow T \\leftarrow U \\rightarrow Y
Z→T←U→Y , Z 只碰 T,不碰 Y 的中介路径。它没有办法把 T←U→Y 这条后门路径整体消除,只能借 Z 的 “外生推力”,提取 T 中一部分干净的变异 —— 这部分变异只对应受 Z 影响的人群,覆盖不了全体,因此只能得到局部效应。
线性假设下,为什么就能识别总体 ATE?
既然非参数下拿不到总体 ATE,那经典计量里用 IV 估计的 “因果效应” 是什么?答案是:通过施加强假设,把 “局部效应” 强行等价于 “总体效应”。
线性结构方程
Y
=
δ
T
+
α
U
U
Y = \\delta T + \\alpha_U U
Y=δT+αUU 看起来只是个函数形式假设,实则是一个极强的因果假设:
所有人的处理效应都一模一样,T 每增加 1 单位,Y 一定增加
δ
\\delta
δ,和个体特征、自身水平完全无关。
既然所有人的因果效应都是
δ
\\delta
δ,那 “局部人群的效应” 自然就等于 “总体平均效应(ATE)”。这时候工具变量估计出来的
δ
\\delta
δ,就可以直接解释为总体 ATE。
其中
δ
\\delta
δ就是
T
T
T对
Y
Y
Y的因果效应(同时也是 ATE);
Z
Z
Z不出现在方程中,由排除限制假设保证。
沃尔德估计量 / 协方差形式
- 推导逻辑:从
Z
Z
Z取不同值时Y
Y
Y的期望差出发,代入线性结构方程,利用工具变量无混杂性消去U
U
U项,最终解出因果效应δ
\\delta
δ。 - 识别公式:
δ
=
E
[
Y
∣
Z
=
1
]
−
E
[
Y
∣
Z
=
0
]
E
[
T
∣
Z
=
1
]
−
E
[
T
∣
Z
=
0
]
\\delta = \\frac{E[Y|Z=1] – E[Y|Z=0]}{E[T|Z=1] – E[T|Z=0]}
δ=E[T∣Z=1]−E[T∣Z=0]E[Y∣Z=1]−E[Y∣Z=0] - 直观解释:分子是
Z
Z
Z对Y
Y
Y的因果效应(Z
Z
Z无混杂,可直接用观测期望差表示),分母是Z
Z
Z对T
T
T的因果效应;二者相除,约掉Z
Z
Z的影响,即可分离出T
T
T对Y
Y
Y的因果效应。
因为效应同质,Z 对 Y 的影响,完全是 “Z 改变了多少人的 T” × “每个人的处理效应 δ” 带来的。也就是:
ITT
=
一阶段效应
×
δ
\\text{ITT} = \\text{一阶段效应} \\times \\delta
ITT=一阶段效应×δ
连续变量的协方差形式
δ
=
C
o
v
(
Y
,
Z
)
C
o
v
(
T
,
Z
)
\\delta = \\frac{Cov(Y,Z)}{Cov(T,Z)}
δ=Cov(T,Z)Cov(Y,Z),本质和沃尔德估计量是同一个东西,只是用协方差语言重写了一遍。
两阶段最小二乘估计(2SLS)
2SLS 是实践中最常用的 IV 估计方法,核心就是 “提纯”:
- 第一阶段:用
T
T
T对Z
Z
Z做线性回归,得到T
T
T的预测值T
^
\\hat{T}
T^(给定Z
Z
Z时T
T
T的条件期望),T
^
\\hat{T}
T^只保留了 T 中由 Z 解释的、干净的外生变异,把和 U 相关的混杂变异都剔除了。 - 第二阶段:用 Y 对
T
^
\\hat{T}
T^回归。因为T
^
\\hat{T}
T^已经和 U 无关了,没有混杂,所以回归系数就是无偏的因果效应 δ。
T
^
\\hat{T}
T^仅由
Z
Z
Z决定,剔除了
T
T
T中由未观测混杂
U
U
U带来的变异;因此
T
^
\\hat{T}
T^与
Y
Y
Y之间不存在未观测混杂,第二阶段回归可得到无偏的因果效应。 —— 同样,只有在线性同质假设下,这个系数才等于总体 ATE。
非参数下能识别什么?—— 局部平均处理效应(LATE)
如果我们不想接受 “所有人效应都一样” 这么强的假设,工具变量还能识别什么?这就是 Angrist & Imbens 提出的 LATE 定理:加上单调性假设后,可以非参数识别 “依从者” 群体的平均处理效应。
前置概念
潜在处理:类比潜在结果,定义
T
1
T_1
T1为干预
Z
=
1
Z=1
Z=1时个体的处理取值,
T
0
T_0
T0为干预
Z
=
0
Z=0
Z=0时个体的处理取值。根据个体对工具变量的反应,将总体分为 4 个层级:
| 依从者 | 0 | 1 | 听工具的话:让做就做,不让做就不做 |
| 违抗者 | 1 | 0 | 和工具反着来:让做偏不做,不让做偏做 |
| 总是接受者 | 1 | 1 | 不管工具说啥,都接受处理 |
| 从不接受者 | 0 | 0 | 不管工具说啥,都不接受处理 |
你永远没法从观测数据里判断某个人属于哪一类—— 你只能看到他在实际 Z 取值下的 T,看不到他在另一个 Z 下的反事实 T。这是因果推断基本问题的延伸。
单调性假设
对所有个体,都满足
T
1
≥
T
0
T_1 \\geq T_0
T1≥T0,即工具变量只会非负向地影响个体接受处理的概率。
工具变量只会提高人接受处理的概率,不会降低。
这个假设的唯一作用,就是从逻辑上排除 “违抗者”。没有违抗者,剩下三类人的效应就可以被分开。这是实现非参数识别的关键一步。
LATE 的识别结果
L
A
T
E
=
E
[
Y
∣
Z
=
1
]
−
E
[
Y
∣
Z
=
0
]
E
[
T
∣
Z
=
1
]
−
E
[
T
∣
Z
=
0
]
LATE = \\frac{E[Y|Z=1] – E[Y|Z=0]}{E[T|Z=1] – E[T|Z=0]}
LATE=E[T∣Z=1]−E[T∣Z=0]E[Y∣Z=1]−E[Y∣Z=0]
我们再看沃尔德公式的分子
E
[
Y
∣
Z
=
1
]
−
E
[
Y
∣
Z
=
0
]
E[Y|Z=1]-E[Y|Z=0]
E[Y∣Z=1]−E[Y∣Z=0]:
- 总是接受者:Z 变了,他们的 T 没变(一直是 1),根据排除限制(Z 不能直接影响 Y),他们的 Y 也不会变,对分子贡献为 0;
- 从不接受者:同理,T 一直是 0,Y 也不会变,贡献为 0;
- 违抗者:单调性假设已经排除了,不用考虑;
- 只有依从者:Z 从 0 变 1,他们的 T 从 0 变 1,因此他们的 Y 会发生变化 —— 这个变化就是他们的个体处理效应。
所以分子的全部含义就是:依从者的平均处理效应 × 依从者在总体中的占比。再看分母
E
[
T
∣
Z
=
1
]
−
E
[
T
∣
Z
=
0
]
E[T|Z=1]-E[T|Z=0]
E[T∣Z=1]−E[T∣Z=0]:
同理,只有依从者的 T 会随 Z 变化,所以分母的全部含义就是:依从者在总体中的占比。
分子分母一除,占比约掉,就得到了依从者群体的平均处理效应,也就是 LATE。
- 关键结论:
- 形式上与沃尔德估计量完全一致,但估计的不再是总体 ATE,而是依从者群体的平均处理效应。
- 它不需要任何函数形式假设,只依赖 IV 的三大基础假设(相关性、排除限制、工具外生)+ 单调性假设。
LATE 的局限性
- 依赖单调性:如果现实中存在违抗者,单调性不成立,LATE 估计就会有偏。
- 仅局部有效:你得到的只是 “听工具话” 的那部分人的效应,不能直接推广到总体。比如用 “出生季度” 当工具估计教育回报,得到的只是 “因为义务教育法多读了一年书” 的那群人的回报,不是所有人的教育回报。
- 人群不可定位:你知道有这么一群依从者,也算出了他们的平均效应,但你没法指出具体谁是依从者 —— 效应对应的人群解释力很弱。
Estimate(估计)
- Estimate(估计):用倾向得分匹配、IPTW、双重机器学习等,算出 ATE(平均处理效应)。
identify 解决能不能算因果效应的问题,确定混杂可以被消除,就输出一套可以观测数据计算的数学公式。 —- 而 estimate 依托PO解决 具体算出因果效应是多少。
调用 Rubin 潜在结果框架,把识别好的公式,用统计方法算出数值。
预备概念:ATE 与 CATE(条件平均处理效应)
- ATE 平均处理效应
A
T
E
=
E
[
Y
(
1
)
−
Y
(
0
)
]
ATE=\\mathbb{E}[Y(1)-Y(0)]
ATE=E[Y(1)−Y(0)]
调整公式:
A
T
E
=
E
W
[
E
[
Y
∣
T
=
1
,
W
]
−
E
[
Y
∣
T
=
0
,
W
]
]
ATE=\\mathbb{E}_W\\big[\\mathbb{E}[Y|T=1,W]-\\mathbb{E}[Y|T=0,W]\\big]
ATE=EW[E[Y∣T=1,W]−E[Y∣T=0,W]],W为充分调整协变量集。
- CATE 条件平均处理效应
以指定协变量取值
X
=
x
X=x
X=x为条件:
C
A
T
E
(
x
)
=
E
[
Y
(
1
)
−
Y
(
0
)
∣
X
=
x
]
CATE(x)=\\mathbb{E}[Y(1)-Y(0)|X=x]
CATE(x)=E[Y(1)−Y(0)∣X=x] 调整公式:
C
A
T
E
(
x
)
=
E
W
∣
X
=
x
[
E
[
Y
∣
T
=
1
,
W
,
X
=
x
]
−
E
[
Y
∣
T
=
0
,
W
,
X
=
x
]
]
CATE(x)=\\mathbb{E}_{W|X=x}\\big[\\mathbb{E}[Y|T=1,W,X=x]-\\mathbb{E}[Y|T=0,W,X=x]\\big]
CATE(x)=EW∣X=x[E[Y∣T=1,W,X=x]−E[Y∣T=0,W,X=x]]
X不一定是全部观测协变量;若X包含全部协变量,CATE 也叫个体化平均处理效应(ITE 期望);

条件结果建模类估计(COM 系列)
A
T
E
=
E
W
[
E
[
Y
∣
T
=
1
,
W
]
−
E
[
Y
∣
T
=
0
,
W
]
]
ATE=\\mathbb{E}_W\\big[\\mathbb{E}[Y|T=1,W]-\\mathbb{E}[Y|T=0,W]\\big]
ATE=EW[E[Y∣T=1,W]−E[Y∣T=0,W]] 这个是平均处理效应的调整公式,左边是因果估计量,右边是统计估计量。我们需要将统计估计量转化为实际的估计值。
我们需要一个估计器,它能接收数据并给出那个估计值。 —– 接下来我们需要建模这些条件期望(可以使用任何可以建模条件期望的统计模型,比如 scikit learn ,前提是它能最小化真实值和预测值之间的均方误差,甚至可以使用深度神经网络这种复杂模型来建模这个条件期望)
通过最小化均方误差训练得到我们想要的估计器。 为了近似关于W 的期望,我们对所有数据样本 i 求和,然后用 i 来索引 W。 —- 这样我们就得到使用条件结果建模来估计 ATE 的方法,下面的
μ
\\mu
μ是条件结果模型。

每个样本都有两个潜在结果,但是在现实世界中,同一个用户只能出现其中一种状态,个体效应无法直接计算,所以只能退而求其次,计算群体平均效应 ATE(全体样本的平均值)。 —- 因果推断的根本问题:单个个体无法同时观测两种潜在结果,从数据视角看,个体的一组潜在结果永久缺失,因此个体层面的因果效应永远无法直接观测。该问题可等价表述为因果推断的缺失数据难题。 —- 解决思路是:放弃无法观测的个体因果效应,通过总体期望计算平均处理效应(ATE),即总体所有个体因果效应的均值。
需要注意一个误区:原始均值差 ≠ ATE
前者的差值混杂了年龄收入等干扰因素,只是观测关联,不是真实因果。而 Rubin 框架的目标,就是剥离混杂,精准估算出
E
[
Y
(
1
)
]
\\mathbb{E}[Y(1)]
E[Y(1)] 和
E
[
Y
(
0
)
]
\\mathbb{E}[Y(0)]
E[Y(0)] 这两个全局均值。
S-Learner(标准 COM 估计器)
只训练单个统一模型
μ
^
(
T
,
W
)
\\hat\\mu(T,W)
μ^(T,W),输入处理变量
T
+
T+
T+调整协变量W,直接预测结果Y;再用样本均值近似期望,积分边缘化协变量,算出 ATE/CATE。
A
T
E
^
=
1
N
∑
i
=
1
N
[
μ
^
(
1
,
W
i
)
−
μ
^
(
0
,
W
i
)
]
\\widehat{ATE}=\\frac{1}{N}\\sum_{i=1}^N \\Big[\\hat\\mu(1,W_i)-\\hat\\mu(0,W_i)\\Big]
ATE
=N1∑i=1N[μ^(1,Wi)−μ^(0,Wi)]
仅筛选
X
i
=
x
X_i=x
Xi=x的子集样本
N
x
N_x
Nx求均值:
C
A
T
E
^
(
x
)
=
1
N
x
∑
X
i
=
x
[
μ
^
(
1
,
W
i
,
X
i
)
−
μ
^
(
0
,
W
i
,
X
i
)
]
\\widehat{CATE}(x)=\\frac{1}{N_x}\\sum_{X_i=x} \\Big[\\hat\\mu(1,W_i,X_i)-\\hat\\mu(0,W_i,X_i)\\Big]
CATE
(x)=Nx1∑Xi=x[μ^(1,Wi,Xi)−μ^(0,Wi,Xi)]
其中
N
x
N_x
Nx表示该求和中此类样本的数量,如果只有一个这样的样本,你仍然可以把它作为那个CATE的估计量。
上面这个估计量(条件平均处理效应估计量)可能存在什么问题? —— 高维协变量下向零偏移
S-Learner 只训练单个预测模型 ,训练损失只有预测任务的 MSE:
L
=
E
[
(
Y
−
μ
^
(
T
,
W
)
)
2
]
\\mathcal L = \\mathbb E\\left[(Y-\\hat\\mu(T,W))^2\\right]
L=E[(Y−μ^(T,W))2],这个模型是纯统计预测模型,没有任何因果约束。 如果
μ
^
\\hat\\mu
μ^里T权重趋近 0:
μ
^
(
1
,
W
)
≈
μ
^
(
0
,
W
)
\\hat\\mu(1,W)\\approx\\hat\\mu(0,W)
μ^(1,W)≈μ^(0,W),二者相减得到的效应值绝对值被强行压缩,真实因果效应再大,估计出来的数值也会无限靠近 0。
假设我们在高维数据中使用条件平均处理效应估计,W表示高维向量,T是标量(一维),我们需要拟合一个模型
μ
^
\\hat\\mu
μ^来拟合这些数据。

模型可能会忽略标量T,因为T只是模型输入多的高维向量中的一个维度。在给定其他多个维度的情况下(比如100个维度),模型可能不需要T就能很好地预测Y。因此,在神经网络或线性回归中,这意味着分配给T的权重为0(或者只是分配非常小的值给这些权重)。
模型可能会忽略处理变量,这会导致ATE或CATE的估计值偏向于零。 —— 那么,我们如何才能确保模型不会忽略变量T呢?
T-Learner(GCOM,分组 COM 估计)
拆分两个独立模型,彻底避免模型忽略T:
-
μ
^
1
(
W
)
\\hat\\mu_1(W)
μ^1(W):只用T
=
1
T=1
T=1处理组样本训练,仅输入W预测Y; -
μ
^
0
(
W
)
\\hat\\mu_0(W)
μ^0(W):只用T
=
0
T=0
T=0对照组样本训练,仅输入W预测Y。
ATE 估计式:
A
T
E
^
=
1
N
∑
i
=
1
N
[
μ
^
1
(
W
i
)
−
μ
^
0
(
W
i
)
]
\\widehat{ATE}=\\frac{1}{N}\\sum_{i=1}^N \\Big[\\hat\\mu_1(W_i)-\\hat\\mu_0(W_i)\\Big]
ATE
=N1∑i=1N[μ^1(Wi)−μ^0(Wi)]
每个模型拟合不同的处理组数据,我们不需要将T作为输入提供给这些网络,使用两个网络本身就编码了T的信息。
在常规的因果学习模型估计中,单一模型是用所有数据拟合的,而GCOM的第一个模型用所有处理组数据拟合,完全不使用对照组数据,而第二个模型只使用对照组的数据。
而使用GCOM方法也会带来一个问题: 两组样本分开训练,每个模型可用样本量减半,估计方差大幅上升,数据利用效率低。
混合架构改进:TARNET
融合 S-Learner(全部数据训练共享表征)+ T-Learner(分头预测)优势的神经网络结构:

(
T
=
0
/
1
(T=0/1
(T=0/1)共同训练,把高维W映射为低维共享表征;
T
=
1
T=1
T=1样本微调、对照组头仅用
T
=
0
T=0
T=0样本微调;
共享层充分利用全量数据压低方差,分支结构保留 T-Learner 不遗漏T的优点。
X-Learner(高效分组学习)
进一步优化 T-Learner 样本利用率,分三步实现全量数据复用,适合组间样本量不均衡场景:
μ
^
1
(
X
)
\\hat\\mu_1(X)
μ^1(X)(处理组训练)、
μ
^
0
(
X
)
\\hat\\mu_0(X)
μ^0(X)(对照组训练);
真实 ITE
τ
i
\\tau_i
τi无法直接观测,我们借助第一步训练好的结果模型,预估出缺失的那个反事实结果,强行算出一个近似的个体效应估计值,这个人工构造出来的、不是真实观测得到的效应,就叫做伪 ITE 样本。
- 处理组个体:观测
Y
i
(
1
)
Y_i(1)
Yi(1),用μ
^
0
(
X
i
)
\\hat\\mu_0(X_i)
μ^0(Xi)预估缺失反事实Y
i
(
0
)
Y_i(0)
Yi(0),得到τ
^
i
1
=
Y
i
(
1
)
−
μ
^
0
(
X
i
)
\\hat\\tau_i^1=Y_i(1)-\\hat\\mu_0(X_i)
τ^i1=Yi(1)−μ^0(Xi); - 对照组个体:观测
Y
i
(
0
)
Y_i(0)
Yi(0),用μ
^
1
(
X
i
)
\\hat\\mu_1(X_i)
μ^1(Xi)预估缺失反事实Y
i
(
1
)
Y_i(1)
Yi(1),得到τ
^
i
0
=
μ
^
1
(
X
i
)
−
Y
i
(
0
)
\\hat\\tau_i^0=\\hat\\mu_1(X_i)-Y_i(0)
τ^i0=μ^1(Xi)−Yi(0);
这个人真实处理后结果 − 模型预估他不处理会有的结果 = 估算出的个人处理效应。这批伪 ITE 集合记作
{
τ
^
i
(
1
)
,
X
i
}
T
i
=
1
\\{\\hat\\tau_i^{(1)},X_i\\}_{T_i=1}
{τ^i(1),Xi}Ti=1。
分别用全部伪 ITE 样本训练
τ
^
1
(
X
)
\\hat\\tau_1(X)
τ^1(X)、
τ
^
0
(
X
)
\\hat\\tau_0(X)
τ^0(X);
用权重函数
g
(
X
)
∈
[
0
,
1
]
g(X)\\in[0,1]
g(X)∈[0,1]加权融合最终 CATE:
C
A
T
E
^
(
x
)
=
g
(
x
)
⋅
τ
^
1
(
x
)
+
(
1
−
g
(
x
)
)
⋅
τ
^
0
(
x
)
\\widehat{CATE}(x)=g(x)\\cdot\\hat\\tau_1(x)+(1-g(x))\\cdot\\hat\\tau_0(x)
CATE
(x)=g(x)⋅τ^1(x)+(1−g(x))⋅τ^0(x)
实操常用倾向性评分作为权重
g
(
X
)
g(X)
g(X)。
核心优势T-Learner 只用一组样本建模一组效应,X-Learner 两组样本互相插补反事实,完整利用全部观测数据,有限样本下效率显著更高。
DoWhy 支持的主流方法
DoWhy 把 Rubin PO 框架封装成了工程化流水线,整个调用流程分为 5 步,全程自动执行,你只需要选择估计方法。
当混杂变量很多(年龄,收入,季节,地域等),直接按所有变量精确查找会非常困难。
于是引入 倾向得分
e
(
W
)
=
P
(
T
=
1
∣
W
)
e(W) = P(T=1 \\mid W)
e(W)=P(T=1∣W) ,把多维混杂特征压缩成一维概率值,用这个概率做匹配。
在 T = 0 的池子里,找倾向得分几乎完全相等的用户做配对, 用配对用户的销售额近似当前用户缺失的
Y
i
(
0
)
Y_i(0)
Yi(0).
配对完成后,两组样本的混杂分布基本一致,模拟随机分组的效果;再计算两组均值差,得到ATE。
优点是 逻辑直观,解释性强。但是匹配会剔除部分无法配对的样本,损失数据,高维混杂下效果下降。

What is the intuition behind why we can condition on
e
(
W
)
e(W)
e(W) instead of W?
一维标量完整编码了协变量W对处理分配T的全部因果机制。二元处理下,给定W时T的条件分布完全由
e
(
W
)
e(W)
e(W)描述:
P
(
T
=
1
∣
W
)
=
e
(
W
)
,
P
(
T
=
0
∣
W
)
=
1
−
e
(
W
)
\\mathbb{P}(T=1|W)=e(W),\\quad \\mathbb{P}(T=0|W)=1-e(W)
P(T=1∣W)=e(W),P(T=0∣W)=1−e(W),仅靠
e
(
W
)
e(W)
e(W)就能完整还原
W
→
T
W \\to T
W→T这条混杂路径的信息,不需要完整高维向量W。 无混杂性传递:若W是充分调整集,满足潜在结果与处理独立
Y
(
0
)
,
Y
(
1
)
⊥
⊥
T
∣
W
Y(0),Y(1) \\perp\\!\\!\\!\\perp T \\mid W
Y(0),Y(1)⊥⊥T∣W;由于
e
(
W
)
e(W)
e(W)完全概括W对T的影响,控制
e
(
W
)
e(W)
e(W)等价于阻断所有W带来的后门混杂路径,因此独立关系依然成立:
Y
(
0
)
,
Y
(
1
)
⊥
⊥
T
∣
e
(
W
)
Y(0),Y(1) \\perp\\!\\!\\!\\perp T \\mid e(W)
Y(0),Y(1)⊥⊥T∣e(W)
What is attractive about conditioning on
e
(
W
)
e(W)
e(W) as opposed to W?
- 维度灾难大幅缓解:原始协变量W可以是几十、上百维高维向量,而
e
(
W
)
e(W)
e(W)只是单一标量(0~1 之间的概率值),把高维混杂信息压缩到一维空间。 - 极大改善重叠性(positivity):高维W空间中,处理组与对照组样本几乎很难找到完全匹配的协变量组合,极易出现某类W下只有处理 / 只有对照,违背正定性; ——— 一维
e
(
W
)
e(W)
e(W)的取值空间只是一条 0 到 1 的直线,处理、对照组样本的评分分布更容易出现重叠区间,大幅降低正定性违背的概率。 - 简化匹配 / 分层操作:分层、匹配估计时,一维数值对比、分组远比高维向量距离计算简单,实操计算成本更低。
Why does this not solve positivity issues when W is high-dimensional?
倾向性评分只是转移了问题,没有消除根本矛盾:
-
e
(
W
)
e(W)
e(W)是不可观测的理论真值,现实中我们必须通过观测数据、以高维W为输入拟合模型(逻辑回归、机器学习等)得到估计值e
^
(
W
)
\\hat e(W)
e^(W)。 ——– 拟合(\\hat e(W))的过程本身就要处理高维协变量W带来的维度诅咒。 - 高维W下,样本在协变量空间极度稀疏:部分协变量组合只有处理组 / 只有对照组样本,模型无法学到可靠的
e
^
(
W
)
\\hat e(W)
e^(W);会出现e
^
(
W
)
≈
0
\\hat e(W)\\approx0
e^(W)≈0或e
^
(
W
)
≈
1
\\hat e(W)\\approx1
e^(W)≈1的极端权重,依然破坏正定性。
高维协变量带来的稀疏、重叠不足问题,从 “直接控制W” 阶段,转移到了 “拟合倾向性评分模型” 阶段,底层数据稀疏问题没有消失,因此无法彻底解决正定性难题。
不走样本配对,而是给每一条样本赋予权重,修正两组样本的分布偏差。 同样是基于倾向得分
e
(
W
)
e(W)
e(W):
- 处理组(投广告)权重:
1
e
(
W
)
\\displaystyle \\frac{1}{e(W)}
e(W)1 - 对照组(不投广告)权重:
1
1
−
e
(
W
)
\\displaystyle \\frac{1}{1-e(W)}
1−e(W)1
通过权重修正后,加权后的样本分布等价于随机实验分组,此时加权后的组均值,就可以直接近似真实的
E
[
Y
(
1
)
]
\\mathbb{E}[Y(1)]
E[Y(1)] 和
E
[
Y
(
0
)
]
\\mathbb{E}[Y(0)]
E[Y(0)];

举个例子来更好的理解上面的内容:平台更愿意给高收入用户投广告(高收入人群点击率、转化更高)而高收入用户本身,消费能力就更强,天然销售额更高。 —— 这会导致 投广告的处理组中,高收入用户占比极高,不投广告的对照组中,低收入用户占比极高。 —– 均值差中混入了收入差异带来的偏差。 ——- 借助权重来实现真正的随机试验:谁越容易被分到处理组,就压低谁的权重;谁越难被分到处理组、却意外入选,就拉高谁的权重。
What happens if the estimated propensity score for some unit is 1 or 0?
真实倾向性评分
e
(
W
)
∈
(
0
,
1
)
e(W) \\in (0,1)
e(W)∈(0,1) 是正定性(重叠性) 的核心假设,要求对任意协变量组合 W,同时存在处理、对照样本。 ——-
e
^
(
W
i
)
=
0
/
1
\\hat e(W_i)=0/1
e^(Wi)=0/1 说明该协变量分层下完全不存在另一组样本,正定性假设彻底失效,我们没有观测数据用来构造该个体的反事实,IPW 方法从理论上不再适用。
What happens if the estimated propensity score is near 1 or 0?
- 权重极端放大,样本单点主导估计:
e
^
(
W
i
)
≈
0
\\hat e(W_i) \\approx 0
e^(Wi)≈0 的处理组样本:w
i
=
1
/
e
^
(
W
i
)
w_i=1/\\hat e(W_i)
wi=1/e^(Wi) 会变成极大值;e
^
(
W
i
)
≈
1
\\hat e(W_i) \\approx 1
e^(Wi)≈1 的对照组样本:w
i
=
1
/
(
1
−
e
^
(
W
i
)
)
w_i=1/(1-\\hat e(W_i))
wi=1/(1−e^(Wi)) 会变成极大值。 ——- 这个极端权重样本会在加权求和中占据绝对主导地位,整个 ATE 估计结果几乎由这一个样本决定,严重破坏估计稳定性。 - 估计方差爆炸,标准误差大幅上升:方差和权重的平方正相关,超大权重会让 IPW 估计量的抽样方差急剧膨胀:(1)置信区间会变得极宽,统计推断完全失效;(2)有限样本下估计值会剧烈波动,抽样结果不可靠。
- 有限样本系统性偏差:即便大样本下 IPW 具备一致性,只要存在趋近 0/1 的评分,有限样本偏差会非常严重:极端权重样本的观测噪声会被成倍放大,最终 ATE 估计偏离真实因果效应。
补充:常用缓解手段
专门应对 高维混杂场景:比如有几十 / 上百个混杂特征(用户标签、行为、设备、地域、历史订单等),此时匹配、加权效果都会变差,改用机器学习拟合复杂关系。
—- 第一重学习:用所有混杂变量 W 预测结果 Y,把 “混杂能解释的销售额” 剥离,得到结果残差(剔除干扰后的纯销售额); —- 第二重学习:用所有混杂变量 W 预测处理 T(是否投广告),得到处理残差(剔除干扰后的纯广告投放行为); —- 最后用 “处理残差” 回归 “结果残差”,回归系数就是 ATE。
机器学习强大的拟合能力,会自动学习高维混杂和
Y
(
1
)
/
Y
(
0
)
Y(1)/Y(0)
Y(1)/Y(0) 的复杂关系,精准预估每个样本的两个潜在结果,再计算群体均值差。
Refute(反驳 / 验证)
- Refute(反驳 / 验证):自动做安慰剂检验、随机混杂、子集稳健性,看结果是不是瞎蒙的。
因果结论无法 证明是对的,只能 证明没被推翻, 这是 DoWhy 最强大的功能:自动用多种方法挑战你的结果,如果挑战失败,说明结果可信。有 3 个最常用的反驳测试:
把 T 换成随机假干预(不再根据业务规则分配广告,而是纯随机给用户标记)。ATE 立刻变成 0 说明靠谱。ATE 依然很大 说明是假因果。
换成完全随机的假干预,依然算出明显效应,说明原结果根本不是因果,只是数据本身的波动、整体上涨趋势、抽样巧合等虚假关联。
加一个毫无关系的假变量。ATE 几乎不变说明靠谱。ATE 剧烈波动说明结果错误。
判断结果会不会被无关变量轻易带偏,排查模型是否脆弱、混杂处理是否不彻底。 —- 一个凭空生成的随机变量,不属于真实因果链路,不该对最终因果效应产生任何影响。
判断效应是全局系统性规律,还是仅仅由某一小部分样本、异常值造成的偶然结果。
对全量数据集做拆分,生成多个数据子集,如果结论靠谱,不同子集算出的效应应该整体接近、波动平缓。
容易误解的地方
→ DoWhy 是 “用” 因果,不是 “懂” 因果。
- ✅ 学会:因果分析的完整流程、怎么写因果图、怎么跑因果效应、怎么验证结果。
- ❌ 误解:以为因果推理 = 调库 + 跑代码;不知道背后的 SCM、do – 算子、识别理论。
NOTEARS:因果发现(学 DAG)的 “里程碑算法”
DoWhy 是已知因果图来计算因果效应(用因果),NOTEARS只有观测数据,自动学习因果图(找因果)。给出一堆纯观测数据(比如用户的年龄、收入、广告投放、销售额),自动从数据里找出所有变量的因果关系,画出标准的 DAG(有向无环图)。
此前的因果推断,均是在已知因果图的前提下,基于因果假设推断因果效应;而因果发现要解决的是 “因果图未知” 的问题:直接从观测数据中学习出因果图结构,得到因果图后,再复用此前的因果推断方法估计因果效应。
传统因果发现(PC/GES)为什么不行?
论文地址:DAGs with NO TEARS: Continuous Optimization for Structure Learning
论文代码地址:github
在 NOTEARS 之前(NeurIPS 2018),所有因果发现算法都是离散图搜索(暴力穷举),速度极慢;只能处理简单数据,不能和深度学习结合;结果不稳定容易出错。
这就是 NOTEARS 要解决的核心痛点。
传统算法卡壳的根源是:DAG 要求【无环】,这是一个离散约束(有环 = 1,无环 = 0,非黑即白)离散约束无法用梯度下降优化(AI 训练的核心工具)。
NOTEARS 的神来之笔是把【图是否无环】这个非黑即白的离散问题,变成了连续可微的数学函数。
通过下面三个核心部分:
所有因果图,都能写成一个矩阵 W(加权邻接矩阵):
- 行 / 列 = 所有变量(收入、广告、销售额…)
- W[i][j] = 数值 → 代表 变量 i → 变量 j 的因果强度
- W[i][j] = 0 → 代表没有因果边
举个例子(3 个变量:收入、广告、销售额):
收入 广告 销售额
收入 [0 0.8 0.7] 收入→广告,收入→销售额
广告 [0 0 0.5] 广告→销售额
销售额 [0 0 0 ]
这个矩阵 W,就是因果图本身。
NOTEARS 发明了一个连续可微函数 h (W):
h
(
W
)
=
tr
(
e
W
)
−
d
h(W) = \\text{tr}(e^W) – d
h(W)=tr(eW)−d
- h(W) = 0 → 矩阵 W 对应的图一定是无环 DAG
- h(W) > 0 → 矩阵 W 对应的图有环,无效
- h (W) 是光滑连续的 → 可以用梯度下降优化!
这个公式到底在干嘛,为什么它能判断有没有环,为什么 h(W)=0 ⇔ DAG ?
e
W
e^W
eW(矩阵指数) 把 “走几步能从 i 到 j” 全部算出来
tr (・) 迹 :就是对角线元素加起来:
tr
(
M
)
=
M
11
+
M
22
+
M
33
\\text{tr}(M) = M_{11} + M_{22} + M_{33}
tr(M)=M11+M22+M33 , 对角线 = 从 i 出发回到 i 的路径(环)
tr
(
e
W
)
\\text{tr}(e^W)
tr(eW)就是:所有长度、所有节点上,回到自己(环)的总强度
- 没有环(DAG):
tr
(
e
W
)
=
d
\\text{tr}(e^W)=d
tr(eW)=d - 有环:
tr
(
e
W
)
>
d
\\text{tr}(e^W) > d
tr(eW)>d
例子 1:无环 DAG(A→B→C) .
W
=
[
0
1
0
0
0
1
0
0
0
]
W = \\begin{bmatrix} 0 & 1 & 0 \\\\ 0 & 0 & 1 \\\\ 0 & 0 & 0 \\end{bmatrix}
W=
000100010
.
W
2
=
W
×
W
W^2 = W \\times W
W2=W×W含义:从 i 走两步到 j 的路径数 / 强度。
W
A
C
2
=
1
W^2_{AC}=1
WAC2=1:
A
→
B
→
C
A\\to B\\to C
A→B→C(两步),其余都是 0 .
W
2
=
[
0
0
1
0
0
0
0
0
0
]
W^2=\\begin{bmatrix} 0 & 0 & 1 \\\\ 0 & 0 & 0 \\\\ 0 & 0 & 0 \\end{bmatrix}
W2=
000000100
. 最长只有两步,所以
W
3
=
0
W^3=0
W3=0。
e
W
=
I
+
W
+
W
2
2
!
+
W
3
3
!
+
…
e^W = I + W + \\frac{W^2}{2!} + \\frac{W^3}{3!} + \\dots
eW=I+W+2!W2+3!W3+…把 0 步、1 步、2 步、3 步、… 所有路径强度,全部加权求和。 除以 (2!,3!) 不是为了复杂,是为了让这个无穷级数收敛,让
e
W
e^W
eW 光滑、可导(才能用梯度下降),除以阶乘不改变 “路径总和” 的含义,只是让数学性质更好。 .
e
W
=
I
+
W
+
W
2
2
e^W = I + W + \\frac{W^2}{2}
eW=I+W+2W2 具体矩阵: .
e
W
=
[
1
1
1
2
0
1
1
0
0
1
]
e^W= \\begin{bmatrix} 1 & 1 & \\frac12 \\\\ 0 & 1 & 1 \\\\ 0 & 0 & 1 \\end{bmatrix}
eW=
1001102111
. 所以
e
W
e^W
eW 对角线全是 1(只有 0 步也就是对角矩阵 I 的时候有)
tr
(
e
W
)
=
1
+
1
+
1
=
3
=
d
\\text{tr}(e^W)=1+1+1=3=d
tr(eW)=1+1+1=3=d
h
(
W
)
=
3
−
3
=
0
h(W)=3-3=0
h(W)=3−3=0 ✅
例子 2 : 变量有环 .
W
=
[
0
0
1
1
0
0
0
1
0
]
W= \\begin{bmatrix} 0 & 0 & 1 \\\\ 1 & 0 & 0 \\\\ 0 & 1 & 0 \\end{bmatrix}
W=
010001100
这个图有环:A→C→B→A .
W
2
=
[
0
1
0
0
0
1
1
0
0
]
W^2= \\begin{bmatrix} 0 & 1 & 0 \\\\ 0 & 0 & 1 \\\\ 1 & 0 & 0 \\end{bmatrix}
W2=
001100010
. 看对角线:还是 0(两步回不来自己) .
W
3
=
[
1
0
0
0
1
0
0
0
1
]
W^3= \\begin{bmatrix} 1 & 0 & 0 \\\\ 0 & 1 & 0 \\\\ 0 & 0 & 1 \\end{bmatrix}
W3=
100010001
关键:三步刚好形成环,回到自己! . 现在算
e
W
=
I
+
W
+
W
2
/
2
!
+
W
3
/
3
!
+
…
e^W = I + W + W^2/2! + W^3/3! + \\dots
eW=I+W+W2/2!+W3/3!+… 只看对角线:
I 对角线:1,1,1 W 对角线:0,0,0
W
2
/
2
!
W^2/2!
W2/2! 对角线:0,0,0
W
3
/
3
!
W^3/3!
W3/3! 对角线:1/6, 1/6, 1/6 更高阶
(
W
6
,
W
9
.
.
.
(W^6,W^9…
(W6,W9…)还会继续加正数
所以对角线:
e
i
i
W
=
1
+
1
6
+
⋯
>
1
e^W_{ii}=1 + \\frac{1}{6} + \\dots > 1
eiiW=1+61+⋯>1 .
tr
(
e
W
)
=
e
11
W
+
e
22
W
+
e
33
W
>
3
\\text{tr}(e^W)=e^W_{11}+e^W_{22}+e^W_{33} >3
tr(eW)=e11W+e22W+e33W>3 . 结论:有环 → 对角线 > 1 → tr (e^W)>3 → h (W)>0
NOTEARS 只做一件事:找到一个矩阵 W(因果图),让这个图能完美拟合观测数据(损失最小);同时这个图必须是无环的 DAG。
W 是加权邻接矩阵,完整代表一张因果图:
W
i
j
≠
0
W_{ij} \\neq 0
Wij=0:存在因果边
变量
i
→
变量
j
变量i \\rightarrow 变量j
变量i→变量j,数值大小代表因果强度;我们最终要求解的,就是这个矩阵 W 。
L(W) = 损失函数,用来衡量:当前矩阵 W 对应的因果图,和真实观测数据的匹配程度(损失值越小 → 因果图越贴合数据分布)。
案例解读: 变量:收入、广告投放、销售额。 . 假设当前 W 定义了关系:收入→广告、收入→销售额、广告→销售额。
L
(
W
)
\\mathcal{L}(W)
L(W):误差总和。 .
不断调整矩阵 W 里的数值,让误差越来越小,做到 “因果规则能解释现有数据”。
极端情况:
- 只优化损失,不加无环约束: 算法追求拟合数据,可能生成循环结构;虽然拟合误差极小但是有环图不是合法因果图。
- 只强制无环,不优化损失:人为随便画一张无环图,虽然结构合法,但和观测数据完全不匹配,无法反映真实因果关系。
NOTEARS 怎么求解?(梯度下降 + 增强拉格朗日)
初始化:随机生成一个矩阵 W(随便画个初始图);
融合约束:用增强拉格朗日,把「无环约束」直接塞进损失函数里(不用分开算);
把【约束条件
h
(
W
)
=
0
h(W)=0
h(W)=0】合并到损失函数里,变成一个新的总损失: .
TotalLoss
=
L
(
W
)
+
λ
⋅
h
(
W
)
\\text{TotalLoss} = \\mathcal{L}(W) + \\lambda \\cdot h(W)
TotalLoss=L(W)+λ⋅h(W) .
λ
\\lambda
λ 是权重系数,用来控制 “无环” 这条规则的严格程度; —– 原本的约束条件,变成了总损失里的一项惩罚项。 . 优化逻辑变为:最小化总损失。如果图有环:
h
(
W
)
>
0
h(W)>0
h(W)>0,惩罚项变大,总损失飙升,算法会主动修正环路; . 这也是为什么 NOTEARS 可以全程只用梯度下降求解,不用离散穷举。
让数据损失越来越小;让 h (W) 越来越接近 0;
收敛停止:最终得到的 W,既是最优拟合,又是无环 DAG;
转成图:把矩阵 W 转换成可视化因果图。
全程不用枚举任何图,速度比传统算法快10~100 倍,变量再多也不爆炸。
扩展:线性 NOTEARS vs 非线性 NOTEARS
线性 NOTEARS 是论文原始版本,假设变量之间是线性因果关系(简单、好算);适合入门、小数据、教学演示。
非线性 NOTEARS(进阶,工业用),用 MLP / 神经网络 拟合复杂因果关系;适合真实业务、高维数据、非线性关系;
核心逻辑和线性版完全一样,只是损失函数换成神经网络。
NOTEARS 与 DoWhy 完美配合,NOTEARS 输入数据,自动输出因果图DAG;DoWhy 输入 DAG 和数据,计算因果效应ATE; 最后Refute 验证结果是否可信。
LLM× 因果:当前最火的 “缝合怪” 方向
传统因果推断 / 因果发现体系(SCM、DAG、NOTEARS、DoWhy、PC、do 算子) 理论严谨、有数学约束、可量化因果效应、支持稳健性验证、结果可解释; 但是 极度依赖人工领域知识、只能处理结构化表格数据、无法理解自然语言、反事实建模成本高。
用传统因果框架的数学约束、因果理论、量化能力,约束 LLM 的自由生成,解决其【因果逻辑混乱、结果不可信、无法量化】的问题。
大语言模型LLM 擅长理解文本语义、能做自然语言交互、可以自动归纳关系、低成本输出先验结论。 但它本质是 统计关联模型,没有内置因果逻辑,不懂do算子、可识别性、DAG 无环约束,容易产生 “幻觉”。
用 LLM 的知识能力、语义理解能力,弥补传统因果算法【缺先验、难用、只能处理表格数据】的短板;
LLM 负责 “凭知识猜关系”,经典因果算法负责 “用理论和数据验真假、算数值”。
目前有三个主流的技术路线(若有遗漏,欢迎补充)
LLM 做因果发现(替代 / 辅助 NOTEARS、PC 算法)
因果发现也就是从观测数据自动学习 DAG(因果图)。传统方法如 NOTEARS 存在强依赖数据(样本少,变量少,数据噪声大时容易学错因果边)、无语义理解、输入受限(仅支持结构化表格数据)、初始化随机(随机生成初始图)的问题。
LLM介入后有两种工作模式:
输入:变量名称、业务描述、自然语言文本(如 “变量:熬夜、免疫力、感冒”、医学病历、新闻事件); 核心逻辑:LLM 依靠预训练的通用常识 / 行业知识,直接判断变量间的因果流向; 输出:标准化 DAG、因果邻接矩阵、文字版因果关系; 适用场景:没有结构化观测数据,只有纯文本资料的场景。
举例:输入文本“长期久坐会引发腰椎问题,腰椎问题会影响睡眠质量”,LLM 直接输出 DAG:久坐 → 腰椎问题 → 睡眠质量。
这是目前顶会最常见的方案,不是取代 NOTEARS,而是强强联合:
省去了人工绘因果图的高成本;把因果发现的输入范围从【表格数据】拓展到【全类型文本数据】。
LLM 辅助因果效应估计(搭配 DoWhy、EconML)
Model(建模)是 DoWhy 的最大瓶颈:必须人工完成三件事:
-
定义处理变量 T、结果变量 Y;
-
枚举全部混杂变量、中介变量;
-
必要时寻找工具变量(应对后门准则失效的场景)。
现实场景中,陌生领域很难识别隐藏混杂(未观测混杂会直接破坏可识别性假设);
示例提问:“研究广告投放对商品销售额的因果效应,请列出所有潜在的混杂变量和中介变量” . LLM 会结合电商常识输出:用户年龄、收入、地域、季节、历史消费习惯等,既可以指导你补充数据,也可以直接导入 DoWhy 的混杂集合。
人工寻找工具变量难度极高;
当数据存在大量未观测混杂、后门调整失效时,需要工具变量做因果识别,LLM 基于领域知识推荐合理工具变量,配合 DoWhy 工具变量法完成估计。
可以把LLM看成虚拟的领域专家,自动化挖掘各类关键变量,补充领域知识,全程服务于DoWhy建模环节。
辅助因果识别判断,结合d-分离、后门准则,辅助判断当前变量集合下,因果效应是否可识别。
LLM 做反事实推理(结合 SCM 结构因果模型)
Pearl 因果三层阶梯: 关联(观测数据)→ 2. 干预(do 算子、ATE 估计)→ 3. 反事实(最高阶)
传统方案:依靠 SCM 结构因果模型 做反事实推演,要求提前建好完整 DAG + 每个变量的生成函数,建模复杂、计算繁琐;且只能处理公式 / 结构化查询,不支持自然语言提问。
纯 LLM 单独做反事实:直接回答“如果当初没有投放广告,销售额会是多少?”,仅靠文本拼接生成答案,没有因果约束,属于 “瞎编”,逻辑和数值都不可信,无法溯源。
当前主流的融合方案是 LLM做交互层,SCM做计算层。
- 自然语言解析:用户用日常语言提出反事实问题,LLM 解析语义,提取出「干预动作、目标变量、约束条件」,翻译成 SCM/do 算子 可识别的结构化指令;
- 因果计算:调用已构建好的 SCM、DAG、do 算子,按照严格因果规则计算反事实结果;
- 结果转述:LLM 将冰冷的数值、逻辑结论,重新转换成自然语言回答用户。
当 SCM 模型残缺(缺少变量关系 / 生成函数)时,LLM 补充行业知识完善 SCM 结构,再执行反事实计算。
案例分析 —- >. 已搭建 SCM:每日学习时长 → 复习质量 → 考试分数 用户提问:“如果学生每天学习时长减少1小时,考试分数会如何变化?”
额外补充:双重差分法
以 “同一片海域中 A、B 两艘船,A 船加装引擎,测算引擎对航行距离的真实效果” 为例,拆解双重差分法的核心逻辑。
两种错误的测算思路
无法区分航程增长来自引擎本身,还是海风、洋流等海洋环境的共同作用,会将环境影响误算为引擎效果,导致结果高估。
无法区分差异来自引擎效果,还是两艘船本身的固有性能差异,会将组间先天差异归因为引擎作用,同样存在偏误。

正确思路:两次相减(双重差分) —– 通过两次减法分别剔除两类干扰,最终得到引擎的净效果:
分别计算 A 船、B 船各自 “政策后航程 – 政策前航程” 的差值。 —— 作用:消除两艘船本身的固有差异(组间固定差异),每组的差值仅反映 “时间推移 + 自身干预” 的总变化。
用 A 船的前后差值,减去 B 船的前后差值。 ——- 作用:B 船未安装引擎,其前后差值完全代表海洋环境等共同因素带来的航程增长;减去这部分共同变化后,剩余增量就是引擎本身带来的净效果。
该逻辑成立的核心前提:两艘船处于同一片海域,海风、洋流等所有外部环境的影响完全一致,即共同冲击对两组的作用相同。

双重差分法(Difference-in-Differences, DID)是因果推断领域经典的准实验方法,广泛应用于政策效果评估。
- 理想的因果推断方法是随机对照实验(RCT),通过随机分组消除选择性偏误,但现实中往往受伦理、成本等约束无法实现。
- 准实验方法通过构造合理的对照组,模拟随机对照实验的因果识别效果,双重差分法是其中应用最广泛的方法之一。
双重差分法的本质是通过两次减法,分离并剔除两类混杂因素,最终得到政策 / 干预的净效应:
补充说明:“共同冲击” 不局限于随时间线性变化的因素,所有同时、同等作用于两组的外部影响都包含在内,是比 “时间趋势” 更宽泛的概念。
平行趋势假设是双重差分法的核心前提(识别 “命门”),不满足该假设则双重差分的估计结果不具备因果解释力。
假设如果没有政策干预,处理组的结果变量变化趋势会与对照组完全一致。
对应航船案例:如果 A 船不装引擎,它的航程增长趋势会和 B 船完全相同 —— 正是因为两组处于同一片海、共同冲击的影响一致,我们才能用 B 船的变化,代表 A 船 “不装引擎时的反事实变化”。
如果两组原本的发展趋势就不相同(对应案例中 “两艘船不在同一片海”),直接做双重差分会把 “两组本身的趋势差异” 误算成 “政策带来的效果”,导致估计结果严重偏误。
基础双重差分回归模型是直观计算公式的严谨代数形式,可通过统计软件自动估计,标准形式为:
Y
=
β
0
+
β
1
⋅
T
r
e
a
t
+
β
2
⋅
P
o
s
t
+
β
3
⋅
(
T
r
e
a
t
×
P
o
s
t
)
+
ε
Y = \\beta_0 + \\beta_1 \\cdot Treat + \\beta_2 \\cdot Post + \\beta_3 \\cdot (Treat \\times Post) + \\varepsilon
Y=β0+β1⋅Treat+β2⋅Post+β3⋅(Treat×Post)+ε 其中Treat(分组虚拟变量)和Post(时间虚拟变量)均为 0-1 变量,各参数的具体含义可通过四种场景对应:
| 对照组・政策实施前 | 0 | 0 | β0 | β0:基线值,对照组在政策前的基础结果水平 |
| 对照组・政策实施后 | 0 | 1 | β0+β2 | β2:共同趋势效应,由时间 / 共同冲击带来的结果变化 |
| 处理组・政策实施前 | 1 | 0 | β0+β1 | β1:组间固定差异,处理组与对照组本身固有的结果差距 |
| 处理组・政策实施后 | 1 | 1 | β0+β1+β2+β3 | β3:政策净效应,即干预带来的因果效应(对应案例中引擎的纯效果) |
将四组数值代入直观公式(处理组前后差 – 对照组前后差)计算,最终结果恰好等于(\\beta_3),说明回归模型与直观逻辑完全等价。
结果显著性:P 值的含义
回归结果中,交互项系数
β
3
\\beta_3
β3对应的 P 值,用于判断政策效应估计结果的可信度:
- 统计学含义:在 “政策完全无效
(
β
3
=
0
(\\beta_3=0
(β3=0)” 的原假设下,观测到当前结果(甚至更极端结果)的概率,本质是衡量结果由随机误差导致的可能性。 - 判断标准:P 值越小,说明结果由随机误差导致的概率越低,政策效应的可信度越高。学术研究中通常以 P<0.05、P<0.01、P<0.001 作为显著性阈值,对应不同数量的星号,星号越多代表统计显著性越强、结果越可信。



