5  反事实构造

本章核心判断

政策评估的关键在于,为处理组构造一个可信的「没有政策时的结果」,即「反事实结果」。不同识别策略的差别,首先是反事实来源不同:时间中断分析用处理组自己的政策前趋势,DID 用对照组的变化,RDD 用门槛附近另一侧的局部单位,DDD 用另一个 DID 修正额外差异,合成控制法用多个控制单位的加权组合,RCM / GSC 用潜在因子结构预测,SDID 同时调整单位权重和时间权重。

实现代码

本章主要介绍各类反事实构造方法的基本思想,实现代码和细节参见本章 附录 F

在政策评估中,我们最容易看到的是政策发生之后处理组发生了什么。真正看不到的是:如果没有这项政策,处理组本来会怎样。

本章围绕 Abadie et al. (2010) 文中的经典案例。加州于 1989 年通过 Proposition 99 法案大幅提高烟草税并资助控烟项目,此后加州人均香烟消费持续下降。但下降本身不是政策效果。政策效果是「真实的加州」与「没有这项政策的加州」之间的差距,而后者是看不见的。本章所有方法,都是在回答同一个问题:拿什么来代表这个看不见的加州?

5.1 政策效果是一个看不见的差

先把问题写清楚。记处理组(加州)在政策后某期 \(t\) 的两个潜在结果:\(Y_{1t}(1)\) 是接受政策后的结果,\(Y_{1t}(0)\) 是同一时点若没有政策的结果。政策效果为

\[ \tau_{1t} = Y_{1t}(1) - Y_{1t}(0) \tag{5.1}\]

其中 \(Y_{1t}(1)\) 可以观测到——它就是加州政策后实际观测到的香烟消费;\(Y_{1t}(0)\) 看不见——加州只有一个,它要么接受政策、要么不接受,不可能同时观测到两种状态。这就是因果推断的根本困难:缺失的从来不是数据,而是反事实

图 5.1 把这个缺口画了出来。黑色粗线是加州;浅色细线是其他 38 个州(donor pool);绿色线是 38 个州的平均值。这张图适合作为理解反事实的入口。政策发生以后,加州的香烟消费下降了。问题是:这个下降是不是 Proposition 99 的效果?

图 5.1: 加州与其他 38 州的人均香烟消费:政策后加州的反事实无法直接观测

仅仅看到加州政策后下降,还不能回答这个问题。因为加州的香烟消费即使没有政策,也可能因为全国控烟观念变化、烟草价格变化、人口结构变化或长期下降趋势而减少。我们需要知道的是:如果没有 Proposition 99,加州在 1989 年以后会沿着哪条路径走?

从这张图中,可以引出几种朴素的反事实构造方式。

  • 第一,可以用加州自己的政策前趋势外推政策后路径。这是时间中断分析的直觉。若政策前加州香烟消费一直沿着某条趋势下降,那么没有政策时,它可能继续沿着这条趋势变化。

  • 第二,可以用其他州的平均变化代表加州没有政策时的变化。如果只看 1975 年以后,加州和其他州均值的走势似乎比较接近,且二者之间的差异比较稳定。若没有 Proposition 99,加州与其他州之间的差异可能不太会发生明显变化,我们可以基于这种差异构造加州的反事实。这是 DID 的直觉。

  • 第三,如果其他州的简单平均不能代表加州,就可以从其他州中选择若干州,并给它们不同权重,拼出一个更像加州的「合成加州」。这是合成控制法的直觉。

5.2 用自己的过去预测自己:时间趋势外推

图 5.2: Abadie et al. (2010):加州禁烟政策前后的香烟消费变化

最朴素的想法是只看加州自己(图 图 5.2)。如果没有政策,加州香烟消费大概会沿着政策前的趋势继续走。于是用 1970–1988 年的数据拟合一条趋势线,外推到 1989 年以后,就得到一条「无政策的加州」路径;真实路径与外推路径之间的差,就是估计的政策效果。这就是中断时间序列分析(interrupted time series analysis, ITSA)与趋势外推的直觉。

这个方法的可信度完全押在一个假设上:政策前的趋势,若没有政策会原样延续到政策后。它的脆弱性也在这里。趋势用线性还是二次、政策前窗口取多长、政策前后有没有其他同步冲击(比如全国性的烟草诉讼、经济周期),都会改变外推路径。更微妙的是,如果政策在正式生效前已被预期(商家提前调价、消费者提前囤货),政策前趋势本身就被污染了,外推的基准不再干净。

ITSA 的价值在于它极其透明地暴露了反事实构造的本质:我们必须为「没有政策会怎样」写下一个明确的模型。它的局限也很直白:只用了处理组自己的信息,一旦政策期恰好赶上别的变化,就无从分辨。自然地,我们会想到借助外部信息——其他没有实施政策的州。

5.3 用其他州的变化代表加州:DID 的反事实

双重差分(DID)换了一个思路:不用加州自己的过去,而用其他州的同期变化,来代表加州「没有政策时本会发生的变化」。逻辑是:其他州没有 Proposition 99,如果加州没有政策,它的消费变化应该和其他州差不多。于是用加州的政策前水平,加上其他州从政策前到政策后的平均变化,拼出加州的反事实:

\[ \widehat{Y}_{CA,t}(0) = Y_{CA,t_0} + \left(\overline{Y}_{Other,t} - \overline{Y}_{Other,t_0}\right) \tag{5.2}\]

相应的 DID 估计量是

\[ \widehat{\tau}^{DID} = \left(Y_{CA,t} - Y_{CA,t_0}\right) - \left(\overline{Y}_{Other,t} - \overline{Y}_{Other,t_0}\right) \tag{5.3}\]

这里有一个值得点破的连接:式 5.2 减掉的那一项 \(\overline{Y}_{Other,t} - \overline{Y}_{Other,t_0}\),正是第四章的年份效应 \(\lambda_t\) 的经验对应物。DID 的全部内容,就是假设这个 \(\lambda_t\) 对处理组和对照组是同一个——也就是平行趋势假设:两组的时变混淆以相同方式演化。换句话说,DID 允许两组有第四章意义上的固定水平差异 \(\alpha_i\)(加州本来就和别的州不一样),但要求它们的时间变化路径平行。DID 就是「TWFE 加上一个识别假设」,而不是一个全新的东西。

DID 在加州案例里暴露出两个关键局限:

第一,平行趋势不是抽象假设,它和样本窗口深度绑定。 如果只看 1975 年以后,加州和其他州的趋势看起来比较接近;但若从 1970 年一直看到 1988 年,两者的长期趋势并不平行。同一批数据,换一个政策前窗口,平行趋势的可信度就变了。这提醒我们:平行趋势的「检验」在很大程度上取决于你选择让读者看多长的历史。

第二,只有一个处理对象时,传统的大样本推断很困难。 加州案例里处理组只有一个州。即便能算出一个 DID 点估计,也没有「许多处理单位」让我们依赖传统渐近理论去构造标准误和做假设检验。后面要讲的合成控制法之所以要用安慰剂检验、置换检验来做推断,根源就在这里。

DID 的反事实靠「找到一个趋势可比的对照组」。但其他州的简单平均未必像加州——加州人口结构、收入、烟价都和蒙大拿、内华达不同。能不能不满足于「找现成的对照组」,而主动去「拼一个更像加州的对照」?这是本章的转折点。在转过去之前,先插一段不同维度的反事实——RDD。

5.4 插叙:在门槛附近寻找反事实——RDD 的局部比较

前面的方法都在时间维度上构造反事实:用过去,或用别人的同期变化。断点回归(RDD)提供了另一种维度的反事实——截面近邻

先顺着加州案例做一个「可能但不理想」的设想。假如我们有微观、高频数据(比如每天的烟草零售记录),就可以把 1989 年 1 月 1 日政策生效当作一个门槛,比较生效日前后很短窗口内的消费。生效前 5 天和后 5 天的市场状况几乎相同,唯一的区别是政策有没有生效——这接近断点的思路。

但马上就能看出为什么加州年度州级数据不适合这么做:年度数据太粗,政策若提前公布会引发提前调整,生效日附近还夹杂季节性、价格波动、替代品转移。RDD 需要的是运行变量上足够密集、且门槛无法被精确操纵的数据。这个反差恰好点明了 RDD 的特征:它既不靠长期时间趋势,也不靠寻找远处的对照组,而是在门槛(cutoff)附近,用刚好没跨过门槛的一侧,代表刚好跨过门槛的一侧的反事实

形式上,设运行变量 \(R_i\),处理由是否越过门槛 \(c\) 决定:

\[ D_i = \mathbf{1}\{R_i \ge c\}, \qquad \tau_{RDD} = \lim_{r \downarrow c} E[Y_i \mid R_i = r] - \lim_{r \uparrow c} E[Y_i \mid R_i = r] \tag{5.4}\]

门槛两侧的单位在其他方面近似可比,唯一系统差异是处理状态,因此门槛处结果的跳跃就是局部处理效应。真正适合 RDD 的是那些「规则制造了处理强度跳跃」的场景,两个经典例子:Angrist and Lavy (1999) 利用以色列的 Maimonides 规则——班级人数一旦超过 40 人就必须拆班,于是班级规模在阈值处不连续跳变,用来识别班级规模对学生成绩的影响;Lee (2008) 利用美国众议院选举中「刚好险胜」与「刚好惜败」的候选人在门槛附近近似随机分配,识别在位优势对下届选举的影响。

必须强调,RDD 识别的是门槛附近的局部效应,不能外推到远离门槛的人群;它的实操还涉及带宽选择、局部多项式、密度操纵检验、协变量连续性等一整套技术,这些放在第七章的扩展阅读与本章附录中,此处不展开。RDD 的反事实来自截面近邻。现在回到面板,继续追问那个转折性的问题:能不能主动构造一个更像加州的对照组?

5.5 从被动寻找对照到主动构造对照

到这里,可以把前面的方法归拢一下。ITSA 的反事实来自处理组自己的过去;DID 来自对照组的同期变化;RDD 来自门槛另一侧的近邻。它们有一个共同点——都比较被动:研究者要么依赖处理组自身的趋势稳定,要么依赖恰好存在一个趋势可比的对照组或一个可用的门槛。

接下来的三种方法转向主动构造反事实:合成控制法(SCM)用 donor pool 中若干控制单位的加权组合,拼出一个更像处理组的合成对象;广义合成控制/回归控制法(RCM/GSC)用因子结构预测处理组的无政策路径;合成 DID(SDID)则同时在单位和时间两个维度上加权。

这个转折背后是一条贯穿全书的暗线,值得在这里点破。第四章到本章前半段,我们做的都是减法:FWL 和固定效应把混淆减掉,DID 把共同的年份效应 \(\lambda_t\) 减掉。而从 SCM 开始,思路转向预测:不再满足于减去一个现成的对照,而是主动用模型把 \(Y(0)\) 预测出来。减法依赖「有一个干净的东西可减」,预测依赖「有一个可信的模型能外推」。第七章的 DDML 会把这条预测线推到极致——用机器学习预测处理和结果的条件期望。遗漏变量、反事实、双重机器学习,本质上都是在估计条件期望,区别只在于用减法还是用预测。 把这条暗线记住,后面的方法就不是零散的工具,而是同一种思维的不同实现。

主动构造更灵活,但天下没有免费的午餐:越精巧的构造,通常越依赖额外的假设、数据质量或模型结构。下面逐一来看。

5.6 用多个州拼出加州:合成控制法

DID 用其他州的简单平均,问题是「平均」未必像加州。合成控制法(Abadie et al., 2010)不让每个州等权,而是给 donor pool 里的州分配权重,让加权组合出来的「合成加州」在政策前尽量贴近真实加州。

设处理组为 \(j=1\),donor pool 为 \(j=2,\ldots,J+1\),权重为 \(W=(w_2,\ldots,w_{J+1})'\)。合成控制法用:

\[ \widehat{Y}_{1t}(0)=\sum_{j=2}^{J+1}w_jY_{jt}, \qquad w_j \ge 0, \quad \sum_{j \in Donor} w_j = 1 \tag{5.5}\]

估计处理组没有政策时的结果。政策效果为:

\[ \widehat{\tau}_{1t}=Y_{1t}-\widehat{Y}_{1t}(0) \tag{5.6}\]

政策前让合成加州逼近真实加州(在结果变量和若干预测变量上都尽量匹配),政策后二者的差距就解释为政策效果。

Stata 实现代码如下:

use https://github.com/scunning1975/mixtape/raw/master/smoking.dta, clear
xtset state year

synth2 cigsale lnincome age15to24 retprice beer(1984(1)1988) ///
    cigsale(1988) cigsale(1980) cigsale(1975), ///
    trunit(3) trperiod(1989) xperiod(1980(1)1988) ///
    fig nested allopt

在加州案例中,合成控制法从 38 个州里挑出 5 个、分配了非零权重:犹他 0.334、内华达 0.235、蒙大拿 0.202、科罗拉多 0.161、康涅狄格 0.068,其余 33 个州权重为零。图 图 5.3 把这 5 个州高亮出来——所谓「合成加州」,就是这几条线按上述权重的加权平均。这张图是理解 SCM 的关键:抽象的「凸组合权重」在这里变成了「三分之一个犹他加四分之一个内华达……」这样具体的配方。

图 5.3: 合成控制法的基本思想:用多个控制组单位的加权组合构造处理组的反事实

图 5.3 里两个权重约束——非负、且加总为一——不只是为了求解方便,它们有实质含义:合成对象被限制在 donor pool 的凸包内,这提升了可解释性、避免了危险的外推(合成加州不会是某个州的数倍或负数)。代价是牺牲了拟合的灵活性:如果真实的反事实加州根本不在这些州的凸组合能覆盖的范围内,政策前就会拟合不好。而政策前拟合的好坏,是 SCM 可信度的生命线——拟合不好,政策后的差距就无法归因于政策。

SCM 把识别的压力从 DID 的「平行趋势」转移到了三处:donor pool 的构成(对照州本身不能受类似政策污染)、权重与预测变量的选择(结果对此敏感)、以及政策前拟合的质量。推断上,因为只有一个处理单位,SCM 依赖安慰剂/置换检验:把每个对照州轮流当作「假处理组」跑一遍,看真实加州的政策后差距是否显著大于这些安慰剂。合成控制法完整的加州复现——synth2 命令、预测变量平衡表、合成加州拟合图与处理效应图——放在本章附录 F

5.7 用因子结构预测反事实:RCM / GSC

合成控制法在 donor pool 里找权重。回归控制法与广义合成控制(RCM/GSC)换了一条路:它们不找权重,而是用未处理样本学习一个因子结构,再用这个结构预测处理组的无政策路径。这里正好接上第四章的交互固定效应。

还记得第四章的 \(\lambda_i'F_t\) 吗?在那里我们用它吸收异质的共同冲击(同一次降准,高杠杆和低杠杆公司反应不同);在这里,我们用同一个结构预测反事实:

\[ Y_{it}(0) = \alpha_i + \lambda_t + \Gamma_i'F_t + \varepsilon_{it} \tag{5.7}\]

\(F_t\) 是驱动所有州香烟消费的共同因子(全国控烟舆论、经济周期、代际偏好变迁),\(\Gamma_i\) 是各州对这些因子的暴露程度。政策前,用未处理的州学习出 \(F_t\) 和各单位的载荷;政策后,用加州自己的载荷乘以估计出的因子,预测「没有政策的加州」。控制与反事实,是一体两面:第四章把 \(\lambda_i'F_t\) 当作要清除的干扰,本章把它当作要利用的预测结构。

RCM 与 SCM 的差别,恰好又是第四章那个「约束 vs 灵活」的权衡在另一个层面的再现。SCM 要求权重非负且加总为一(凸组合);RCM 放开了这个约束——它可以给某个州负载荷,可以带截距,预测目标是拟合优度而非凸包内的相似性,还可以借助 Lasso 等正则化在众多潜在预测单位中做筛选、防止过拟合。放开约束换来了更强的拟合与外推能力,代价是可解释性下降(负权重不好讲故事),以及对模型结构设定的依赖更重。

一个直观的例证:在加州数据上,合成控制法(凸组合)选出犹他、内华达、蒙大拿、科罗拉多、康涅狄格;而 Lasso 型的方法在放开约束后,选出的州与之部分重叠(同样偏爱蒙大拿、内华达、犹他)、但不完全相同,而且允许出现负系数和一个非零截距。同一份数据、同一个处理组,约束松一档,反事实的配方就换了一副面孔。这不是谁对谁错,而是两种构造哲学的取舍。RCM 的加州复现、Lasso 型合成控制与选参数细节,同样放在附录 F。

5.8 同时给单位和时间加权:SDID

走到这里,SCM 解决了「哪些控制单位更像加州」。但还有一个维度没被利用:政策前的每一年,并不同等重要。距离政策发生更近的年份,对预测政策后的反事实往往更有信息;而 1970 年的加州和 1988 年的加州,对「1989 年若无政策会怎样」的参考价值显然不同。合成 DID(SDID, Arkhangelsky et al., 2021)把这个维度也纳进来:同时给单位和时间加权

用一个统一的目标函数最能看清 DID、SC、SDID 三者的关系(推导与权重求解见附录 F):

\[ \widehat{\tau}^{sdid} = \underset{\tau,\mu,\alpha,\beta}{\arg\min} \left\{ \sum_{i=1}^{N} \sum_{t=1}^{T} \left(Y_{it} - \mu - \alpha_i - \beta_t - W_{it}\tau\right)^2 \, {\color{red}{\widehat{\omega}_i}} \, {\color{blue}{\widehat{\lambda}_t}} \right\} \tag{5.8}\]

三种方法就是这一个式子的不同特例:

  • 传统 DID\(\widehat\omega_i\)\(\widehat\lambda_t\) 都设为常数——所有对照单位等权、所有时期等权,于是需要平行趋势假设,用简单平均估计 ATT;
  • SC 只有单位权重 \(\widehat\omega_i\)、没有时间权重,且不含个体效应 \(\alpha_i\)——它在截面上让合成对象贴近处理组,从而绕开平行趋势;
  • SDID 两个权重都有,同时保留双向固定效应 \(\alpha_i + \beta_t\)——它让 DID 的固定效应变得更「局部」:把更多权重放在与加州更像的州,以及与政策期更相关的年份上。

关于时间权重有一个容易讲错的地方,这里说准确:\(\widehat\lambda_t\) 通常会让与处理期更相关的政策前时期获得更高权重,但它不是机械地「离政策越近权重越大」,权重由数据在最小化政策前拟合误差时决定。

三种方法在加州数据上给出的处理效应数值并不相同——这恰恰是本章最想让学生体会的一点。DID 约 −27、SC 约 −20、SDID 约 −16(单位为每人每年包数,口径和推断细节见附录 F)。数值差异不是「谁算错了」,而是三种反事实构造方式的直接后果:DID 用等权平均,受长期趋势不平行的拖累最大;SC 用截面加权贴近;SDID 再叠加时间加权。图 图 5.4 展示了 SDID 的输出——上半部分是真实加州与合成加州的走势对比,底部的柱状则显示各政策前年份被分配的时间权重,直观呈现「哪些年份更有信息」。

图 5.4: SDID 的双重加权:合成加州拟合(上)与政策前各年份的时间权重(下)

SDID 把 DID 的固定效应、SC 的单位加权、以及时间加权熔于一炉,在许多场景下兼顾了稳健与精度。但它同样不是万能钥匙:它仍然依赖足够的政策前时期、质量过关的对照组、以及面板结构本身。当处理组极少、政策前太短、或对照组普遍受政策污染时,再精巧的加权也救不回来。

下图直观地反映了 SDID 的估计思路:

Source: synth-inference.github.io/synthdid

Source: synth-inference.github.io/synthdid

5.9 反事实构造没有免费的午餐

把六种方法放在一起,可以清楚看到它们其实是沿着「反事实从哪里来」这一个问题分布的光谱,各自把识别的压力放在不同的假设上。

表 5.1: 六种反事实构造方式及其代价
方法 反事实来源 主要优势 主要代价(压力所在)
ITSA 处理组自身政策前趋势 不需要外部对照组 趋势设定、政策前窗口、同期冲击、提前反应
DID 对照组同期变化 直观、易解释 平行趋势、对照组选择、单一处理组的推断
RDD 门槛另一侧的截面近邻 门槛附近可比性强 仅识别局部效应、门槛不可被精确操纵
SCM donor pool 加权组合 主动构造相似反事实、防外推 donor pool 纯净性、权重与预测变量、政策前拟合
RCM/GSC 潜在因子结构预测 更灵活、可处理异质共同冲击 模型结构设定、过拟合、可解释性
SDID 单位权重 + 时间权重 融合 DID 与 SC、兼顾稳健与精度 政策前长度、对照组质量、面板结构

表 5.1 是本章的落点,它给出一个明确的方法选择原则:

DID 把压力放在平行趋势上;RDD 把压力放在门槛附近的连续性与不可操纵性上;SCM 把压力放在 donor pool 与政策前拟合上;RCM 把压力放在因子结构上;SDID 把压力放在单位权重、时间权重与面板结构上。方法选择不能看哪个估计结果更显著,而要看这些假设在你的具体政策背景中是否站得住。

这一原则与第四章一脉相承。第四章说,每加一组固定效应都是在声明「我在拿谁和谁比」;本章说,每选一种反事实构造,都是在声明「我用什么代表看不见的 \(Y(0)\)」,以及「我愿意为此背负哪一个假设」。两章合起来,构成了政策评估的两个基本自问。

5.10 从本章走向第六章

本章只回答了「反事实是什么、可以怎样构造」,刻意没有展开一个问题:当研究设计确定为 DID 之后,具体该用哪一个 DID 估计量?现实中的政策往往不是加州这样「一个州、一个时点」的干净情形,而是不同地区在不同年份陆续实施(交错处理),且处理效应在个体间、时间上都不同质。此时传统的双向固定效应 DID 会遭遇「坏比较」——用已处理单位充当尚未处理单位的对照,产生带负权重的污染。

Goodman-Bacon 分解揭示了这个问题之后,一批新估计量应运而生:Callaway–Sant’Anna 的 csdid、Sun–Abraham、Borusyak–Jaravel–Spiess 的插补法、did2sdid_multiplegt_dyn 等。第六章要回答的就是:在你自己的研究场景里,到底该选哪一种?能否综合使用两三种相互印证?不同方法结果不一致时又该如何解读?那里也会把三重差分(DDD)作为一种识别设计系统展开——第四章我们已经见过它在 Lane (2025) 里的高维固定效应吸收结构,本章见过它作为「用一个 DID 修正另一个 DID」的反事实直觉,第六章则讲它的估计量选择。

配套复现

本章所有方法在加州禁烟数据上的完整 Stata 复现(SCM 的 synth2、Lasso 型合成控制、RCM 的 rcm、SDID 的 sdid,含命令、输出解读与全部图形代码)见 附录 F。附录提供 .ipynb(可在 VS Code 中借助 nbstata 或 Stata-MCP 执行) 与简化版 dofile 两种格式。

5.11 参考文献

  • Abadie, A., Diamond, A., & Hainmueller, J. (2010). Synthetic control methods for comparative case studies: Estimating the effect of California’s tobacco control program. Journal of the American Statistical Association, 105(490), 493–505. Link, PDF, Google.

  • Arkhangelsky, D., Athey, S., Hirshberg, D. A., Imbens, G. W., & Wager, S. (2021). Synthetic difference-in-differences. American Economic Review, 111(12), 4088–4118. Link, PDF, Google.

  • Angrist, J. D., & Lavy, V. (1999). Using Maimonides’ rule to estimate the effect of class size on scholastic achievement. The Quarterly Journal of Economics, 114(2), 533–575. Link, PDF, Google.

  • Ciccia, D. (2024). A short note on event-study synthetic difference-in-differences estimators. arXiv:2407.09565. Link, PDF, Google.

  • Clarke, D., Pailañir, D., Athey, S., & Imbens, G. (2024). On synthetic difference-in-differences and related estimation methods in Stata. The Stata Journal, 24(4), 557–598. Link, PDF, Google. github

  • Lee, D. S. (2008). Randomized experiments from non-random selection in U.S. House elections. Journal of Econometrics, 142(2), 675–697. Link, PDF, Google.

  • Yan, G., & Chen, Q. (2022). rcm: A command for the regression control method. The Stata Journal, 22(4), 842–883. Link, PDF, Google.

  • Yan, G., & Chen, Q. (2023). synth2: Synthetic control method with placebo tests, robustness test, and visualization. The Stata Journal, 23(3), 597–624. Link, PDF, Google.