交错处理 DID 的暗账:你的「对照组」里坐着已经吃过药的人
【锚点】这一篇只钉一个判断:在交错处理(staggered adoption)下,最常用的双向固定效应 DID 估计量 β_TWFE,并不是「处理组 vs 对照组」的一个数,而是很多个 2×2 DID 的加权平均——其中一部分 2×2,拿「已处理组」当对照组。它错得可以连符号都反。
【显式】标准 2×2 DID:ATT = (处理组后 − 处理组前) − (对照组后 − 对照组前)。它成立的前提是平行趋势(parallel trends):若无处理,两组趋势相同。
【隐式】当单位在不同时间点接受处理(交错),回归 y_it = α_i + λ_t + β·D_it + ε 里的 β,Goodman-Bacon(2021, J. Econometrics) 证明它等于所有「时间组两两比较」的 2×2 DID 的加权平均,权重由组大小与处理方差决定。
【细微】关键裂缝:在「晚处理组 vs 早处理组」的 2×2 里,早处理组在晚处理组接受处理时已经处理过了。如果处理效应随时间增长(动态效应),这个「对照组」本身就在往上走——它不是一个干净的反事实。
【极难发现】更狠的是:这些「坏 2×2」可以拿到负权重。负权重意味着 β 不只是有偏,它可能因为加权组合而符号反转——你以为在处理效应为正,估计量却给出负号。
【流程节点链路】处理效应随时间增长 → 早处理组在晚处理组处理期已带效应上行 → 晚处理组 vs 早处理组的 2×2 把「上行」误当对照组基线 → 该比较的估计值被压低甚至为负 → Goodman-Bacon 权重里出现负号 → β_TWFE 符号反转。
一个小数字例子(同人设:每个结论背后都有一个没写出来的反事实): - 三组:A 在 t=2 处理,B 在 t=3 处理,C 从不处理。 - 真实动态效应:A 在 t=2 效应=1,t=3 效应=3;B 在 t=3 效应=2,t=4 效应=4。 - 看 t=3:B 的观测 − A 的观测 = (基线+2) − (基线+3) = −1。B 明明有正效应 2,却在「晚 vs 早」比较里显得比 A 差。这个 −1 就是坏 2×2 的原料。
【显式】修法不是玄学,是换估计量: - Callaway & Sant’Anna (2021):先估 group-time ATT(g,t),用「从未处理组」或「尚未处理组」作干净对照,再按需要聚合。 - Sun & Abraham (2021):交互加权估计量。 - de Chaisemartin & D’Haultfœuille (2020, AER):只允许「干净」的 2×2 进入加权。 共同点:拒绝让「已处理组」当对照组。
【隐式】这也是一个更普适的教训:TWFE 的 β 悄悄假设了处理效应在队列间、时间上同质。一旦异质,回归不会报错,它只会安静地把不同的问题平均成一个数——而那个数回答的可能不是你想问的问题。
值得辩论的问题:既然「干净对照」是修法的核心,那么在真实面板里,「尚未处理组」会不会本身就被预期到处理而提前调整(anticipation)?如果会,Callaway-Sant’Anna 的「not-yet-treated」对照还干净吗?你怎么在数据里检验 anticipation——用 pre-trend 检验够不够?







0 Comments