Stata-DID:不同处理时点不同持久期的倍分法(flexpaneldid)

发布时间:2021-07-06 阅读 9907

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下载 - 推文合集

作者:丁雅文 (北京大学)
邮箱1901111380@pku.edu.cn

编者按:本文部分内容摘译自下文,特此致谢!
Source:Dettmann E, Giebler A, Weyh A. flexpaneldid. A Stata Toolbox for Causal Analysis with Varying Treatment Time and Duration. 2020. -PDF-


目录


1. 简介

双重差分模型 (Difference in Difference, DID) 是目前经济学界估计处理效应的主流方法之一,一般用于评估随机试验或自然实验 (例如,法律法规的调整) 的效果。经典的 DID 方法通常拥有两期 (处理前和处理后) 和两组 (处理组和控制组) 数据,并暗含了固定处理效应 (constant treatment effects) 的假定。读者可参考推文「连享会专题:倍分法DID」 进行学习。

然而在现实中,我们经常发现不同个体接受政策干预的开始时间和持续时间往往是不同的。因此,假定所有受干预个体的处理效应相同并不合理。现有研究主要采用条件倍差法 (conditional DID) 和固定效应形式的倍差法 (fixed effect DID),来解决因不同个体接受干预的开始时间和持续时间不同所导致的估计潜在偏误。本文将介绍一个基于交错采用设计框架 (the staggered adoption design framework) 的灵活条件 DID 方法,来解决上述问题。

2. 理论背景

2.1 现有解决方法

目前计量经济学文献主要采用两种方法,来弥补经典 DID 模型固定处理效应假定的缺陷。

  • 一是 Heckman 等 (1988) 年引入的条件倍差法,即我们常说的 matching+DID 的方法,详细介绍参考推文「面板PSM+DID如何做匹配?」
  • 二是固定效应倍差法,这种方法在实际应用中有诸多变式,例如将多期时间虚拟变量与干预虚拟变量交互来捕捉处理效应的动态变化等,详细介绍可参考推文「Stata:双重差分的固定效应模型」

在经典 DID 模型两组两期的数据结构下,Angrist 和 Pischke (2009) 指出在满足共同趋势假设的条件下,条件倍差法和固定效应倍差法得到的处理效应应该相同。然而,由于不同个体接受干预的开始时间和持续时间不同,这种等价性很难推广到两组或两期以上的情况。因此,本文提出一种灵活的条件 DID 方法 (the flexible conditional DID) 方法,来更一般化地解决由于不同个体接受干预的开始时间和持续时间不同所导致的异质性处理效应。

2.2 灵活的条件 DID

在介绍该方法之前,我们先简单介绍一下交错采用设计框架。下图以 2008 年国际金融危机为例,展示了交错干预情况下对应的数据结构:在这个 2004-2014 年的非平衡面板中,接受干预的企业单位 T1T2T3,…,Tx 开始接受干预的时间和干预持续时间皆不相同。此外,金融学中的日历效应 (calendar time effect)、劳动经济学中的 Ashenfelter 沉降问题也说明了经济环境的动态变化和样本自选择等现象的存在,均会导致现实中固定处理效应地假设不成立。

本文介绍的灵活条件 DID 方法对 Heckman 等 (1988) 提出的条件倍差法主要有三点改进:

  • 一是将干预开始时间信息纳入匹配过程;
  • 二是加入灵活的观测持续时间;
  • 三是采用一种综合的统计距离函数 (statistical distance function) 计算距离并作为匹配依据。

灵活的条件 DID 与以往条件 DID 所依赖的前提假定有所不同:

  • 首先,传统 matching+DID 方法要求条件独立假设和平行趋势假设,而灵活的条件 DID 则要求条件平行趋势假设,这意味着具有相同观测特征的单位在不可观测的个体特征上是不随时间变化的;
  • 其次,灵活的条件 DID 同样需要满足共同支持条件 (common support condition) 和没有外溢效应 (no spillover effect) 的假定;
  • 最后,灵活的条件DID还需满足干预不可逆假定 (irreversibility of treatment),即如果一个单位接受了某种干预,那么在接下来所有观测期内该单位都被视为处理组。

2.3 处理组处理效应 ATT 估计

灵活的条件 DID 估计方法主要有两步:

第一步:数据预处理

按照所有匹配变量和结果变量的观察日期进行数据重组。具体来讲,这一步主要是为每个处理组单位寻找合适的控制组单位。与某一处理组单位开始接受干预时具有相似样本特征的控制组样本,构成该处理组单位的潜在控制组。例如,一个企业在 2007 年 1 月接受了投资补贴,潜在控制组企业应该在 2007 年 1 月具有与该企业相似的企业特征。在 Stata 中用 flexpaneldid_preprocessing 命令实现这一步。

第二步:基于一种统计距离函数进行匹配并计算处理组平均处理效应 ATT

灵活的条件 DID 匹配所用的统计距离函数结合了连续变量的平均绝对差与分类变量的广义匹配系数。处理组企业 i 与任意一个非处理组企业 j 之间的距离函数可表示为:

其中,Distij 为企业 i 与企业 j 之间的加总距离,ADij 和 GMCij 分别表示连续变量的平均绝对差和分类变量的广义匹配系数。N 表示用于匹配的变量数量,由连续变量个数 Nm 和类别变量个数 Nn 加总而成,N=Nm+Nc

连续变量的平均绝对差 ADn,ij 定义如下:

其中,|·|代表绝对值,diffmax(xn) 代表可观测变量 xn 的最大差值。因此,连续变量的平均绝对差是所有可观测变量最大差值标准化之后的均值。

广义匹配系数 GMCij 可以被定义为各分类变量中等值变量的份额 (即xni=xnj的分类变量占比):

其中,

Stata 中的 flexpaneldid 命令不仅可以计算这种统计距离,而且可以在匹配后进行匹配变量的平衡性检验,并进一步计算出我们关心的 ATT。采用半径匹配法计算的个体ATT估计量为:

其中,t0i 表示个体 i 接受干预的开始时间,βi 为个体 i 接受干预的持续时间。由于不同处理组个体的干预持续期可能不同,因此,处理组的平均处理效应是不同观测时期 βi 对应的 ATT 的加权平均。

3. Stata 实操

本部分我们将介绍 flexpaneldid_preprocessingflexpaneldid 命令的使用。这两个 Stata 命令均发布于 SSC。需要注意的是,在使用这两个命令之前,Stata 必须先行安装好 psmatch2cem 命令。国内用户,可以使用连享会新近发布的 cnssc 命令极速安装。该命令是 Stata 官方命令 ssc 的中文镜像。

ssc install cnssc, replace 
cnssc install psmatch2, replace 
cnssc install cem, replace

*-安装 flexpaneldid 命令,下载范例数据:
cnssc des flexpaneldid               // 命令简介
cnssc install flexpaneldid, replace  // 安装
cnssc get     flexpaneldid           // 下载范例数据

本部分所用样例来自 Wooldridge (2010),我们想研究某一个特定的干预对企业层面专利数量的影响。数据样本和变量定义如下:样例数据集是 1972-1981 年的企业面板数据库,由企业代码 cusip 和 年份 year 确定某年唯一的企业。如果在观察期前 5 年内某企业接受过干预,则干预变量 treatment=1,否则为 0。接受干预的企业干预开始和持续时间可能有所不同。

首先,运行 flexpaneldid_preprocessing 命令,为处理组企业寻找潜在控制组。

. use flexpaneldid_example_data.dta, clear
. flexpaneldid_preprocessing, id(cusip) treatment(treatment) ///
 	time(year) matchvars(employ stckpr rnd sales return    ///
 	pats_cat rndstck_cat rndeflt_cat)  ///匹配变量
 	matchtimerel(-1)   ///相对于开始干预时间的匹配时间设定
	matchvarsexact(sic_cat)   ///精确匹配的变量
	prepdataset("preprocessed_data.dta") replace //储存预处理数据

注意:matchtimerel(int) 规定了开始匹配的时间,例如 matchtimerel(-1) 就表示从处理组企业接受干预的前一期开始匹配。prepdataset(string) replace 用于储存包含预处理结果的数据集。考虑到使用 flexpaneldid 命令时可能会重复使用预处理集,我们建议使用该选项。

flexpaneldid_preprocessing命令运行结果如下:


************************************************************************
********************* flexpaneldid - preprocessing *********************
************************************************************************

------------------------------------------------------------------------
id:                 cusip
treatment:          treatment
time:               year
matchvars:          employ stckpr rnd sales return 
                    pats_cat rndstck_cat rndeflt_cat
matchvarsexact:     sic_cat
match_time:         -1
prepdataset:        preprocessed_data.dta
------------------------------------------------------------------------


************************************************************************
************************* Preprocessing ********************************
************************************************************************

Preprocessing of 61 treated: 
.................................................. 50 
........... 61

************************************************************************
************************* Preprocessing - Summary **********************
************************************************************************

Number of treated:                                    61
Number of treated dropped during preprocessing:        0
Number of treated after preprocessing:                61
Mean size of selection groups:                   45.7377

运行结果表明,共有 61 个处理组企业找到了潜在控制组,每个处理组企业平均有 45.7 家潜在控制组企业。

其次,运行 flexpaneldid 命令进行样本匹配,具体代码如下:

. use example_data.dta, clear

. flexpaneldid patents, id(cusip) treatment(treatment)    ///
 	time(year) statmatching(con(employ stckpr rnd sales) ///
    cat(pats_cat rndstck_cat)) ///计算统计距离的匹配变量         
                               ///con()和cat()中分别为连续变量和类别变量
    outcometimerelstart(3)     ///干预持续期为3年
    outcomedev(-2 -1)   ///表示干预开始的前两期到前一期的结果变量变化
    test                ///用pstest命令进行匹配变量平衡性检验
    prepdataset(’preprocessed_data.dta’)   //储存预处理数据

flexpaneldid 运行结果首先汇报了该命令所添加的一些约束项,然后汇报了匹配的结果。61 个处理组企业中有 47 个找到了可匹配的控制组企业,同时,用于匹配的控制组企业仅为 39 个。

********************************************************
*********************** flexpaneldid *******************
********************************************************

--------------------------------------------------------
outcome:                patents
id:                     cusip
treatment:              treatment
time:                   year
outcome_time_start:     3
outcome_time_end:       .
outcome_dev:            -2 -1
cemmatching:            
statmatcing:            , con(employ stckpr rnd sales) cat(pats_cat rndstck_cat)
test:                   test
outcomemissing:         
didmodel:               
--------------------------------------------------------


********************************************************
******************** Matching: STAT ********************
********************************************************


********************************************************
********* flexpaneldid - Matching Summary **************
********************************************************

               |          NT           T
---------------+------------------------------
All            |         165          61
Matched sample |          39          47

flexpaneldid 命令中采用 test 选项时,Stata 会汇报 pstest 命令的平衡性检验结果。由下图输出结果可知,所有匹配变量在均值上均无显著性差异,而 stckprsalesoutcome_dev 三个变量的方差在 10% 的显著性水平上具有显著性差异。

********************************************************
******************** ps-test ***************************
********************************************************


---------------------------------------------------------------
            |       Mean               |     t-test    |  V(T)/
Variable    | Treated Control    %bias |    t    p>|t| |  V(C)
------------+--------------------------+---------------+-------
employ      | 26.197   20.337      8.6 |   0.42  0.677 |  1.13
stckpr      | 25.779    18.28     23.1 |   1.12  0.266 |  6.36*
rnd         | 38.116   31.329      4.6 |   0.23  0.822 |  1.30
sales       |   1201   1054.5      3.9 |   0.19  0.849 |  0.56*
pats_cat    | 1.9362   1.8936      3.2 |   0.15  0.879 |  0.98
rndstck_cat | 3.4255   3.2979      5.2 |   0.25  0.802 |  1.05
outcome_dev | -1.617  -1.5957     -0.2 |  -0.01  0.991 |  1.81*
---------------------------------------------------------------
* if variance ratio outside [0.56; 1.80]

----------------------------------------------------------------------
Ps R2   LR chi2   p>chi2   MeanBias   MedBias      B       R     %Var 
----------------------------------------------------------------------
0.037      4.77    0.688      7.0       4.6      44.2*    2.27*    43
----------------------------------------------------------------------
* if B>25%, R outside [0.5; 2]

由于样例基于统计距离进行匹配,flexpaneldid 命令会额外汇报匹配变量特定规模的检验统计量 (scale-specific test statistics)。其中,Kolmogorov-Smirnov test 汇报所有连续变量的平衡性检验结果,chi-square test 汇报所有分类变量的平衡性检验结果。由于推文篇幅限制,我们只在这里贴出 employ (连续变量) 和 pats_cat (分类变量) 的平衡性检验结果。

由下图输出结果可知,employ 的调整过的 p 值为 0.280,pats_cat 调整过的 p 值为 0.982,说明这两个变量在处理组和控制组中的分布均无显著性差异。

********************************************************
************************ KS-Test ***********************
********************************************************

ksmirnov employ , by(treated)

Two-sample Kolmogorov-Smirnov test for equality of distribution functions

 Smaller group       D       P-value  Corrected
 ----------------------------------------------
 0:                  0.1915    0.178
 1:                 -0.0638    0.826
 Combined K-S:       0.1915    0.355      0.280
 
 Note: Ties exist in combined dataset;
      there are 88 unique values out of 94 observations.
********************************************************
********************** Chi2-Test ***********************
********************************************************

tabulate pats_cat treated, chi2

  pats_cat |
       (at |
 treatment |        treated
  time -1) |         0          1 |     Total
-----------+----------------------+----------
         0 |         8          8 |        16 
         1 |        14         12 |        26 
         2 |         7          9 |        16 
         3 |        11         11 |        22 
         4 |         7          7 |        14 
-----------+----------------------+----------
     Total |        47         47 |        94 

          Pearson chi2(4) =   0.4038   Pr = 0.982

flexpaneldid 命令还可附带作出连续匹配变量的 Q-Q 图,以直观反应样本匹配质量。由下图可知,所有用于匹配的连续变量在匹配之后均与 45° 线有较小的偏离,且偏离大多发生在分布的尾部,这说明样例连续变量匹配较好。

最后,flexpaneldid 命令汇报了 ATT 估计采用的距离测度方法、匹配方法、处理组和控制组样本数量等信息,以及我们关心的 ATT 估计量。估计的 ATT 系数为 -2.20,t 检验的 P 值为 0.7193,说明处理组处理效应并不显著 (由于样例干预是随意设定,并非真实发生的干预,本样例中的ATT估计系数并无实际经济学含义)。

********************************************************
************ Conditional Diff-in-Diff ******************
********************************************************

Average treatment effect for the treated
Estimator       : Nearest neighbor          No. of treated obs     = 47
Distance metric : Statistical DF            No. of unique controls = 39
                                            Mean no. of matches    =  1
-----------------------------------------------------------------------
Outcome  |      mean Diff      |  DiD*   |AI robust |    z        P>|z|
         | treated  | controls |         |   S.E.   |         |
---------+----------+----------+---------+----------+---------+--------
patents  | -10.0213 | -7.8176  | -2.2037 |  6.1685  | -0.3572 |  0.7225
-----------------------------------------------------------------------
* Consistent bias-corrected estimator as proposed in Abadie & Imbens (2006,2011).

4. 参考文献

  • Angrist, J. D. and Pischke, J.-S. 2009. Mostly Harmless Econometrics. Princeton University Press, Princeton, New Jersey. -Code-
  • Ashenfelter, O. 1978. Estimating the Effect of Training Programs on Earnings. Review of Economics and Statistics 60(1), 47–57. -Link-, -PDF-
  • Athey, S. and Imbens, G. W. 2018. Design-based Analysis in Difference-In-Differences Settings with Staggerd Adoption, Working paper, Stanford University. -Link-, -PDF-
  • Autor, D. H. 2003. Outsourcing at Will: The Contribution of Unjust Dismissal Doctrine to the Growth of Employment Outsourcing. Journal of Labor Economics 21(1), 1-42. -Link-, -PDF-
  • Bronzini, R. and de Blasio, G. 2006. Evaluating the impact of investment incentives: The case of Italy’s Law 488/1992. Journal of Urban Economics 60, 327–349. -Link-, -PDF-
  • Callaway, Brantly, and Pedro H. C. Sant’Anna. “Difference-in-Differences with Multiple Time Periods.” Journal of Econometrics, 2020. -Link-, -PDF-
  • Heckman, J. J., Ichimura, H., Smith, J. A. and Todd, P. E. 1998. Characterizing Selection Bias Using Experimental Data. Econometrica 66(5), 1017–1098. -Link-, -PDF-
  • Wooldridge, J. M. 2010. Econometric Analysis of Cross Section and Panel Data, 2nd edn, MIT Press, Cambridge, Massachusetts. -Link-, -PDF-, -PDF2-

5. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh did
安装最新版 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