Stata-DID:不同处理时点不同持久期的倍分法(flexpaneldid)
🍎 连享会主页:lianxh.cn
「十年口碑,桃李三千」
🎦 2021 Stata 暑期班
📅 2021 年 7 月 20-30 日
🔑 连玉君(中山大学);江艇 (中国人民大学)
🍓 课程主页:https://gitee.com/lianxh/PX
New!
lianxh
命令发布了: GIF 动图介绍
随时搜索 Stata 推文、教程、手册、论坛,安装命令如下:
. ssc install lianxh
作者:丁雅文 (北京大学)
邮箱: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. 简介
2. 理论背景
2.1 现有解决方法
2.2 灵活的条件 DID
2.3 处理组处理效应 ATT 估计
3. Stata 实操
4. 参考文献
5. 相关推文
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
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 年的非平衡面板中,接受干预的企业单位 ,,,…, 开始接受干预的时间和干预持续时间皆不相同。此外,金融学中的日历效应 (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 匹配所用的统计距离函数结合了连续变量的平均绝对差与分类变量的广义匹配系数。处理组企业 与任意一个非处理组企业 之间的距离函数可表示为:
其中, 为企业 与企业 之间的加总距离, 和 分别表示连续变量的平均绝对差和分类变量的广义匹配系数。 表示用于匹配的变量数量,由连续变量个数 和类别变量个数 加总而成,。
连续变量的平均绝对差 定义如下:
其中,|·|代表绝对值, 代表可观测变量 的最大差值。因此,连续变量的平均绝对差是所有可观测变量最大差值标准化之后的均值。
广义匹配系数 可以被定义为各分类变量中等值变量的份额 (即的分类变量占比):
其中,
Stata 中的 flexpaneldid
命令不仅可以计算这种统计距离,而且可以在匹配后进行匹配变量的平衡性检验,并进一步计算出我们关心的 ATT。采用半径匹配法计算的个体ATT估计量为:
其中, 表示个体 接受干预的开始时间, 为个体 接受干预的持续时间。由于不同处理组个体的干预持续期可能不同,因此,处理组的平均处理效应是不同观测时期 对应的 ATT 的加权平均。
3. Stata 实操
本部分我们将介绍 flexpaneldid_preprocessing
和 flexpaneldid
命令的使用。这两个 Stata 命令均发布于 SSC。需要注意的是,在使用这两个命令之前,Stata 必须先行安装好 psmatch2
和 cem
命令。国内用户,可以使用连享会新近发布的 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: cusiptreatment: treatmenttime: yearmatchvars: employ stckpr rnd sales return pats_cat rndstck_cat rndeflt_catmatchvarsexact: sic_catmatch_time: -1prepdataset: preprocessed_data.dta------------------------------------------------------------------------
************************************************************************************************* Preprocessing ********************************************************************************************************
Preprocessing of 61 treated: .................................................. 50 ........... 61
************************************************************************************************* Preprocessing - Summary **********************************************************************************************
Number of treated: 61Number of treated dropped during preprocessing: 0Number of treated after preprocessing: 61Mean 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: patentsid: cusiptreatment: treatmenttime: yearoutcome_time_start: 3outcome_time_end: .outcome_dev: -2 -1cemmatching: statmatcing: , con(employ stckpr rnd sales) cat(pats_cat rndstck_cat)test: testoutcomemissing: didmodel: --------------------------------------------------------
**************************************************************************** Matching: STAT ****************************************************************************
***************************************************************** flexpaneldid - Matching Summary **********************************************************************
| NT T---------------+------------------------------All | 165 61Matched sample | 39 47
在 flexpaneldid
命令中采用 test
选项时,Stata 会汇报 pstest
命令的平衡性检验结果。由下图输出结果可知,所有匹配变量在均值上均无显著性差异,而 stckpr、sales 和 outcome_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.13stckpr | 25.779 18.28 23.1 | 1.12 0.266 | 6.36*rnd | 38.116 31.329 4.6 | 0.23 0.822 | 1.30sales | 1201 1054.5 3.9 | 0.19 0.849 | 0.56*pats_cat | 1.9362 1.8936 3.2 | 0.15 0.879 | 0.98rndstck_cat | 3.4255 3.2979 5.2 | 0.25 0.802 | 1.05outcome_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 的调整过的 值为 0.280,pats_cat 调整过的 值为 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, 检验的 值为 0.7193,说明处理组处理效应并不显著 (由于样例干预是随意设定,并非真实发生的干预,本样例中的ATT估计系数并无实际经济学含义)。
******************************************************************** Conditional Diff-in-Diff **************************************************************************
Average treatment effect for the treatedEstimator : Nearest neighbor No. of treated obs = 47Distance 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
专题:Stata命令 DIDM:多期多个体倍分法-did_multiplegt 专题:倍分法DID 队列DID:以知识青年“上山下乡”为例-T401 DID功效计算中的序列相关问题-T407 多期DID文献解读:含铅汽油与死亡率和社会成本-L113 DID陷阱解析-L111 面板PSM+DID如何做匹配? 倍分法:DID是否需要随机分组? Fuzzy DID:模糊倍分法 DID:仅有几个实验组样本的倍分法 (双重差分) 考虑溢出效应的倍分法:spillover-robust DID tfdiff:多期DID的估计及图示 倍分法DID:一组参考文献 Stata:双重差分的固定效应模型-(DID) 倍分法(DID)的标准误:不能忽略空间相关性 多期DID之安慰剂检验、平行趋势检验 DID边际分析:让政策评价结果更加丰满 Big Bad Banks:多期 DID 经典论文介绍 多期DID:平行趋势检验图示 Stata:多期倍分法 (DID) 详解及其图示 倍分法DID详解 (二):多时点 DID (渐进DID) 倍分法DID详解 (一):传统 DID 倍分法DID详解 (三):多时点 DID (渐进DID) 的进一步分析 专题:内生性-因果推断 Abadie新作:简明IV,DID,RDD教程和综述
🍎 🍏 🍎 🍏
🎧 暑期 空间计量专题
📅 2021 年 8 月 21-24 日
🔑 范巧 (兰州大学);杨海生 (中山大学)
🍓 课程主页:https://gitee.com/lianxh/SP
关于我们
🍎 连享会 ( 主页:lianxh.cn ) 由中山大学连玉君老师团队创办,定期分享实证分析经验。 👉 直达连享会:【百度一下:连享会】即可直达连享会主页。亦可进一步添加 主页,知乎,面板数据,研究设计 等关键词细化搜索。
New!
lianxh
命令发布了: GIF 动图介绍
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh