卷 IV · 算出来CH 16深度 16/24

把一个人,压成一个数

第 12 章的分层法有个死穴:变量一多,层就细到没人。1983 年一个定理把这个死穴解掉了,办法出奇地简单——把一个人身上的所有协变量,压成一个数。

倾向得分匹配平衡性检查

▷ 先判一次

你用倾向得分匹配做了一次分析,匹配后所有协变量都完美平衡(标准化均值差都小于 0.01)。这说明?

A 结论可信,混淆已经被消除了B 只说明你放进模型的那些变量平衡了,没测的变量一点保证都没有C 平衡得太好反而可疑,可能是过拟合D 需要看倾向得分模型的 AUC 才能判断

这一题问的是这个方法证明了什么——而这恰恰是倾向得分最容易被误读的地方。

维数灾难

先回顾问题。第 12 章的调整公式要求「按 Z 分层,层内比较」。当 Z 只有一个变量时很顺利:分 100 层,估到 4.8913,逼近真值 5.00。

但如果 Z 有十个变量呢?每个变量哪怕只分 3 档,就是 3¹⁰ = 59049 层。你有一百万个样本,平均每层 17 个人——而且绝大多数层里要么全是处理组,要么全是对照组,根本没法比。

这就是维数灾难在因果推断里的形态。它看起来是个死结。

一个定理,把十维压成一维

◆ 倾向得分定理(Rosenbaum & Rubin, 1983)

定义倾向得分e(Z) = P(X = 1 | Z)——给定这个人的全部协变量,他接受处理的概率。

定理:如果给定 Z 满足可忽略性,那么给定 e(Z) 也满足可忽略性

换句话说:在倾向得分这一个数上配平,就等价于在全部协变量上配平。

这个结论第一次看会觉得像魔术。十个变量的信息,怎么可能压进一个数还不丢东西?

直觉是这样的:混淆之所以有害,唯一的原因是它影响了「谁接受处理」。e(Z) 恰好就是「谁接受处理」这件事的全部内容——它把 Z 里所有与处理分配有关的信息都收进来了,其余的信息本来就不造成混淆。

用图的语言说:e(Z) 是 Z 通向 X 的那条路上的唯一瓶颈。堵住瓶颈,等于堵住整条路。

✎ 术语正名:「平衡得分」

更一般的概念叫平衡得分(balancing score):任何一个函数 b(Z),只要满足「给定 b(Z) 后 X 与 Z 独立」,就是平衡得分。

Z 本身是一个平衡得分(最粗的那个),倾向得分是最细的那个——所有平衡得分都是倾向得分的函数。这就是它「压得最狠而不丢信息」的确切意义。

匹配

有了这个数,做法就直白了:给每个处理组的人,找一个倾向得分最接近的对照组的人,配成一对。然后比较每一对的结果差,取平均。

用第 12 章那台机器(两万人,真效应 +5.00):

配上对的人      9938 对
匹配后的估计    4.9757          真值 5.00
资历 C 的标准化均值差
    匹配前      −1.0539     ← 差了一个标准差还多
    匹配后      −0.0007     ← 基本抹平了

上面那张直方图是关键。蓝色是用了学习计划的人的倾向得分分布,红色是没用的。两个分布重叠得越多,可匹配的人越多。如果它们几乎不重叠(比如一边全挤在 0.9 附近、一边全挤在 0.1 附近),那就是正值性被违反——第 15 章那三个假设里的第二条。

卡钳:一个明码标价的取舍

拖动那根滑杆。卡钳(caliper)是「倾向得分差多少以内才算配得上」的阈值:

  • 卡钳拧小:配对更干净,但配不上的人被丢掉,样本变少,而且估计的对象变了——你估的不再是原来那群人的效应。
  • 卡钳拧大:留下的人多,但配对质量下降,残余混淆回来。

这不是调参,这是在偏差和「你还剩多少人」之间明码标价。而且这个价钱应该被写进报告里:丢掉了多少人、丢掉的是哪一类人。

◆ 倾向得分方法真正的贡献:平衡性检查

倾向得分最有价值的地方,可能不是那个定理,而是它带来的一个工作流

  1. 拟合倾向得分模型
  2. 匹配 / 加权
  3. 检查平衡性——逐个协变量看标准化均值差有没有降下来
  4. 不平衡就回去改模型(加交互项、加多项式),重复
  5. 平衡了,再去看结果

第 3 到第 5 步是关键:整个调参过程完全不看结果变量 Y。

这是一条很硬的纪律。相比之下,回归是「一步到位」的——你把 Y 和协变量一起丢进去,看到系数,不满意就改模型再看系数。这个循环里 Y 一直在场,很容易不知不觉地朝着自己想要的结论调。

倾向得分把这件事拆成了两段,中间那道墙叫「设计与分析分离」(design–analysis separation),是 Rubin 反复强调的一点。它模仿的是随机试验:随机试验里你分组的时候,结果还没发生。

▸ 在现实里

「我们做了倾向得分匹配」这句话在报告里的可信度,取决于后面有没有跟着一张平衡表。没有平衡表的倾向得分匹配,和随手加几个控制变量的回归没有本质区别。

一张合格的平衡表长这样:每个协变量一行,列出匹配前后的标准化均值差,通常还要画一张「爱情图」(Love plot)把它们排在一起看。经验阈值是匹配后 |SMD| < 0.1

另外值得知道的是:匹配的方法有一大家子——1:1、1:k、有放回/无放回、卡钳匹配、核匹配、最优匹配、遗传匹配、以及近年越来越受推荐的直接平衡法(如 entropy balancing,直接解一个优化问题让协变量矩配平,不经过倾向得分这一步)。它们的目标完全一样:造出一对可比的人群。第 24 章会给工具入口。

✗ 这个直觉是错的
倾向得分匹配比回归「更因果」,因为它模仿了随机试验。 两者依赖的识别假设完全相同(都要求可忽略性 / 后门准则成立)。倾向得分不会因为长得像随机试验,就多买到一分因果性。

它相对回归确实有几个真实的优势:不依赖 Y 对协变量的函数形式假设、强迫你检查重叠、把设计和分析分开。但这些是估计层面的优势,不是识别层面的。

一个漏掉的混淆变量,回归会翻车,倾向得分匹配会以完全相同的幅度翻车——而且它的平衡表还会显示一切正常(因为那个变量根本不在表上)。

漂亮的平衡表给人的安全感,是这个方法最危险的副作用。

◇ 判词

B只说明你放进模型的那些变量平衡了,没测的变量一点保证都没有。

平衡表是一份关于表上那些变量的证据。它对表外的变量沉默——而恰恰是表外的变量最可能毁掉你的结论。

所以一份诚实的报告,除了平衡表,还得回答第 22 章那个问题:如果还有一个没测到的混淆,它要多强才能推翻这个结论?

A 「混淆已经被消除了」——被消除的是已测量的混淆。这个词的省略,是这个方法被滥用的主要方式。 C 「平衡得太好可能是过拟合」——平衡性本身不会「过拟合」,它是一个描述性事实。倾向得分模型倒是可能过拟合(比如把样本 ID 加进去),那会导致得分极端、权重爆炸,症状是第 17 章的有效样本量骤降——但表现出来不是「平衡太好」。 D 「看 AUC」——一个很常见的错误。倾向得分模型的目标不是预测得准,是让协变量平衡。AUC 太高反而是坏消息:它意味着两组人几乎可以被完全区分开,也就是没有重叠,正值性被违反。该看的是平衡表,不是 AUC。

这一章的一句话

倾向得分把任意多的协变量压成一个数,代价不变:它只处理你测到的那些;而它最大的贡献,是逼你在看结果之前先把设计做完。

下一章讲另一种用倾向得分的方式——加权,以及一个近乎神奇的性质:两个模型,写错一个还站得住。你会看到一张 2×2 表,四格里三格落在真值 5.00 附近,只有「两个都写错」那一格崩到 −3.32