查看原文
其他

didplacebo:DID安慰剂检验的Stata新命令(上)

爱计量 计量经济学及Stata应用 2023-10-24

高级计量之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)模型:

其中,被解释变量为县城 在第 年的每百万人叛乱数量(由于存在大量零值,已对此变量进行逆双曲正弦变换), 表示县城 是否为运河县,表示第  年是否在政策冲击后(1826年及之后取值为1,反之取值为0),而交互项  为处理变量。

加载数据集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.

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存