卷 V · 偷来的CH 20深度 20/24

减不掉的减掉

这一章的方法只需要小学算术:两个差再相减。但它做到了一件前面所有方法都做不到的事——消掉你从来没测过、甚至没想到过的混淆变量。条件是它们不随时间变。

双重差分 DiD平行趋势两个错的相减

▷ 先判一次

某地区上调了最低工资,你想知道它对就业的影响。手上有这个地区和邻近地区、政策前后各一期的就业数据。下面哪种比较最可信?

A 这个地区政策前 vs 政策后B 政策后:这个地区 vs 邻近地区C (这个地区前后差)减去(邻近地区前后差)D 三种都不行,没有随机化就没有因果

A 和 B 各自都有明显的问题。有意思的是,把两个有问题的比较相减,问题会互相抵消。

两个错的,减出一个对的

先看两种朴素的做法为什么错。

做法 A:只看处理组的前后。问题是这期间可能发生了别的事——经济周期、季节、别的政策。你把「时间趋势」也算进了效应里。

做法 B:只看政策后的两个地区。问题是两个地区本来就不一样——产业结构、人口、地理。你把「地区固有差异」算进了效应里。

而这两个错误的方向不同,可以互相抵消:

◆ 双重差分(DiD)
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。