把减不掉的减掉
这一章的方法只需要小学算术:两个差再相减。但它做到了一件前面所有方法都做不到的事——消掉你从来没测过、甚至没想到过的混淆变量。条件是它们不随时间变。
某地区上调了最低工资,你想知道它对就业的影响。手上有这个地区和邻近地区、政策前后各一期的就业数据。下面哪种比较最可信?
A 和 B 各自都有明显的问题。有意思的是,把两个有问题的比较相减,问题会互相抵消。
两个错的,减出一个对的
先看两种朴素的做法为什么错。
做法 A:只看处理组的前后。问题是这期间可能发生了别的事——经济周期、季节、别的政策。你把「时间趋势」也算进了效应里。
做法 B:只看政策后的两个地区。问题是两个地区本来就不一样——产业结构、人口、地理。你把「地区固有差异」算进了效应里。
而这两个错误的方向不同,可以互相抵消:
DiD = (处理组后 − 处理组前) − (对照组后 − 对照组前)
───────────────────── ─────────────────────
效应 + 时间趋势 只有时间趋势
第一次相减(组内前后)消掉了「这个组本身有多高」——包括所有不随时间变的差异,测没测过都一样。
第二次相减(组间)消掉了「这段时间大家都在变什么」。
剩下的,就是处理的效应。
请体会第一次相减的威力。它不要求你知道有哪些混淆变量,也不要求你测量它们。只要它们不随时间变,减法就把它们全带走了——这一点上它和随机化很像,而它不需要你花钱做实验。
跑一遍
这台机器里,处理组本来就比对照组高 8 分(一个「固有差异」),期间还有一个 +4 的共同时间趋势,真效应是 +6:
前 后 差 处理组 58.02 67.99 +9.97 对照组 49.91 54.06 +4.15 ────────────────────────────────────────────── 差的差 = 9.97 − 4.15 = 5.82 真值 6
再看那两种朴素做法错在哪:
- 只看处理组前后:+9.97——高估了 66%,因为混进了 +4 的时间趋势。
- 只看后期两组:+13.92——高估了 132%,因为混进了 +8 的固有差异。
- 差的差:+5.82——对(剩下的 0.18 是抽样误差)。
图上那条品红虚线是关键:它是「如果没有处理,处理组本来会怎么走」——用对照组的变化平移过来的反事实。绿色那一段落差,就是 DiD 估的东西。
全部赌注押在一个假设上
这条虚线怎么画出来的?靠一个假设:
如果没有处理,处理组和对照组的结果会以相同的幅度变化。
注意它不要求两组水平相同(那个被第一次相减消掉了),只要求变化的幅度相同。
而这个假设永远不可检验——因为它说的是一件没有发生的事:「如果没有处理,处理组会怎样」。
拖动那根「破坏平行趋势」的滑杆。你会看到 DiD 的估计一比一地跟着错:滑杆拧到 +2,估计变成 7.8;拧到 −2,变成 3.8。
DiD 没有任何办法分辨「处理的效果」和「本来就不平行」。这两件事在数据上完全同形。
实践中的应对办法(都不是证明,只是增加可信度):
- 看处理前的多期数据:如果政策实施前好几期两组一直平行,那么「刚好在政策那期开始不平行」的可能性就小一些。这叫平行趋势的前置检验(pre-trend test)——注意它检验的是过去,假设说的是未来。
- 安慰剂检验:假装政策在更早的某一期实施,跑一遍 DiD。如果也测出显著效应,说明有问题。
- 换对照组:用几个不同的对照组各跑一次,看结论稳不稳。
你会看到 DiD 被写成一个回归:Y ~ 组 + 期 + 组×期,交互项的系数就是 DiD 估计(上面 demo 里两种算法给出完全相同的数)。
推广到多个组、多期,就是双向固定效应模型(two-way fixed effects, TWFE):Y ~ 处理 + 组固定效应 + 时间固定效应。它长期被当作 DiD 的标准写法。
但过去几年这件事被翻案了。Goodman-Bacon(2021)等一批论文证明:当不同的组在不同时间接受处理(交错处理,staggered adoption)、且效应随时间变化时,TWFE 的系数是一个各组两两比较的加权平均,而其中一些权重是负的——极端情况下,即使所有组的真实效应都是正的,TWFE 也能给出负的估计。
问题出在它把「已经接受处理的早期组」当成了后期组的对照。修正方法有一批(Callaway & Sant'Anna、Sun & Abraham、de Chaisemartin & D'Haultfœuille 等),第 24 章会给入口。如果你要做交错处理的 DiD,这是必须知道的一课。
Card & Krueger(1994)是这个方法最著名的应用:1992 年新泽西州上调最低工资,宾夕法尼亚州没有。他们比较了两州边界附近快餐店的就业变化,结论是就业没有下降——这个结果挑战了当时经济学界的主流看法,引发了持续至今的争论。这篇论文也是 Card 获 2021 年诺奖的主要工作之一。
软件工程里的用法很直接:你上线了一个只影响 Android 的改动,iOS 没变。那么「iOS 的前后变化」就是那条时间趋势,可以从 Android 的变化里减掉。这比「只看 Android 前后」可靠得多,而且不需要做 A/B 测试。
但请老实检查平行趋势:如果那段时间恰好还推了一次只针对 Android 的活动,这个方法就废了。找一段处理前的历史数据,画一张两条线的图,是五分钟就能做的最有价值的检查。
一个具体的反例:如果处理组是「因为业绩开始下滑才被选中接受干预」的,那么处理前可能一直平行(下滑刚开始),处理后本来就该分叉。这叫 Ashenfelter dip,在培训项目评估里非常常见——参加培训的人往往是刚失业的人,而他们的收入本来就会自然回升。
更普遍的教训:「谁被选中接受处理」这件事本身,往往就带着关于未来趋势的信息。这是所有观察性方法共同的敌人。
C(这个地区前后差)减去(邻近地区前后差)。
三个数字:只看处理组前后 +9.97(混进时间趋势),只看后期两组 +13.92(混进固有差异),差的差 +5.82(真值 6)。
A 「前后对比」——最常见的做法,也是最容易高估的。任何和处理同时发生的事,都会被算进效应。 B 「后期两组对比」——把两个地区的固有差异算进了效应。而这些差异往往正是「为什么这个地区会实施这个政策」的原因。 D 「没有随机化就没有因果」——这是第 9 章那道题里 C 选项的错误的加强版。DiD 靠的是一个明确写出的假设(平行趋势),它可能不成立,但它是一个可以讨论、可以部分检验、可以被反驳的假设,这和「什么都不能说」是两回事。这一章的一句话
第一次相减消掉所有不随时间变的东西(包括你没测过的),第二次相减消掉共同的时间趋势;全部赌注押在一个永远不可检验的平行趋势上。
下一章是卷 V 里最干净的一把剪刀。它的想法朴素到近乎粗暴:考 69.9 分和考 70.1 分的人,几乎是同一批人。而唯一的旋钮——带宽——同时也是唯一的软肋:带宽 ±20 给出 7.82,±5 给出 7.95,±2 给出 7.23,真值是 8。