最近这两年,我一直在学习异质性处理效应给TWFE DID带来的偏误,及其新的估计量。我每次学术讲座或者授课的时候,大家问得最多的问题就是,这么多估计量(16个新估计量,18种stata命令)在实践中到底要怎么选择和使用。
许多学者(包括我)都建议实践中尽量多用一些新DID估计量,理论上来讲它们趋于一致的结果,但是实践操作起来却往往相互打架。新DID估计量多了反而成了应用学者的一种负担。我每次讲新DID的时候,都会详细比较各个估计量的假设、适用环境等,以便让大家根据自己的研究来选择合适的估计量。但是讲得仍然有点抽象,不够操作性。
今天向各位介绍一篇新的工作论文:Harmon N A. Difference-in-Differences and Efficient Estimation of Treatment Effects[R]. Working paper, 2022.作者从不同估计量的效率方面来选择合适的新DID估计量。
对于经典的DID设计(无协变量,无进入退出,二值型处理),应用研究者通常面临两类新DID估计:
① 子群体DID(Subgroup Difference-in-Differences,SGDD),即选择所有组群中的一部分处理组和控制组,并形成2×2 DID比较,例如,de Chaisemartin and D’Haultfoeuille (2020, 2022); Sun and Abraham (2021); Callaway and Sant’Anna (2021); see also Dube et al. (2022);
② 回归插补法(Regression Imputation,RI),即将真实的处理个体结果与插补法得到的反事实结果进行比较,例如,Borusyak et al. (forthcoming); Gardner (2022); Wooldridge (2021)。
在给定样本中,同样的假设下,两类新DID估计量得到无偏的估计量,因此,从估计效率的角度来选择新DID估计量是非常具有实践含义的。
Borusyak et al. (forthcoming)假设球面误差——误差项在时间维度不相关。Harmon(2023)假设误差项在时间维度强相关(这种情形在长面板,时期较长时),且服从随机游走。从现实研究来看,这意味着个体受到恒久性冲击,尤其是在估计长期效应时。
第一种情形:在同一处理时点的平衡面板下。这种情形下,SGDID估计量对于所有的处理效应加权和都是无偏估计量,也有效率。因为SGDID估计量仅仅依赖于处理前一期:当误差项反映持续冲击时,用任何其它处理前时期的数据都只会增加额外的噪音(来自于所选处理前与处理当期之间的冲击干扰)。因此,SGDID是选择处理前以前作为估计量的基期。模拟研究显示,当误差持续的时候,SGDID的效率提升非常大:相对于RI估计量,SGDID估计量的效率相当于增加60%的样本数据。
第二种情形:交叠处理,也可以非平衡面板。在这种情形下,SGDID估计量对于处理开始的当期处理效应加权和仍然是最佳无偏的(意味着短期处理效应)。然而,对于更长期的处理效应,最佳无偏估计量则需要扩展SGDID估计量为Stepwise Difference-in-Differences(SWDD)。即在许多时期的长差分情形下,SWDID估计量计算一步向前的处理效应估计量。在非平衡面板(有缺失数据)或者交叠处理下,SWDID可以利用更多未处理个体的信息来估计长期处理效应。模拟结果显示:相较于SGDID,当估计处理后4期的处理效应时,SWDID估计量相当于增加了35%的样本数据。
实践建议:
① 如果结果变量的误差展现出较低的序列相关(例如,临时性冲击),RI估计量更好;
② 如果结果误差有较高的序列相关(例如,恒久性冲击),估计短期(瞬时)处理效应,或者同时处理,SGDID估计量更好;
③ 当估计交叠处理下长期处理效应,SWDID的效率更优。
下面,使用eventdd命令的数据集:
* Bhalotra et al. (2023) Reserved Seat Quota Adoption and Maternal Mortality
webuse set www.damianclarke.net/stata/
webuse quota_example.dta, clear
我们先来看看RI估计量:BJS估计量
* RI估计量
did_imputation lnmmrt country1 year quotaYear,allhorizons pretrends(10) minn(0)
event_plot, default_look graph_opt(xtitle("Periods since the event") ytitle("Average effect") title("did_imputation") xlabel(-10(1)15)) stub_lag(tau#) stub_lead(pre#) together
我们先来看看SGDID估计量:CS估计量
* SGDID估计量
encode country,gen(country1)
qui csdid lnmmrt, time(year) ivar(country1) gvar(quotaYear) long2
csdid_estat event, window(-10 15) estore(csdid)
csdid_plot
我们先来看看SWDID估计量:
* SWDID估计量
* SWDID估计量
did_stepwise lnmmrt country1 year quotaYear,minn(0)
matrix blag=e(b)
matrix Vlag=vecdiag(e(V))
* Estimate pretrend coefficients and store estimates and variances
did_stepwise lnmmrt country1 year quotaYear, pretrends(9) includepre1 minn(0)
matrix blead=e(b)
matrix Vlead=vecdiag(e(V))
* Stack the treatment effects and pretreatment results
matrix b=blag,blead
matrix V=Vlag,Vlead
* Produce an event plot
event_plot b#V, stub_lag(tau_horizon#) stub_lead(tau_pretrend#) default_look graph_opt(xtitle("event time") ytitle("ATT"))
从数据来看,处理前有10+期,处理后有15期。相对来说,都是比较长的时期。例子中的数据是Bhalotra et al.'s (2023)研究了议会中女性席位的配额对母亲死亡率的影响。这种影响肯定是长期的恒久性冲击,因为议会女性席位配额的改革会提高女性议员的比例,这会使得立法机构更加关注于女性健康问题,一旦形成法律法规,就会产生持续的影响。而且母亲死亡率与与多因素有关,例如医疗水平、环境状态等,这些都会导致死亡率之间有很强的序列相关。因此,这个时候选择SWDID估计量更合适。从上面的结果也可以看出,SWDID估计量的处理效应在95%置信水平上离零更远一些,意味着女性议员席位配额会显著降低母亲死亡率。
其实从实践发表的角度来看,这个时候SWDID更能得到显著的结果。但是一定要给出选择SWDID的理由,并做一些可用的检验。