didplacebo:DID安慰剂检验的Stata新命令(上)
高级计量之Stata因果推断四天现场班
陈强 亲授
北京, 2023年10月1-2日, 3-4日
Now or Never!
(详情点击页底“阅读原文”)
一、前言
双重差分法的重要前提为平行趋势假定。但由于在处理后,处理效应已与时间效应混合,故平行趋势假定本质上不可检验。因此,在近年的DID实践中,越来越多的研究者通过“安慰剂检验”(placebo tests),进一步考察是否存在被遗漏的混杂事件,以及由此引起的可能偏差。但DID安慰剂检验主要源于经验研究的实践,具体做法灵活多样,编程门槛高低不一,甚至目前文献中还存在一些操作误区与误解。
为方便学者做出更规范的DID安慰剂检验,降低编程难度,陈强老师团队(陈强、齐霁、颜冠鹏,2023)研发了Stata新命令didplacebo。该命令可自动进行DID的时间、空间与混合安慰剂检验,并快捷地提供可视化结果。
陈强、齐霁、颜冠鹏(通讯作者),“双重差分法的安慰剂检验:一个实践的指南”,2023年,山东大学工作论文
2023年8月13日,颜冠鹏博士在第七届Stata中国用户大会上进行主题演讲,正式发布此命令,引起与会专家与Stata用户的极大关注。
Stata命令didplacebo适用于单时点冲击的标准DID,以及多时间冲击的交叠DID(staggered DID)。本期推文将首先介绍标准DID的安慰剂检验操作。
二、DID安慰剂检验的原理
以标准DID为例,下面介绍DID安慰剂检验的基本原理,包括时间、空间与混合安慰剂检验。
时间安慰剂检验(in-time placebo test)
时间安慰剂检验将处理前的某个时期作为“伪处理时间”(fake treatment time),仅使用处理前的样本数据进行DID估计。由于在处理前政策并未实施,故若发现处理前某期的安慰剂效应显著,则可怀疑处理效应可能由偶然因素或混杂事件所驱动。
空间安慰剂检验(in-space placebo test)
在进行空间安慰剂检验时,从样本中无放回地随机抽取若干个体作为“伪处理个体”(fake treatment unit),并进行DID估计,得到一个安慰剂效应的估计值。如此重复500次(或1000次),即可得到安慰剂效应的分布。
显然,如果处理效应为0,则与此安慰剂效应的分布相比,处理效应估计值不应该是极端值,比如极端地大,极端地小,或绝对值极端地大。由此可计算相应的右边p值,左边p值与双边p值。若p值小于0.05,则可拒绝“处理效应为0”的原假设,认为处理效应显著。
混合安慰剂检验(mixed placebo test)
在进行混合安慰剂检验时,从样本中无放回地随机抽取若干个体作为“伪处理个体”(fake treatment unit),并随机抽取一个统一的“伪处理时间”(fake treatment time)进行DID估计,得到一个安慰剂效应的估计值。如此重复500次(或1000次),即可得到安慰剂效应的分布。混合安慰剂检验的其余步骤与空间安慰剂检验相同。
二、命令简介
从SSC可方便地安装命令didplacebo (Stata 16 及以上):
. ssc install didplacebo, all replace
其中,选择项“all”表示下载该命令所附带的两个演示数据集cao_chen.dta与bbb.dta。
didplacebo的语法结构及选项说明
didplacebo estimatename, treatvar(treatvarname) [pbotime(#) pbounit pbomix([1|2|3]) repeat(int) seed(int) ranunitnum(int) rantimescope(t_min t_max) frame(framename) nofigure savegraph(prefix, [asis, replace])]
其中:
estimatename:指定安慰剂检验前储存的DID回归结果
treatvar:指定处理变量
pbotime(numlist):进行时间安慰剂检验,numlist指定前置期数
pbounit:进行空间安慰剂检验
pbomix([1|2|3]):进行混合安慰剂试验。1指定对标准DID进行混合安慰剂试验,2和3分别指定对交叠DID进行无约束和有约束的安慰剂检验
repeat(int): 指定重复次数,默认500次
seed(int):设置随机种子,默认值为1
ranunitnum(int):指定在每次重复中随机选定的伪处理组个体数量
rantimescope(t_min t_max):指定在每次重复中随机选定的伪处理时间范围
frame(framename):创建一个储存安慰剂检验结果的Stata数据框
nofigure:不画图,默认画图
savegraph:将生成的所有图形保存到当前路径
三、标准DID的安慰剂检验案例
下面以“漕粮海运”的案例(Cao and Chen, 2022),演示标准DID的时间、空间以及混合安慰剂检验操作。
Yiming Cao and Shuo Chen. “Rebel on the canal: Disrupted trade access and social conflict in China, 1650–1911”,American Economic Review 112.5 (2022), 555–1590.
1825年大运河在与黄河交界处决堤,迫使清政府于1826年进行“漕粮海运”的尝试,之后大运河逐渐废弃,运河周边城市失去原有贸易通道,导致社会动荡与叛乱。Cao and Chen(2022)以清朝1650-1911年575个县的面板数据,研究漕粮海运政策对地方叛乱的影响;其中,运河流经的县构成处理组(共73个县),而运河未流经的县则为控制组(共502县)。考虑以下标准DID的双向固定效应(TWFE)模型:
其中,被解释变量为县城 i 在第 t 年的每百万人叛乱数量(由于存在大量零值,已对此变量进行逆双曲正弦变换),
加载数据集cao_chen.dta,并设为面板数据集:
. sysuse cao_chen.dta, clear
. xtset county year
遵照Cao and Chen(2022),使用非官方命令reghdfe估计上述双向固定效应模型:
. reghdfe rebel canal_post, absorb(i.county i.year) cluster(county)
其中,选择项“absorb(i.county i.year)”控制了所有县与年度的固定效应,而选择项“cluster(county)”指定以县为聚类的聚类稳健标准误。估计结果如下:
双向固定效应估计值为0.023,且在5%水平上显著。将回归结果存为“did_cao_chen”,以便后续调用:
. estimates store did_cao_chen
下面进行时间安慰剂检验:
. didplacebo did_cao_chen, treatvar(canal_post) pbotime(1(1)10)
其中,“did_cao_chen”为上述所存储的TWFE回归结果,而必选项“treatvar(canal_post)” 指定处理变量为canal_post。选择项“pbotime(1(1)10)” 表示将处理时间分别前置1至10期,即分别以1816-1825年作为伪处理时间,进行DID估计。检验结果如下:
上表共汇报了十个时间安慰剂检验的结果;其中,标准误与存储结果did_cao_chen所用的标准误相同(即均为聚类稳健标准误)。结果显示,所有安慰剂效应的p值都大于0.1,故均可接受“安慰剂效应为0”的原假设。更直观地,该命令同时画了各期时间安慰剂效应的95%置信区间。其中,所有置信区间都包含0值,说明安慰剂效应均不显著。
下面进行空间安慰剂检验,从575个县中随机抽取73个县构成“伪处理组”(原始样本中共有73个运河县),而其余502个县作为“伪控制组”,进行DID估计;并如此重复500次:
. didplacebo did_cao_chen, treatvar(canal_post) pbounit rep(500) seed(1)
其中,选择项“pbounit”表示进行空间安慰剂检验,选择项“rep(500)”表示重复500次(这是默认选项,故可省略),而选择项“seed(1)”指定随机种子为1(这是默认选项,故可省略)。所得结果如下:
上表汇报了空间安慰剂检验的双边、左边及右边p值。其中,双边及右边p值均为0.008,故在1%水平上强烈拒绝“处理效应为0”的原假设。此命令还画了安慰剂效应的核密度图与直方图,以及处理效应估计值(图中垂直实线)。
在上图中,处理效应估计值(0.038)位于安慰剂效应分布的右侧尾部,为极端值。直观上,如果处理效应为0,则在一次抽样中不应看到如此极端的处理效应估计值。具体而言,此分布大于0.038的右侧尾部面积即为右边p值0.008(即安慰剂效应大于处理效应估计值的概率),小于0.038的左侧面积即为左边p值0.992(即安慰剂效应小于处理效应估计值的概率),而安慰剂效应的绝对值大于处理效应估计值的概率则为双边p值0.008。
下面进行混合安慰剂检验,即在随机抽取“伪处理组”后,再随机抽取统一的“伪处理时间”,进行DID估计;并如此重复500次:
. didplacebo did_cao_chen, treatvar(canal_post) pbomix(1)
其中,选择项 “pbomix(1)”表示进行适合于标准DID的混合安慰剂检验(交叠DID的混合安慰剂检验有所不同,参见下期推文),所得结果如下:
以上结果显示,双边与右边p值均小于1%,故平均处理效应在1%水平上显著。更直观地,此命令还画了安慰剂效应的分布图,其中处理效应估计值(图中垂直实线)位于安慰剂效应分布的右侧尾部,为极端值。
若想同时进行时间、空间与混合安慰剂检验,可输入如下命令:
. didplacebo did_cao_chen, treatvar(canal_post) pbotime(1(1)10) pbounit pbomix(1)
此命令的输出结果从略。下期推文将继续介绍使用didplacebo命令进行交叠DID的安慰剂检验,敬请期待。
参考文献
陈强,《高级计量经济学及Stata应用》,第2版,高等教育出版社,2014年(配套四天现场班,详情见页底“阅读原文”)
陈强,《计量经济学及Stata应用》,高等教育出版社,2015年(好评如潮的配套教学视频,可在 Peixun.net 或网易云课堂购买)
陈强,《机器学习及R应用》,高等教育出版社,2020年11月,472页,双色印刷
陈强,《机器学习及Python应用》,高等教育出版社,2021年3月,632页,双色印刷
(c) 2023, 陈强,山东大学经济学院
www.econometrics-stata.com
转载请注明作者与出处
Our mission is to make econometrics easy,
and facilitate convincing empirical works.