Stata倍分法新趋势:did2s-两阶段双重差分模型

发布时间:2021-07-11 阅读 12685

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:胡文涛 (中国人民大学)
邮箱hwtxwhr@163.com

编者按:本文主要摘译自下文,特此致谢!
Source:Gardner, John. 2021. Two-Stage Difference-in-Differences. Working Paper. -PDF-


目录


1. 背景介绍

最近一系列文献都表明,当处理组个体接受处理的时间是交错的,而且平均处理效应随着组别以及时间发生变化时,常见的双重差分估计就不能识别一个典型处理效应并做出合理的度量 (Borusyak and Jaravel, 2017; Athey and Imbens, 2018; Goodman-Bacon, 2018; de Chaisemartin and D’Haultfoeuille, 2020; Imai andKim, 2020; Sun and Abraham, 2020)。

为此,本文将介绍可能缓解上述问题的方法——两阶段双重差分。具体地,本篇推文主要分为以下内容:

  • 首先,提供了一些简单的直觉来解释为什么双重差分回归不能确定 group × period 平均处理效应;
  • 其次,提出了一个可供选择的二阶段 GMM 估计框架 (two-stage estimation framework)。在这个框架中,我们在第一阶段识别组别效应和时期效应,在移除了组别效应和时期效应之后,在第二阶段,通过比较处理组和对照组的结果差异来识别平均处理效应。两阶段方法对于被处理的时间是交错的以及处理效应具有异质性的情况下估计结果是稳健的,而且还能够用来识别许多不同的平均处理效应,方法简单直接好用;
  • 最后,为了方便大家理解,我们用实例并结合 Stata 操作来演示该方法的实现,其中重点介绍 did2s 命令。

2. 双重差分回归估计问题

考虑一个常见的DID模型,如下列式子:

其中,i 表示的是个体,t 表示的时间 (一般指的是年),关键是 g0,1,...,G 和 p0,1,...,P。如果个体 i 处于 group0,则意味着它在所有时期 p 内都不接受处理,如果个体 i 处于 group1 则意味着 i 从第一期 (p=1) 开始接受处理,以此类推。λg 与 γp 分别表示组别和时期的固定效应。

考虑一个只有两期的 DID,运用 DID 方法的一个前提是满足平行趋势假设,即处理组与对照组在处理前要具有共同的时间趋势变化。在处理之前处理组和对照组之间的差异可以分为固定的组别差异以及相同的时间趋势变化 (λg 与 γp),而这两个差异可以通过组间与组内双重差分予以消除,在剔除这两个差异之后,处理组与对照组之间的差异就表现为处理的效果。同时,β=βgp=E(βgp|Dgp=1)εgpit=0

但是,如果是交错 DID (或称为渐进、多时点 DID, staggered DID) 常见的双重差分估计就不能识别一个典型处理效应并做出容易解释的度量。从上式的一个直观理解是,如果是交错 DID,那么 βgp 就是一个随接受处理时间和组别变化的值,那么 εgpit 就不为0,上述双重差分的估计系数不能简单解释为政策效应,最后估计出来的系数本质上是每个群组每一时期效果的加权平均。

下面来具体看看交错 DID 的估计量,可用下式直观表示,具体可以参考 De Chaisemartin and D’Haultfoeuille (2020),以下简称为 DecDh(2020):

从上式可以直观看到,我们估计的交错 DID 系数是 ATE(gt) 的加权平均,而且权重大小与受接受处理的时间长短、组别的规模大小具有正相关的关系。DecDh (2020) 对此有非常详细的说明与解释,在该文所讨论的情形不仅适用于本文所讨论的交错 DID,还扩展到更一般的情形,即政策实施后,还有可能有些群体或个体由干预状态退出又回到控制组的情形。作者还提供了估计该估计量的两个 Stata 软件包:fuzzydid 和 did_multiplegt。有兴趣的读者可以去进一步去了解,就不在本文中进行详细介绍。本文重点介绍的是通过两阶段方法来处理交错 DID 回归。

3. 两阶段双重差分

3.1 两阶段双重差分估计量

前面也提到了,两阶段双重差分的原理是先识别组别效应和时期效应,然后在第二阶段将其剔除后,再对处理变量进行回归。两阶段双重差分顾名思义将估计分为两个阶段:

第一阶段,估计一个无处理结果 (Dgp=0) 的双向固定效应模型:

可得,λ^gγ^p

第二阶段,从观察数据中消除组别效应与时期效应,所得余值与处理变量回归,如下式:

βgp 条件期望表达式,如下式:

如果进一步考虑到处理的持续期 P¯,有些个体可能提前结束处理,上述表达式可以进一步写为:

3.2 事件法研究

两阶段估计方法同样可以应用于事件法研究,方法原理是一样的,对于一个事件研究:

与一般的双重差分模型一样,第一阶段先估计 λ^g 和 γ^p,不同的是第二阶段用 Ygpitλ^gγ^p 对 DRgp,..., D0gp,..., DPgp 回归。

3.3 统计推断

第二阶段的估计量 Ygpitλ^gγ^p 来源于第一阶段,我们需要对第二阶段的标准误进行调整。第二阶段估计的渐近分布可以通过将两阶段过程解释为联合 GMM 估计量来获得 (Hansen, 1982)。下面为 Stata 具体实现的命令:

*其中y是结果变量,year是年份,id表示组,d表示处理状态
gmm (eq1: (y - {xb: i.year} - {xg: ibn.id})*(1-d)) ///
(eq2: y - {xb:} - {xg:} - {delta}*d),              ///
instruments(eq1: i.year ibn.id)                    ///
instruments(eq2: d) winitial(identity)             ///
onestep quickderivatives vce(cluster id)

4. Stata 实操

4.1 did2s 命令

did2s 命令是根据 Gardner and John (2021) 方法进行编写的。

*命令安装
net install did2s, from(http://fmwww.bc.edu/RePEc/bocode/d)
*命令语法
did2s depvar [if] [in] [weight], ///
      first_stage(varlist)       ///
      treat_formula(varlist)     ///
      treat_var(varname)         ///
      cluster_var(varname})      ///
      [nboot(50)]
  • depvar:被解释变量;
  • first_stage(varlist):第一阶段公式,包括用于估计 Yit(0) 的固定效应和协变量,不能放入处理变量;
  • treat_formula(varlist):第二阶段公式,varlist 放入处理变量,这些处理变量可以是 0、1 表示处理与否的虚拟变量,也可以是事件研究中提前\滞后变量,或者是连续的处理变量;
  • treat_var(varname):这个必须设定为 0、1 类型的处理变量。其中 0 表示没有接受处理,1 表示接受处理;
  • cluster_var(varname}):为 bootstrap 产生的样本选择聚类变量,如果不想聚类的话,可以直接填入 id;
  • nboot(real):可以设置 bootstrap 抽样次数,默认 50 次。

4.2 具体案例

下面,我们通过一个实例,来演示 did2s 具体估计的情况。


. net get did2s, from(http://fmwww.bc.edu/RePEc/bocode/d)
. use df_het.dta, clear 

. *手动计算 (注意这种方式得出来标准差有问题需要调整)
. qui reg dep_var i.state i.year if treat == 0, nocons // 第一阶段回归
. predict adj, residuals //得到去除地区、年度固定效应的结果变量
. reg adj i.treat, cluster(state) nocons //第二阶段回归

Linear regression                               Number of obs     =     31,000
                                                F(1, 39)          =    2787.70
                                                Prob > F          =     0.0000
                                                R-squared         =     0.3776
                                                Root MSE          =     1.7506

                                 (Std. Err. adjusted for 40 clusters in state)
------------------------------------------------------------------------------
             |               Robust
         adj |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     1.treat |      2.380      0.045    52.80   0.000        2.289       2.471
------------------------------------------------------------------------------
. *利用did2s进行估计
. did2s dep_var, first_stage(i.unit i.year) second_stage(i.treat)  ///
        treatment(treat) cluster(state)
                                  (Std. Err. adjusted for clustering on state)
------------------------------------------------------------------------------
             |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     1.treat |      2.266      0.036    62.90   0.000        2.195       2.336
------------------------------------------------------------------------------
. *事件研究模型
. did2s dep_var, first_stage(i.unit i.year) second_stage(i.treat) ///
>       treatment(treat) cluster(state) 
                                  (Std. Err. adjusted for clustering on state)
------------------------------------------------------------------------------
             |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     1.treat |      2.266      0.036    62.90   0.000        2.195       2.336
------------------------------------------------------------------------------

Note:由于该命令仍处于完善阶段,不免会有诸多问题,更多详细介绍请参考「did2s_stata」「did2s_r」

5. 结语

交错或者说多时点 DID 的系数估计和处理效果的解释,是目前 DID 方法最前沿的话题之一。本文首先对由于交错情况的存在而对 DID 系数估计和解释产生的影响做了一些简单直观的说明。然后,提出了通过两阶段估计来获得稳健且更加合理的 DID 系数估计值的方法,并着重介绍了该方法的原理、以及结合具体数据对此进行了分析。如果还想对此有更加深入的了解,可以阅读本文提出有关交错 DID 的一系列文献。

6. 参考资料

  • Baker A, Larcker D F, Wang C C Y. How Much Should We Trust Staggered Difference-In-Differences Estimates?[J]. Available at SSRN 3794018, 2021. -PDF-
  • De Chaisemartin C, d'Haultfoeuille X. Two-way fixed effects estimators with heterogeneous treatment effects[J]. American Economic Review, 2020, 110(9): 2964-96. -PDF-
  • Gardner, John. 2021. Two-Stage Difference-in-Differences. Working Paper. -PDF-

7. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 多期 多时点, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,400+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh