想象你是一位城市交通调度员,负责评估“从A区到B区开通新公交线路X,到底能节省多少通勤时间”。你派调查员记录线路X的运营数据和乘客到达速度Y。神奇的事情发生了:数据表明线路X越快,乘客反而越慢!这显然违背常识。问题出在哪里?原来调查员没注意到,还有一条“隐藏的轨道Z”——比如新开的地铁Z,它同时影响了线路X的发车频率(为了错峰)和乘客的实际到达速度(因为更多人被地铁吸走)。这条隐藏通道像一条“后门小道”,把与X无关的影响偷偷输送给了Y,让你误以为X导致了Y。在因果推断的世界里,这张画满箭头和节点的路线图就是“有向无环图(DAG)”,而那条隐藏通道正是我们常说的“混淆变量”。DAG让我们把混乱的数据流画成一张清晰的地图,从而识别并切断这条“后门小道”,找回真实的因果效应。

岗位关联

掌握DAG与混淆变量识别,是AI从业者从“相关预测”走向“因果决策”的关键一步,可显著提升模型在政策评估、医疗诊断等核心场景中的稳健性与可信度。

目录
  1. 可视化演示
  2. DAG构成要素
  3. 混淆变量定义
  4. 后门路径识别
  5. 阻断混淆策略
  6. 因果效应计算
  7. 案例实战演练
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

DAG构成要素

回到开头的交通调度员。你手里有一张城市轨道图,每个站点是一个“变量”,每条轨道是有方向的“箭头”——它指向影响的方向。注意,这张图有一个铁律:不能有回路。也就是说,你不可能从A站出发,沿着箭头方向绕一圈又回到A站。这叫“有向无环”。为什么必须无环?因为现实世界中,因必须先于果,不能自己导致自己。

在因果推断中,我们把研究的变量画成节点。比如追踪一个“抽烟X是否导致肺癌Y”的研究,节点就是“是否抽烟”、“是否患肺癌”,可能还有“年龄Z”、“空气污染W”等。箭头代表“直接影响”。注意箭头方向错了,整个因果故事就讲错了。

DAG的价值在于它显式区分了“相关”和“因果”。如果两变量之间只有一条直接箭头相连,我们自然认为有因果;但如果它们通过第三个节点间接相连,那只是“存在一条通道”,未必是因果。这个区分正是后续所有分析的地基。

理解这几个部分后,你再看任何因果网络图,就能像看地铁线路图一样,一眼找出“哪站直接相连、哪站之间需要换乘”,这正是后面识别混淆通道的基本功。

DAG=(V,E),E={(vi→vj):vi 直接影响 vj}\text{DAG} = (\mathcal{V}, \mathcal{E}), \quad \mathcal{E} = \{(v_i \rightarrow v_j): v_i \text{ 直接影响 } v_j\}
通俗理解:DAG是一个由“节点集合V”与“有向边集合E”组成的图,每条边由原因指向结果,且不存在任何有向环路。
  1. 节点集合 \(\mathcal{V}\)代表研究中的所有变量,例如处理变量X、结局变量Y以及可能的混合因子Z。
    V={X,Y,Z,…}\mathcal{V} = \{X, Y, Z, \ldots\}
  2. 有向边集合 \(\mathcal{E}\)由节点对构成的有序对,箭头由原因指向结果,表示“直接因果影响”。
    E={(vi,vj)∣vi→vj}\mathcal{E} = \{(v_i, v_j) \mid v_i \rightarrow v_j\}
  3. 有向无环约束从任意节点出发,沿箭头方向无法回到自身,排除循环因果逻辑。
    ∄ 路径 v⇝v(长度≥1)\nexists \text{ 路径 } v \rightsquigarrow v \text{(长度} \geq 1\text{)}

混淆变量定义

你开着公交车研究“专车服务X对乘客满意度Y的影响”。结果发现数据里满意度不断下降。你百思不得其解,直到你注意到窗外——城市正在大规模修路,车流速度降了一半。修路这件事(Z)同时导致了你的专车变慢(X变差)和乘客满意度下降(Y变差)。就算你的专车服务其实毫无问题,数据也会呈现出“专车越跑,满意度越低”的假象。这个Z,就是混淆变量。

混淆变量在DAG上有一个非常关键的拓扑特征:它有一条指向X的箭头,又有一条指向Y的箭头,即Z→X和Z→Y。它像一个“共享源头”,给X和Y注入了共同的变化。这种共同变化被统计模型捕捉到时,就会表现为X和Y之间的“伪相关”。

它的危险在于:你无法从X和Y的简单相关性里区分,哪些是X真正作用于Y的因果效应,哪些是Z同时拉动两者产生的“影子效应”。如果只做一个简单回归,X的系数会把影子效应也吃进去,造成严重的估计偏倚,甚至符号反转。

现在你明白了:修路Z是那个“潜在的共同故事”。只要Z没被纳入视野,你看到的“专车导致不满”就是一场因果错觉。要破除错觉,就得先承认Z的存在,并想办法绕开它的干扰。

Bias(X→Y)=Cov(Z,X)⋅Cov(Z,Y)Var(X)\text{Bias}(X \to Y) = \frac{\text{Cov}(Z, X) \cdot \text{Cov}(Z, Y)}{\text{Var}(X)}
通俗理解:混淆变量带来的偏倚等于“Z与X的牵动程度”乘以“Z与Y的牵动程度”再除以X自己的波动。只要Z同时与两者相关,这个偏倚就不会为零。
  1. 协方差 \(\text{Cov}(Z, X)\)量化Z与X之间的共同变化程度,Z每变化一单位平均伴随X变化多少。
    Cov(Z,X)=1n∑i=1n(Zi−Zˉ)(Xi−Xˉ)\text{Cov}(Z, X) = \frac{1}{n}\sum_{i=1}^{n}(Z_i - \bar{Z})(X_i - \bar{X})
  2. 协方差 \(\text{Cov}(Z, Y)\)量化Z与Y之间的共同变化程度,用于衡量Z对Y的牵动作用。
    Cov(Z,Y)=1n∑i=1n(Zi−Zˉ)(Yi−Yˉ)\text{Cov}(Z, Y) = \frac{1}{n}\sum_{i=1}^{n}(Z_i - \bar{Z})(Y_i - \bar{Y})
  3. 方差 \(\text{Var}(X)\)X自身的变异程度,作为分母起到归一化作用。
    Var(X)=1n∑i=1n(Xi−Xˉ)2\text{Var}(X) = \frac{1}{n}\sum_{i=1}^{n}(X_i - \bar{X})^2
  4. 偏倚表达式三项组合给出X→Y估计中混入的非因果成分的大小与方向。
    Bias(X→Y)=Cov(Z,X)⋅Cov(Z,Y)Var(X)\text{Bias}(X \to Y) = \frac{\text{Cov}(Z, X) \cdot \text{Cov}(Z, Y)}{\text{Var}(X)}

后门路径识别

在DAG地图上,从X出发,沿着箭头方向可以走到Y。如果这条路径不是“X→Y“的直接因果路径,而是”X←Z→Y“这样的”之字形“路线——先逆着箭头从X走到Z,再顺着箭头从Z走到Y——那它就是一条后门路径。为什么叫后门?因为它不是从X的”正门(出边)“出发,而是从X的”后门(入边)”偷偷溜出去,绕了一圈最终汇入Y。

由于X和Y都受Z影响,这条后门路径在数据上构成一条“信息通道”:它让X和Y即使在没有直接因果链接的情况下也呈现相关。更糟的是,后门路径往往不止一条。在一个复杂的DAG中,可能有多个Z1、Z2、Z3同时作为混淆源,形成多条后门路径。我们要做的,是像交通管控一样,在关键节点上设置“检查站”阻断这些通道。

判断DAG上是否存在后门路径,可以通过d分离概念简化:如果从X到Y的所有路径都被某个节点集合堵住,那么X和Y在给定这个集合时条件独立。这个“堵住”的节点集合就是后门路径的阻断点。实际操作中,我们会用算法遍历X的所有“入边邻居”,然后沿箭头方向搜索可达Y的路径,凡是不经过X出边的路径都算后门路径。

一旦你画出这些后门路径,识别混淆变量就变成了“看图找路”。你不需要猜测哪个变量会误导你,只需要沿着DAG的箭头方向,把所有能绕到Y的岔路找出来。这是系统化、可视化、可审计的,而不是拍脑袋。

Backdoor Paths(X,Y)={X←Z→Y∣Z∈Ancestors(X)∖{X}}\text{Backdoor Paths}(X, Y) = \{X \leftarrow Z \to Y \mid Z \in \text{Ancestors}(X) \setminus \{X\}\}
通俗理解:后门路径集合仅由“从X的祖先节点Z出发,指向Y”的路径组成。只要Z是X的祖先,又指向Y,那么X←Z→Y就构成一条后门路径,无论中间经过多少节点。
  1. 祖先节点集合 \(\text{Ancestors}(X)\)包含所有能沿着箭头方向到达X的节点。例如Z→X,则Z是X的祖先。
    Ancestors(X)={V∣V⇝X}\text{Ancestors}(X) = \{V \mid V \rightsquigarrow X\}
  2. 排除X本身从祖先集合中剔除X自身,防止把自环节点当作混淆源。
    Ancestors(X)∖{X}\text{Ancestors}(X) \setminus \{X\}
  3. 路径形式化定义后门路径的起点是X的某个入边邻居,终点是Y,中间不经过X的任何出边。
    X←Z⇝YX \leftarrow Z \rightsquigarrow Y

阻断混淆策略

好,现在知道问题出在哪了。修路Z同时影响专车速度和满意度,我们不能简单地移除Z(毕竟路是客观存在的),但我们可以控制它。在城市交通里,控制一个站点意味着把车流按“是否受修路影响”分层:看专车在“不受修路影响的日子”里服务是否真的提升满意度。

在统计上,控制混淆变量Z最常见的策略是分层分析。把数据按照Z的取值切成若干层(比如年龄分5组、空气污染分3级),在每一层内分别估计X对Y的效应,最后将各层效应按Z的分布加权平均。相当于把“修路”这个因素固定不变,再来比较。此外还有逆概率加权和匹配法,本质上是“人为构造一个Z分布均衡的虚拟样本”,让混淆变量的影响在比较组间被抵消。

关键问题是:在DAG上,应该在哪些变量上做分层?答案很干脆——就是那些能阻断所有后门路径的变量集合,称为调整集。调整集选取必须足够覆盖后门路径上的关键节点,但又不能“过度调整”如中介变量,否则会错误关闭因果通道。这个平衡就是后门准则的核心。

策略执行下来,你就像指挥官在地图上标记了所有检查站。每一条红色虚线(后门路径)都被至少一个检查站拦截。现在你的数据流里只剩下绿色的因果主干线,终于可以安心地读出X对Y的真实作用了。

Adjustment Set S: 阻断所有 X⇝Y 后门路径,且不包含 X 的后代节点\text{Adjustment Set } \mathcal{S}: \text{ 阻断所有 } X \rightsquigarrow Y \text{ 后门路径,且不包含 X 的后代节点}
通俗理解:调整集就是一组“交通检查站”的集合。只要在每个后门路径上至少设一个检查站,且这些检查站不位于X到Y的因果主干道上,就能获得一致估计。
  1. 阻断所有后门路径调整集S与每条后门路径至少有一个共同节点,并且在该节点上做条件化处理。
    ∀ path p∈BackdoorPaths(X,Y): p∩S≠∅\forall \text{ path } p \in \text{BackdoorPaths}(X, Y): \ p \cap \mathcal{S} \neq \emptyset
  2. 排除X的后代节点若S包含X的后代(如中介变量M),会阻塞X→M→Y的因果传递,导致低估真实效应。
    S∩Descendants(X)=∅\mathcal{S} \cap \text{Descendants}(X) = \emptyset
  3. 输出正交条件满足上述条件后,X与Y在S下的条件关联等于因果关联。
    P(Y∣do(X))=∑SP(Y∣X,S)P(S)P(Y \mid \text{do}(X)) = \sum_{S} P(Y \mid X, S) P(S)

因果效应计算

有了正确的调整集S,如何算出X对Y的因果效应?这里有一个关键区别:我们想要的是干预X的效果,而不是“观察到X”时的相关性。在交通例子里,干预X相当于“强制所有公交车都采用新服务”,而不是“看看采用新服务的车表现如何”。两者天差地别。

“观察到”受Z的混入影响,而“干预”切断了所有指向X的箭头。在DAG上做干预演算,我们的工具是后门调整公式:在给定Z的分层条件下先求条件均值,再按Z的分布加权。每个Z层内,由于Z固定不变,混淆路径被切断;加权后,各层的比例还原真实人群分布,得到全局因果效应。

这个公式看起来只是简单的加权平均,但它在因果推断中的地位相当于牛顿定律之于经典力学:它把“因果量”(do算子)转化为“可计算量”(条件期望)。只要调整集选对了,这个公式给出的就是无偏估计。

当X是连续变量时,把求和换成积分并做回归调整即可;当有多个混淆变量时,求和变成高维求和或倾向评分加权。这个公式是因果估计的“发动机”,后续所有高级方法(如双重机器学习、工具变量)都围绕如何更稳健地实现它展开。

P(Y=y∣do(X=x))=∑zP(Y=y∣X=x,Z=z)⋅P(Z=z)P(Y = y \mid \text{do}(X = x)) = \sum_{z} P(Y = y \mid X = x, Z = z) \cdot P(Z = z)
通俗理解:想算“把X强制设为x时Y的概率”,就把人群按Z分成小组,在每个小组内看“X=x时Y的概率”,最后按各组人数占比加权求和。这样Z的干扰被“平均掉了”。
  1. 干预算子 \(\text{do}(X = x)\)表示“强制将X设置为x”的介入操作,不是自然观测到的x。它切断所有指向X的入边。
    do(X=x):删去所有∗→X的箭头\text{do}(X = x): \text{删去所有} \ast \to X \text{的箭头}
  2. 条件概率 \(P(Y \mid X, Z)\)在给定X与Z时Y的分布,由观察数据直接统计得到。
    P(Y=y∣X=x,Z=z)P(Y = y \mid X = x, Z = z)
  3. 边缘概率 \(P(Z = z)\)Z在总体中的分布比例,用于加权平均。
    P(Z=z)=NzNP(Z = z) = \frac{N_z}{N}
  4. 求和 \(\sum_z\)对Z所有取值求加权和,完成“标准化”或“校准”。
    ∑z⋯×P(Z=z)\sum_{z} \cdots \times P(Z = z)

案例实战演练

让我们用一个小例子把前面的知识串起来。假设你在某互联网医疗平台工作,产品经理想知道:“鼓励用户佩戴智能手环(X=1)能否降低医疗费用(Y)?”你拿到观察数据后发现:佩戴手环的人医疗费用反而更高。如果草率得出结论“手环有害”,你会砍掉一个可能的好产品。

你画了一张DAG:X(佩戴手环)→Y(医疗费用降低)。但注意到Z(健康意识高的人更爱戴手环,而健康意识高的人本身也更爱体检更常就诊,医疗费用记录更高)。所以Z同时指向X和Y,是一条后门路径。你决定用后门调整公式控制Z:把人群按“健康意识”分层(或控制可观测的代理变量如就诊频率),在每层内重新比较费用。结果发现:同样健康意识的人中,戴手环的小组医疗费用比不戴的降了5%。符号反转了!之前的“手环有害”完全是混淆变量制造的假象。

实践中,你需要用Python实现这套流程。核心代码就是:先画DAG确认调整集,再用分层或加权法计算因果效应。你可以先用 statsmodels 做普通线性回归作为基线,再用 causalml 或自定义加权估计做调整后的效果。最终报告里,你不仅展示“手环能省钱”,还要附上DAG图,让读者信服调整集的合理性。

这个实战案例告诉我们,DAG不是纸上谈兵。它直接决定了你的模型是“看见因果”还是“看见幻觉”。在AI领域做用户增长、推荐系统评估、医疗诊断支持,只要涉及“我们要不要这么做”的决策问题,DAG就是那个帮你透过数据迷雾看清真相的透镜。

AI 应用场景

医疗AI疗效评估

阶段:数据预处理与因果效应估计

解决的问题:评估新药对患者康复时间的效果时,患者的年龄、基础疾病等同时影响用药选择和康复结果,导致简单对比产生偏倚。利用DAG识别混淆路径,通过后门调整公式消除偏倚。

具体案例:某医院引入AI辅助用药推荐系统,需要评估系统推荐的用药方案是否显著降低再入院率。数据中包含大量混杂因素(如并发症指数、患者贫困指数)。团队绘制DAG后确定调整集,用倾向评分加权法分析,显示再入院率降低12%,而传统回归显示反而升高3%。

智能推荐系统因果纠偏

阶段:模型评估与线上策略优化

解决的问题:评估推荐算法改版对用户时长的真实影响时,“用户活跃度”同时影响曝光量和时长,构成混淆。DAG帮助区分算法效应与用户特质效应。

具体案例:某视频平台的推荐团队用DAG建模发现“登录频次”是主要混淆变量。通过分层分析,在相同登录频次用户内对比新旧算法时长,效果由负转正,最终确认新算法提升人均时长6.8%。

经济学政策效果评估

阶段:因果识别与稳健性检验

解决的问题:评估最低工资政策对就业的影响时,地区经济景气度同时影响政策实施概率和就业率。用DAG整理后门路径,通过倍差法与后门调整结合,识别政策净效应。

具体案例:研究者在观测数据中引入“地区产业结构”作为混淆变量,在DAG指导下选择匹配调整集,发现最低工资上调对就业的负面效应从-3.2%校正为-0.8%,与理论预期一致。

Python 演示

python31 行
# -*- coding: utf-8 -*-"""演示混淆变量导致的偏倚与后门调整的修正效果"""import numpy as npfrom sklearn.linear_model import LinearRegression np.random.seed(42)n = 5000 # 生成混淆变量Z: 健康意识(标准化分数)Z = np.random.normal(0, 1, n) # 处理变量X: 佩戴手环(0/1), 受Z影响p_x = 1 / (1 + np.exp(-(0.8 * Z - 0.2)))X = np.random.binomial(1, p_x) # 结局变量Y: 医疗费用(对数), 受X和Z影响effect = -0.5  # 真实因果效应: 戴手环降费Y = 5.0 + effect * X + 1.2 * Z + np.random.normal(0, 0.5, n) # 错误模型: 忽略Z, 直接回归X->Ym1 = LinearRegression().fit(X.reshape(-1, 1), Y)bias_est = m1.coef_[0] # 正确模型: 后门调整, 控制ZXZ = np.column_stack([X, Z])m2 = LinearRegression().fit(XZ, Y)adj_est = m2.coef_[0] print(f"真实因果效应:        {effect:.2f}")print(f"忽略混淆的估计(有偏): {bias_est:.2f}")print(f"后门调整的估计(无偏): {adj_est:.2f}")
目的:生成含混淆变量的模拟观察数据,对比“忽略Z”与“控制Z”两种策略下X对Y的估计差异,直观展示后门调整的价值。
  1. Z = np.random.normal(0, 1, n)生成标准化混淆变量,模拟健康意识,均值为0方差为1。
  2. p_x = 1 / (1 + np.exp(-(0.8 * Z - 0.2)))用sigmoid函数将Z映射为佩戴手环的概率,Z越高越可能戴。
  3. Y = 5.0 + effect * X + 1.2 * Z + ...构造Y受真实效应X与混淆Z共同作用的线性模型。
  4. LinearRegression().fit(X.reshape(-1, 1), Y)忽略Z的直接回归,系数会吸收Z的干扰。
  5. np.column_stack([X, Z])将X与Z拼成特征矩阵,实现后门调整,控制Z后估计真实效应。
  6. print(...)对比两个估计值的差异,验证混淆偏倚的修正效果。

常见误区

误区我只要找和X、Y都相关的变量,它一定就是混淆变量,全放进模型里控制就行。

正解混淆变量在DAG上的精确定义是“同时作为X的祖先和Y的祖先”的节点。相关性不等于混淆结构。有些变量与X、Y都相关但只是中介或对撞点,加入它们反而会引入偏倚。比如“服用药物”与“病症”和“痊愈”都相关,但它是中介变量,控制了它就把治疗效果抹掉了。应该先画DAG,再根据拓扑结构判断哪些是混淆变量。

为何常见:因为日常交流中“相关”一词太笼统,大家容易把统计关联与因果结构混为一谈,忽略了DAG提供的方向信息。

误区把能搜集到的所有变量都放进回归模型,就算控制好混淆了,变量越多越保险。

正解DAG的“过度调整”是个大坑。如果把中介变量或对撞变量纳入调整集,会阻断因果通路或人为制造虚假相关(M偏倚)。正确做法是只调整能阻断所有后门路径的最小充分调整集。多控制不代表多准确,可能反而引入偏倚。后门准则给的是“需要且只需”的变量集合。

为何常见:人们天然有“用更多信息防漏”的心理,而缺乏对因果结构图的依赖,导致靠数量代替结构。

误区回归调整后系数从正变负,一定是代码写错了或者Z选错了。

正解符号反转恰恰可能是DAG修正了混淆偏倚的典型信号。在真实因果效应为正、混淆偏倚反向很强的情况下,忽略混淆时估计为负,控制Z后符号转为正。反过来,如果在没有明确DAG逻辑时符号随意跳动,才需要警惕是调整集或模型选择有问题。符号反转本身不是错误,而是机制被识破的证明。

为何常见:传统回归训练中人们习惯“符号稳定”的模型,但因果分析里符号反转是“剔除影子效应后真相浮出水面”的常见现象,缺少这个认知就容易被表象迷惑。

误区如果存在无法测量的混淆变量(比如基因风险),后门调整公式就没用了,DAG也白搭。

正解DAG的价值恰恰在于它能让研究者明确标出未观测混淆变量的存在,然后选择合适的识别策略。比如工具变量法、前门准则、代理变量调整等,都能在未观测混淆存在时识别因果效应。DAG不能消除不确定性,但能帮你系统性地选择替代识别方案,而不是绝望地放弃。

为何常见:教材往往先讲可观测混淆的后门调整,让人误以为这是唯一工具,忽略了DAG作为“分析框架”的整体作用。

误区DAG完全是主观的,不同人画的图不一样,结论就不用信任了。

正解DAG确实包含主观判断,但这种主观性是可分析的。通过敏感性分析,能评估即使有未观测路径,结论是否依然稳健;通过不同DAG方案的对比,也能看清哪个节点设置对结果影响最大。DAG的价值不是“绝对真”,而是“让假设透明化”,把隐藏的前提摆到桌面上供团队审查。工业界远比“声称无偏”更看重这种透明性。

为何常见:人们对模型总期待“客观准确”,而DAG需要领域知识注入,让习惯了端到端训练的人感到不适,忽视了统计分析本身也一样依赖假设。

面试题

Q1. DAG中的“有向无环”含义是什么?

单选题 · easy

  • A.所有边都单向且没有回路← 正确答案
  • B.节点之间存在双向箭头
  • C.任意两点间都可相互到达
  • D.图中有环且方向固定

答案:A。有向无环指每条边有方向,且沿方向不能回到自身。选项B出现双向箭头会形成环,C是连通性概念,D直接与无环矛盾。DAG保证因果关系的时间顺序不会循环。

Q2. 混淆变量的核心特征是?

单选题 · easy

  • A.与X无关但与Y相关
  • B.同时指向X与Y的祖先节点← 正确答案
  • C.只与X相关而与Y无关
  • D.位于X和Y之间的中介节点

答案:B。混淆变量的定义是同时作为X和Y的共同祖先,虚线路径X←Z→Y。A只满足一半,C只解释X的变化,D的中介变量是因果路径一部分而非混淆源。

Q3. 下列哪条属于X到Y的后门路径?

单选题 · single

  • A.X→Y
  • B.X→M→Y
  • C.X←Z→Y← 正确答案
  • D.X→Z→Y

答案:C。后门路径的特征是起点为X的入边,即X←……,选项C符合。A是直接因果路径,B是中介路径,它们的箭头方向都是从X出发,属于前门路径。

Q4. 后门调整公式中do(X)的含义是?

单选题 · mid

  • A.观察到X的条件概率
  • B.强制干预X取特定值← 正确答案
  • C.X与Z的联合分布
  • D.对X做随机抽样

答案:B。do算子表示主动干预,例如强制所有人佩戴手环,而不是观察谁在戴。随机抽样只改变样本代表性,不切断混淆路径;条件概率是观测值而非干预值。

Q5. 以下哪些策略可以阻断混淆路径?

多选题 · mid

  • A.按Z分层分析← 正确答案
  • B.逆概率加权← 正确答案
  • C.控制中介变量M
  • D.匹配法构造均衡样本← 正确答案

答案:ABD。分层、加权、匹配都是在Z上条件化以切断Z→X或Z→Y,正确。控制中介M会阻断因果主干道,产生过度调整偏倚,错误。

Q6. 纳入对撞变量C(X→C←Y)到回归模型会导致?

单选题 · mid

  • A.消除混淆偏倚
  • B.阻断因果路径
  • C.引入虚假相关← 正确答案
  • D.增强X对Y的效应

答案:C。对撞点C同时接收X和Y的箭头,条件化C后X与Y会通过C诱导出新的相关性,称为M偏倚。这不仅不阻断混淆,反而制造虚假关联。

Q7. 关于调整集的选择,下列说法正确的是?

多选题 · hard

  • A.应包含所有后门路径上的至少一个节点← 正确答案
  • B.不能包含X的后代节点← 正确答案
  • C.包含的变量越多越好
  • D.满足后门准则的调整集可能不止一个← 正确答案

答案:ABD。后门准则要求阻断所有后门路径且不包含X的后代,A和B正确。不同调整集只要都满足后门准则就会给出相同的一致估计,但数量多不等于更好,C错。

Q8. 如果存在未观测混淆变量,下列哪种识别策略依然可能有效?

单选题 · hard

  • A.工具变量法← 正确答案
  • B.简单线性回归
  • C.增加样本量
  • D.主成分分析降维

答案:A。工具变量通过只影响X不影响Y的变量,在存在未观测混淆时仍能识别因果效应。增加样本量和降维无法消除结构性偏倚;简单回归必然有偏。

Q9. DAG分析中,正确的审慎态度是?

多选题 · hard

  • A.用敏感性分析验证未观测路径← 正确答案
  • B.假设DAG一定正确并盲目依赖
  • C.透明地展示假设供团队审查← 正确答案
  • D.忽略领域知识自动推断结构

答案:AC。DAG的结论依托于结构假设,敏感性分析和假设透明化是标准做法。选项B盲目自信、D忽略领域知识都与DAG的方法论本质冲突,因为DAG本身需要领域知识构建。

Q10. 一位分析师发现控制Z后效应从-2变为+1.5,最合理的解读是?

单选题 · easy

  • A.模型代码出错了
  • B.Z是混淆变量且原估计有偏← 正确答案
  • C.Z是中介变量被错误控制
  • D.数据量不足以得出结论

答案:B。在DAG结构合理时,符号反转是混淆偏倚被剔除后的典型信号,说明Z确实掩盖了真实正效应。中介或数据量问题需结合DAG判断,不能凭空猜错。