老王是城郊果园的主人,他研发了一种新肥料,坚信能让苹果增产。为了说服采购商,他随手挑了两片果园:一片施肥,一片不施。结果施肥园的产量确实更高。老王很高兴,可隔壁老李却泼冷水:“你那片园子本来土壤就肥、日照也好,产量高说不定是地好,跟肥料没关系!” 老王愣住了。他发现,自己真正想知道的是一个问题:如果当初没有施肥,这片园子到底会结多少苹果? 这个“如果当初”的世界永远不会发生,但它恰恰是因果推断要回答的命题。本篇文章就像陪老王做一次“果园科学实验”:先理解为什么相关不等于因果,再学习两种最常用的观察数据评估方法——双重差分(DID)和倾向得分匹配(PSM),最后把它们落地到真实的数据治理与 MLOps 工程中,让 AI 从业者能区分“看到的相关”与“可靠的因果”。

岗位关联

掌握因果推断,你就能在 A/B 实验无法完美随机时依然给出可信的结论;它是算法工程师、数据科学家从“会预测”走向“能决策”的分水岭,也是数据可信层建设中衡量策略效果的核心能力。

目录
  1. 可视化演示
  2. 因果基础
  3. 反事实框架
  4. 双重差分原理
  5. 双重差分实战
  6. 倾向得分匹配原理
  7. 倾向得分匹配实战
  8. 评估方法综合
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

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

双重差分法:平行趋势假设 处理组与控制组在干预前具有平行趋势 处理效应 = 实际值 - 反事实估计 DID = (Y_T,post - Y_T,pre) - (Y_C,post - Y_C,pre) DID通过两组差分消除时间趋势偏差

因果基础

果园里的故事远不止老王一家。老李发现,老王的苹果卖得好,同时也请了最好的除虫师、用了滴灌设备。那么产量高到底是肥料、除虫还是滴灌的功劳?这就引出了因果推断的第一课:相关不等于因果。我们看到两件事同时发生,不代表一件导致另一件。就像公鸡打鸣与太阳升起总是“相关”,但公鸡绝不是太阳升起的原因。

想要证明肥料的因果效应,最理想的办法是随机实验:把果园划成许多小方块,掷硬币决定谁施肥、谁不施。只要样本足够多,两组在土壤、光照、病虫害上会“平均地”相似。这样,两组产量的差异就只能归因于肥料。这就是随机对照试验被称为“金标准”的原因——它从设计上切断了所有混杂因素的干扰。

但现实世界往往不允许我们掷硬币。用户补贴给谁、新功能给谁开放,都是产品策略精心选择的结果。于是我们只能在观察数据中寻找因果线索。观察数据的麻烦在于:处理组和对照组从一开始就不一样,任何直接比较都可能被“混杂偏差”带偏。正因如此,我们需要一套严谨的框架来逼近随机实验的效果,这就是后文的反事实框架、双重差分与倾向得分匹配。

比喻回扣:老王必须承认,施肥园产量高可能只是因为它“底子好”。观察数据就像果园的旧账本,账本不会主动告诉你因果,需要用科学方法从里面“挖”出来。

反事实框架

因果推断的一切,都围绕一个无法直接观测的概念展开:反事实。对老王的每一棵苹果树,我们只能看到一种结果——要么施了肥,要么没施。但因果问题的本质是问:“同一棵树,在另一个世界里如果不施肥,会结多少苹果?”那个世界的产量就是反事实结果。

为了把这个问题数学化,统计学家引入了潜在结果框架。对第 $i$ 棵树,定义 $Y_i(1)$ 表示它接受处理(施肥)时的产量,$Y_i(0)$ 表示它未接受处理时的产量。因果效应就是两者之差。但由于同一棵树不可能同时处于两个世界,我们永远只能观测到其中一个,这就是“潜在结果缺失”问题。

比喻回扣:每个果园老板都想让同一棵树“分身”成两棵,一棵施肥、一棵不施。反事实框架做不了魔法,但它告诉我们:只要找到一群和施肥树足够像的“替身”,就能拼凑出那个看不见的平行世界。

ATE=E[Yi(1)−Yi(0)]\displaystyle ATE = \mathbb{E}[Y_i(1) - Y_i(0)]
这个公式表示:平均处理效应等于“处理结果与反事实结果之差”在所有树上的平均。它把不可能直接观测的个体反事实,转化为可以在人群层面估计的量。
  1. 个体标记下标 $i$ 代表果园里的第 $i$ 棵树,用于区分不同样本。
    Yi(1)Y_i(1)
  2. 处理世界$Y_i(1)$ 是这棵树如果真的施了肥,将会结出的苹果产量。
    Yi(1)Y_i(1)
  3. 对照世界$Y_i(0)$ 是同一棵树如果没施肥,在平行世界中会结出的产量。
    Yi(0)Y_i(0)
  4. 个体因果效应两者相减,得到这棵树因为肥料而多产出的苹果数量。
    Yi(1)−Yi(0)Y_i(1) - Y_i(0)
  5. 平均到群体$\mathbb{E}$ 表示对所有树取平均,得到整体层面的平均处理效应。
    E[Yi(1)−Yi(0)]\mathbb{E}[Y_i(1) - Y_i(0)]

双重差分原理

既然不能回到过去,老王换了一个思路:他找到一片从未施过肥的邻居果园作对照,记录两组果园在施肥前后的产量变化。如果两组在施肥前有着相似的增长势头,那么施肥后处理组多出来的那部分变化,就可以归功于肥料。这种方法就是双重差分(Difference-in-Differences,DID)。

DID 的聪明之处在于做了两次差分:第一次差分,看处理组“施肥前后”的产量变化;第二次差分,看对照组“同一时间段前后”的产量变化。把两者相减,就能剔除掉“时间本身带来的自然增长”,剩下的才是处理带来的净效应。它依赖一个关键前提——共同趋势假设:如果没有施肥,处理组会和对照组沿着相同的轨迹变化。

比喻回扣:DID 就像用邻居果园当“镜子”,照出如果自己不施肥会怎样。两片园子不需要起点相同,只要“成长节奏”一致,施肥后那一下“跳升”就无处遁形。

δ^=(YˉT,after−YˉT,before)−(YˉC,after−YˉC,before)\displaystyle \hat{\delta} = \left(\bar{Y}_{T,\text{after}} - \bar{Y}_{T,\text{before}}\right) - \left(\bar{Y}_{C,\text{after}} - \bar{Y}_{C,\text{before}}\right)
这个公式是 DID 的核心估计量:处理组前后平均值之差,减去对照组前后平均值之差。它把“时间趋势”和“组间固有差异”同时减掉,剩下纯粹的因果效应。
  1. 处理组前后差分$\bar{Y}_{T,\text{after}} - \bar{Y}_{T,\text{before}}$ 表示施肥园从施肥前到施肥后的平均产量变化。
    YˉT,after−YˉT,before\bar{Y}_{T,\text{after}} - \bar{Y}_{T,\text{before}}
  2. 对照组前后差分$\bar{Y}_{C,\text{after}} - \bar{Y}_{C,\text{before}}$ 表示邻居果园在同一段时间内的平均产量变化,代表“什么都不做也会有的增长”。
    YˉC,after−YˉC,before\bar{Y}_{C,\text{after}} - \bar{Y}_{C,\text{before}}
  3. 差分再差分把两组各自的变化量相减,剔除共同的时间趋势。
    (YˉT,after−YˉT,before)−(YˉC,after−YˉC,before)\left(\bar{Y}_{T,\text{after}} - \bar{Y}_{T,\text{before}}\right) - \left(\bar{Y}_{C,\text{after}} - \bar{Y}_{C,\text{before}}\right)
  4. 估计量标记$\hat{\delta}$ 头上的小帽子表示这是从样本数据中估计出来的因果效应,而不是真实值。
    δ^\hat{\delta}

双重差分实战

DID 在实际工程中,第一步是准备面板数据:同一批果园在多个时间点上都要有产量记录。只有“前后两期+处理对照两组”的经典结构还远远不够,真正落地时还要回答三个问题:分组是否稳定?时间趋势是否平行?政策干预的时点是否清晰?

首先要做平行趋势检验。常见做法是观察处理前多个时间点的产量走势,若处理组和对照组在干预前保持同步,就说明共同趋势假设有一定可信度。其次,干预时点必须明确,比如“新功能在 3 月 1 日对所有实验组用户全量上线”,这个日期就是政策的锚点。若时点模糊,DID 的因果解释就会大打折扣。

在多期面板或分组政策逐步推广的场景中,还可以扩展为多期 DID,用固定效应模型控制不可观测的组间差异和时间冲击。最终的结论报告不能只写一个效应值,还要给出置信区间、样本量、平行趋势检验结果和稳健性检验,例如更换对照组、剔除部分样本后结论是否依然成立。这也是数据团队向业务方交付因果结论时的基本工程素养。

比喻回扣:老王如果要向采购商证明肥料有效,光有一张对比表不够,还得拿出“施肥前三年两组产量曲线几乎重合”的图。数据可信,结论才有人信。

倾向得分匹配原理

故事到了另一片果园。老王没有历史面板数据,只有今年秋季的一批截面数据:有些树施了肥,有些没施。直接比产量,施肥树平均高 20%,但这批树又高又壮、日照充足。怎么才能公平对比?老王想到了“找替身”:对每一棵施肥树,在未施肥的树里找一棵在土壤、光照、品种上都最像的树配成一对。

但果园的维度那么多,“像”该怎么定义?统计学家给出了一个简洁的思路:倾向得分。它把多维特征压缩成一个概率——这棵树被施肥的概率。如果两棵树被施肥的概率几乎相同,那么它们就可以被看作“可互换”的,因为施肥与否在这个概率水平上近似随机。倾向得分通常用逻辑回归估计。

比喻回扣:倾向得分就像给每棵树打了一个“施肥倾向指数”。老王不用逐条比土壤和光照,只看指数相近的树,就能组成一对对“双胞胎”,从而公平地比较产量。

e(Xi)=P(Ti=1∣Xi)=11+exp⁡(−Xiβ)\displaystyle e(X_i) = P(T_i=1 \mid X_i) = \frac{1}{1+\exp(-X_i\beta)}
这个公式表示:给定个体特征 $X_i$ 后,它被分到处理组的条件概率。倾向得分把“高维相似”转化为“一维相近”,是 PSM 实现匹配的基础。
  1. 特征向量$X_i$ 是第 $i$ 棵树的特征集合,比如树龄、土壤肥力、光照时长和品种。
    XiX_i
  2. 处理指标$T_i=1$ 表示这棵树施过肥,$T_i=0$ 表示没施肥;$P(T_i=1 \mid X_i)$ 是在已知特征条件下施肥的概率。
    P(Ti=1∣Xi)P(T_i=1 \mid X_i)
  3. 线性组合$X_i\beta$ 是特征与系数的线性加权,系数 $\beta$ 刻画每个特征对施肥概率的影响大小。
    XiβX_i\beta
  4. Sigmoid 变换$\frac{1}{1+\exp(-z)}$ 把任意实数的线性组合压缩到 0 到 1 之间,使其成为合法的概率。
    11+exp⁡(−Xiβ)\frac{1}{1+\exp(-X_i\beta)}
  5. 完整定义$e(X_i)$ 就是倾向得分,取值范围在 0 和 1 之间,越接近 1 表示越可能被施肥。
    e(Xi)e(X_i)

倾向得分匹配实战

PSM 的工程实现并不复杂,但细节决定成败。首先,协变量选择要克制:应当选择同时影响“是否施肥”和“产量”的变量,例如树龄、土壤、光照;不能把施肥后的结果变量也塞进模型,否则会产生“坏的控制”。

第二步是估计倾向得分并实施匹配。最常用的是最近邻匹配,为每个处理样本找倾向得分最接近的对照样本;也可以用卡尺匹配限制得分差距,避免强行匹配“不像”的样本。匹配完成后,需要检查共同支撑:如果处理组的得分范围远超对照组,那么超出区域没有可匹配的替身,这些样本应当被舍弃或谨慎处理。

第三步是平衡性检验。检验匹配后的两组在协变量均值上是否不再有明显差异,就像确认配对后的果树在树龄和土壤上确实“门当户对”。只有通过平衡性检验,ATT(处理组平均处理效应)计算才可信。最后还要做敏感性分析,考察是否存在未观测到的混杂变量足以推翻结论。在 MLOps 实践中,这些步骤应当被固化为可重复执行的评估管道,进入数据可信层的 CI 流程。

比喻回扣:匹配完成后,老王手里就多了一本“双胞胎对照册”:每棵施肥树都有一个不施肥的替身。两边的产量差,才是肥料真正带来的增量,而不是土壤和阳光的功劳。

ATT=1NT∑i:Ti=1(Yi−Ymatch(i))\displaystyle \text{ATT} = \frac{1}{N_T}\sum_{i: T_i=1}\left(Y_i - Y_{match(i)}\right)
这个公式说明:处理组平均效应等于每个处理样本的产量,减去它匹配到的对照组替身产量,再对所有处理样本取平均。
  1. 处理样本集合$N_T$ 是所有施过肥的树的个数,$i: T_i=1$ 表示遍历这些处理样本。
    NTN_T
  2. 观测结果$Y_i$ 是第 $i$ 棵施肥树的真实产量。
    YiY_i
  3. 替身结果$Y_{match(i)}$ 是与第 $i$ 棵树匹配上的未施肥树的产量,用来充当反事实。
    Ymatch(i)Y_{match(i)}
  4. 个体差值$Y_i - Y_{match(i)}$ 是一对匹配样本的产量差,近似于单棵树的因果效应。
    Yi−Ymatch(i)Y_i - Y_{match(i)}
  5. 整体平均对所有处理样本求和再除以 $N_T$,得到处理组的平均处理效应。
    1NT∑i:Ti=1(Yi−Ymatch(i))\frac{1}{N_T}\sum_{i: T_i=1}\left(Y_i - Y_{match(i)}\right)

评估方法综合

面对具体业务问题,选择 DID 还是 PSM,关键在于数据形态与假设强度。DID 适合有时间面板、有明确政策时点的场景,比如新功能上线前后对比;PSM 适合单期截面数据、有丰富协变量的场景,比如从历史用户中筛出相似对照组。如果两者都满足,更推荐双重稳健(Doubly Robust)策略:先做 PSM 再在匹配样本上做 DID,或者同时用两种方法交叉验证。只要其中一种模型设定正确,结论就是稳健的。

工程落地上,因果推断不是一次性的分析脚本,而应嵌入 MLOps 的评估体系:实验平台记录分组、干预时点和指标;数据管道沉淀面板数据;算法模型提供倾向得分;监控系统定期检验平行趋势与平衡性是否被破坏。这样,当业务方问“这个策略真的有效吗”时,数据团队能够快速、可信地回答。

比喻回扣:老王最终明白,果园里没有一劳永逸的魔法。DID 是看时间线上的“跳变”,PSM 是找空间里的“替身”,把两者结合起来的果园科学,才能让每一份肥料都花得明明白白。

AI 应用场景

A/B 测试与实验管理

阶段:实验管理与效果评估

解决的问题:互联网公司做 A/B 测试时,流量有限、用户非随机进入实验组,直接比较转化率会被用户活跃度、历史行为等混杂因素干扰。DID 可以利用实验前后的双期数据,剔除自然趋势,得到净增量。

具体案例:某推荐算法策略对 10% 用户灰度上线,评估“人均时长”提升效果。数据团队拉取实验组与对照组上线前后各 4 周的面板数据,先做平行趋势检验,再计算双重差分估计量,最终给出“人均时长提升 3.2%,置信区间 [2.1%, 4.3%]”的因果结论。

营销补贴策略评估

阶段:用户增长与策略决策

解决的问题:平台向部分用户发放补贴券,但发券对象由运营规则挑选,领券用户本身更活跃,直接比较 ROI 会高估补贴价值。PSM 能在未领券用户中找到特征相似的替身,还原“如果不发券会怎样”。

具体案例:某电商平台评估“满减券”的增量 GMV。数据团队用历史订单、活跃度、客单价等特征估计倾向得分,进行最近邻匹配并通过平衡性检验,计算出补贴带来的真实 ATT,发现真实 ROI 比朴素比较低 40%,帮助业务重定预算。

MLOps 特征上线与数据可信层验证

阶段:模型上线监控与数据质量验证

解决的问题:新特征管道切换后,模型离线指标提升但线上效果未知,且上线期间恰逢大促,用户行为整体上涨。DID 可分离出“大促自然增长”与“特征切换真实增益”,保障数据可信层建设。

具体案例:某风控团队上线新特征管道,用 DID 评估坏账率变化:对照组沿用旧管道,实验组使用新管道,前后观察 6 周。结果显示新管道使坏账率下降 1.1 个千分点,且平行趋势检验通过,模型正式全量发布。

Python 演示

python57 行
import numpy as np def sigmoid(z):    return 1.0 / (1.0 + np.exp(-z)) def gen_obs(n=2000, seed=42):    rng = np.random.default_rng(seed)    soil = rng.normal(0, 1, n)    sun = rng.normal(0, 1, n)    ps = sigmoid(0.8 * soil + 0.6 * sun)    treat = (rng.uniform(0, 1, n) < ps).astype(int)    y0 = 10 + 2 * soil + 1 * sun + rng.normal(0, 1, n)    tau_true = 3.0    y1 = y0 + tau_true    y = np.where(treat == 1, y1, y0)    return soil, sun, treat, y, ps, tau_true def logistic_ps(X, t, iters=300, lr=0.05):    w = np.zeros(X.shape[1])    for _ in range(iters):        z = X @ w        grad = X.T @ (sigmoid(z) - t) / len(t)        w = w - lr * grad    return w def psm_att(X, treat, y):    w = logistic_ps(X, treat)    ps = sigmoid(X @ w)    treat_idx = np.where(treat == 1)[0]    ctrl_idx = np.where(treat == 0)[0]    diff = []    for i in treat_idx:        j = ctrl_idx[np.argmin(np.abs(ps[ctrl_idx] - ps[i]))]        diff.append(y[i] - y[j])    return np.mean(diff), ps def did_att(y_bt, y_at, y_bc, y_ac):    d_treat = y_at.mean() - y_bt.mean()    d_ctrl = y_ac.mean() - y_bc.mean()    return d_treat - d_ctrl if __name__ == "__main__":    soil, sun, treat, y, ps, tau = gen_obs()    X = np.column_stack([np.ones(len(soil)), soil, sun])    naive = y[treat == 1].mean() - y[treat == 0].mean()    att, _ = psm_att(X, treat, y)    rng2 = np.random.default_rng(1)    y_bt = 10 + 2 * soil + sun + rng2.normal(0, 1, len(soil))    y_bc = y_bt - 1.5    y_at = y_bt + 4 + treat * tau    y_ac = y_bc + 4    att_did = did_att(y_bt[treat == 1], y_at[treat == 1],                      y_bt[treat == 0], y_ac[treat == 0])    print("naive ATT:", round(naive, 3))    print("PSM ATT:", round(att, 3))    print("DID ATT:", round(att_did, 3))    print("true ATT:", tau)
目的:模拟一份带有混杂偏差的果园数据,对比“朴素比较、PSM 匹配、双重差分”三种方式估算平均处理效应,展示因果推断为何更接近真实值。
  1. ps = sigmoid(0.8 * soil + 0.6 * sun)用土壤和光照生成施肥概率,让处理分配带有选择性偏差。
  2. y1 = y0 + tau_true定义真实的因果效应为恒定常量 3,作为评估基准。
  3. naive = y[treat == 1].mean() - y[treat == 0].mean()直接比较两组均值,包含混杂偏差,通常会高估真实效应。
  4. grad = X.T @ (sigmoid(z) - t) / len(t)手写逻辑回归的梯度,用于估计倾向得分。
  5. j = ctrl_idx[np.argmin(np.abs(ps[ctrl_idx] - ps[i]))]最近邻匹配:为每个处理样本找倾向得分最接近的对照样本。
  6. d_treat - d_ctrl双重差分:处理组前后变化减去对照组前后变化,剥离时间趋势。
  7. y_at = y_bt + 4 + treat * tau构造 DID 数据:两组都有共同的时间趋势 4,处理组额外增加真实效应 tau。

常见误区

误区施肥园的苹果产量更高,而且模型显示施肥与产量高度相关,所以肥料一定能增产,直接按这个结论加大投入。

正解相关关系只说明两件事“总是一起出现”,因果关系才说明“改变一个会改变另一个”。果园里土壤好让树更壮,也可能让老板更愿意施肥,两者同时出现并不代表施肥导致增产。只有通过随机化或 DID/PSM 等因果方法剥离混杂后,才能下结论。

为何常见:人的直觉天然擅长发现“共现规律”,却不容易察觉隐藏的共同原因,于是把相关性脑补成因果。

误区只要有两组前后两期的数据,套一个差分公式就能得到因果效应,平行趋势假设只是理论摆设。

正解平行趋势是 DID 的生命线。如果处理前两组增长率就不一样,处理后的差分变化可能只是原有趋势的延续。实务中必须展示处理前多期走势,做平行趋势检验或事件研究图,否则结论可能完全虚构。

为何常见:双重差分公式形式上太简单,容易让人忽略它背后苛刻的识别假设,以为“减一减”就万事大吉。

误区PSM 匹配之后,处理组和对照组在所有方面都一样了,所以算出的 ATT 一定等于真实因果效应。

正解PSM 只能平衡已观测到且被放入模型的协变量。如果存在同时影响处理分配和结果的未观测因素,比如“树主人的勤快程度”,匹配后依然会有隐蔽偏差。因此必须做敏感性分析,并谨慎解释结论。

为何常见:匹配过程让人产生“双胞胎实验”的错觉,仿佛已经复刻了随机对照,忽略了可观测与不可观测之间的鸿沟。

误区建模倾向得分时,把能拿到的变量全部塞进逻辑回归,变量越全匹配越精确,结果越可靠。

正解协变量必须满足“影响处理分配且影响结果”的条件。把结果相关的中介变量或处理后的变量塞进去,会引入“坏控制”,反而制造选择偏差或削弱效应。变量选择要基于因果图,而不是数据量。

为何常见:机器学习训练中“特征越多越好”的惯性思维被带到了因果推断中,忽略了因果建模与预测建模的本质差异。

面试题

Q1. 因果推断最核心要回答的问题是?

单选题 · easy

  • A.两个变量是否一起变化
  • B.两个变量是否有数学相关
  • C.某处理会不会导致结果改变← 正确答案
  • D.某处理后结果如何预测

答案:C。因果推断关注“改变某个处理是否会导致结果发生改变”,即反事实层面的问题。相关只描述共变,预测只关心预报精度,都不回答“会不会导致”。

Q2. 反事实结果指的是?

单选题 · easy

  • A.实际发生的处理结果
  • B.处理之前的历史结果
  • C.假如未处理时的结果← 正确答案
  • D.未来预测出的结果

答案:C。反事实是“同一对象在另一种处理状态下会发生的结果”,即果园那棵树如果不施肥会结多少苹果。历史结果和未来预测都不是平行世界里的对应结果。

Q3. 随机对照试验被称为金标准的主因是?

单选题 · easy

  • A.样本量大且数据完整
  • B.随机化平衡已知未知混杂← 正确答案
  • C.试验成本便宜好执行
  • D.无需对照组即可评估

答案:B。随机化让处理分配与任何潜在混杂因素独立,从而在期望上平衡已知和未知的混杂。样本量大只是辅助,成本低更不是随机试验的特点。

Q4. 双重差分估计量的数学含义是?

单选题 · mid

  • A.处理组前后均值之差
  • B.对照组前预测值之差
  • C.两组各自差分的差值← 正确答案
  • D.处理组后值减去前值

答案:C。DID 先分别计算处理组和对照组的前后变化,再把两个变化量相减,得到“差分的差分”。只算一组的前后差无法排除时间趋势。

Q5. DID 最重要的识别假设是?

单选题 · mid

  • A.两组结果变量分布相同
  • B.共同趋势假设成立← 正确答案
  • C.处理分配完全随机
  • D.样本量足够大

答案:B。DID 不要求两组起点相同,只要求在无处理时两组沿相同趋势变化。若平行趋势不成立,差分后的结果仍有趋势残留。

Q6. 倾向得分的最准确定义是?

单选题 · mid

  • A.样本被分配到处理组的概率← 正确答案
  • B.样本结果受处理的强度
  • C.处理组与对照组的均值差
  • D.模型预测得分的平均值

答案:A。倾向得分是给定协变量后个体进入处理组的条件概率。它不是效应大小,也不是结果差异,而是用于构造可比样本的“相似度标尺”。

Q7. 下列哪种做法最不能消除观察研究中的混杂?

单选题 · hard

  • A.合理构造倾向得分并匹配
  • B.满足条件时使用双重差分
  • C.将全部变量塞入回归模型← 正确答案
  • D.采用双重稳健估计法

答案:C。不加选择地塞入全部变量可能引入中介变量和坏控制,造成新的偏差。PSM、DID 和双重稳健都是规范的混杂控制手段。

Q8. 使用双重差分需要满足哪些条件?

多选题 · mid

  • A.不需要面板数据也可以
  • B.处理组和对照组有共同趋势← 正确答案
  • C.政策干预时点清晰可识别← 正确答案
  • D.处理组对照组的样本都稳定← 正确答案

答案:BCD。DID 需要面板或重复截面数据来观察前后变化,同时需要共同趋势假设和明确的干预时点。样本稳定有助于排除分组变动带来的干扰。

Q9. 下列关于倾向得分匹配的说法正确的有?

多选题 · hard

  • A.只能控制已观测到的混杂变量← 正确答案
  • B.匹配后需检验协变量平衡性← 正确答案
  • C.共同支撑不足时应谨慎结论← 正确答案
  • D.匹配后一定得到真实因果效应

答案:ABC。PSM 无法控制未观测混杂,匹配后要检查两组协变量是否平衡,共同支撑不足时外推很危险。它不会自动产生真实效应,还需满足其他识别条件。

Q10. 若想提升因果推断结论可信度,应采取哪些措施?

多选题 · hard

  • A.做平行趋势或平衡性检验← 正确答案
  • B.只用一种方法并拒绝其他方法
  • C.进行敏感性分析评估未观测混杂← 正确答案
  • D.结合DID与PSM双重稳健策略← 正确答案

答案:ACD。检验识别假设、做敏感性分析、用多种方法交叉验证都能增强可信度。固执于单一方法反而无法暴露模型设定错误。