简单介绍一下实证论文中双重差分法(DID)的平行趋势检验(Parallel Trend Test)在Stata中如何操作

(本文首发于个人微信公众号DMETP,欢迎关注!)

一、平行趋势假定

平行趋势假定是实证论文中使用DID的前提,处理组与控制组的目标变量在政策发生前(事前)只有满足平行趋势假设才能使用DID。反之,如果处理组和控制组在事前就存在一定的差异,那么用DID做出来(可能还很好看)的结果就不再能代表政策的净效应,极有可能存在其他因素影响我们被解释变量的变动,此时可以使用三重差分法(DDD)。关于三重差分模型,连老师的一篇知乎推文讲的超级详细。

二、平行趋势检验

这里主要介绍两种情况下的平行趋势检验

一是普通DID模型的平行趋势检验,包括怎么画时间趋势图,怎么画95%置信区间图(动态效应检验图)。这里以石大千等(2018)公布在《中国工业经济》官网上的数据为例,由于所公布资料无法生成处理组虚拟变量,这里将使用微信公众号『功夫计量经济学』处理之后的数据。

参考文献:

石大千, 丁海, 卫平, 刘建江. 智慧城市建设能否降低环境污染[J]. 中国工业经济, 2018(06): 117-135.

二是多期DID模型的平行趋势检验,包括怎么画95%置信区间图。这里之所以没有画平行趋势图,是因为在多期DID中,各个处理组受到政策冲击的时点不一致。因此,就算能够准确识别出处理组和控制组,由于处理组政策起始时点不一致,我们也很难在同一张图中将两组目标变量的时间趋势图画出来。

李青原和章尹赛楠(2021)的思路是,单独提取从样本开始年份直到某一年年末才受到政策冲击的样本为处理组,并将从样本开始年份直到某一年年末都没受到政策冲击的样本作为控制组,画出两组间的时间趋势图,这样的方法在政策冲击时点较少时可以考虑,因此不具有一般性。

参考文献:

李青原, 章尹赛楠. 金融开放与资源配置效率——来自外资银行进入中国的证据[J]. 中国工业经济, 2021(05): 95-113.

三、动态效应检验

动态效应检验实质上就是引入有限个时间虚拟变量,并将其与处理组虚拟变量交乘,考察交乘项的显著性。动态效应检验和平行趋势检验是有区别的,平行趋势检验中,只要考察0时期前的交乘项是否显著,如果不显著,说明处理组和控制组在事前并没有显著差异,可以使用DID。

而动态效应检验不仅考察事前,也关注事后组别之间的差异,如果0时期后(包括0时期)的交乘项显著,说明政策实施存在一定的持续性效果。当然,平行趋势检验只要求事前不显著,事后显不显著不影响事前的结论

由于多期DID中处理组受到政策影响的时点不一致,那么怎样生成时间虚拟变量就成为一个问题。在李青原和章尹赛楠(2021)中,分为5个时期,分别是样本起始年份至政策实施前两年、政策实施前一年、政策实施当年,政策实施后一年、政策实施后两年至样本结束年份;而在沈坤荣和金刚(2018)中,直接省略政策推行前三年以上的年份。可见,多期DID平行趋势检验中如何设计时间虚拟变量需要兼顾理论假设和最终结果,同时需要想象力~

参考文献:

沈坤荣, 金刚. 中国地方政府环境治理的政策效应——基于“河长制”演进的研究[J]. 中国社会科学, 2018(05): 92-115.

四、Stata代码

*==============================================================================*
*                        双重差分法(DID) | 平行趋势检验                        *
*==============================================================================*** Stata Version: 16 | 17** 【数据来源】普通DID(原始数据):石大千等(2018), 参见在《中国工业经济》网站(http://ciejournal.ajcass.org/Magazine/show/?id=54281)
*-             普通DID(加工数据):『功夫计量经济学』微信公众号(https://mp.weixin.qq.com/s/06v6s90G1pp-yLju_yAy1Q)
*-             多期DID(原始数据):李青原和章尹赛楠(2021),参见在《中国工业经济》网站(http://ciejournal.ajcass.org/Magazine/show/?id=77331)** 【参考文献】[1] 石大千, 丁海, 卫平, 刘建江. 智慧城市建设能否降低环境污染[J]. 中国工业经济, 2018(06): 117-135.
*-             [2] 李青原, 章尹赛楠. 金融开放与资源配置效率——来自外资银行进入中国的证据[J]. 中国工业经济, 2021(05): 95-113.
*-             [3] 沈坤荣, 金刚. 中国地方政府环境治理的政策效应——基于“河长制”演进的研究[J]. 中国社会科学, 2018(05): 92-115+206.cd "C:\Users\KEMOSABE\Desktop\parallel_trend_test"graph set window fontface     "Times New Roman"graph set window fontfacesans "宋体"**# 一、普通DID的平行趋势检验use smart_city2018.dta, clearglobal xlist "lnrgdp lninno lnurb lnopen lnss"**# 1.1 时间趋势图bysort du year: egen mean_lnrso = mean(lnrso)twoway(line mean_lnrso year if du == 1,                                    ///lpattern(solid)                                                ///lcolor(black)                                                  ///lwidth(thin)                                                   ///scheme(qleanmono)                                              ///ytitle("{stSans:人}""{stSans:均}""{stSans:废}"                 ///"{stSans:气}""{stSans:排}""{stSans:放}"                 ///"{stSans:量}"  , size(medlarge) orientation(h))         ///xtitle("{stSans:年份}", size(medlarge))                        ///xline(2012, lpattern(solid) lcolor(black) lwidth(thin))        ///saving(parallel_trend_test_1-1, replace))                      ///(line mean_lnrso year if du == 0,                                    ///lpattern(shortdash)                                            ///lcolor(black)                                                  ///lwidth(thin))  ,                                               ///xlabel(2005(2)2015   , labsize(medlarge))                            ///ylabel(-2.5(0.25)-1.5, labsize(medlarge) format(%3.2f))              ///legend(label(1 "{stSans:处理组}")                                    ///label(2 "{stSans:控制组}")                                    ///size(medlarge) position(1) symxsize(10))graph export "parallel_trend_test_1-1.emf", replacediscard  // 结果已保存至路径文件夹**# 1.2 动态效应检验(事件研究法)gen current = 2012.year * duforvalue i = 4(-1)1 {gen before`i' = (year == 2012 - `i') * du}forvalue k = 1/3 {gen after`k'  = (year == 2012 + `k') * du}drop before4  // 将2008年作为基准年qui reghdfe lnrso before* current after* $xlist , absorb(id year) cluster(id)coefplot,                                                                  ///keep(before* current after*)                                           ///vertical                                                               ///scheme(qleanmono)                                                      ///coeflabels(before3 = -3                                                ///before2 = -2                                                ///before1 = -1                                                ///current =  0                                                ///after1  =  1                                                ///after2  =  2                                                ///after3  =  3)                                               ///msymbol(O) msize(small) mcolor(black)                                  ///addplot(line @b @at,    lcolor(black) lwidth(thin) lpattern(solid))    ///ciopts(recast(rcap)     lcolor(black) lwidth(thin))                    ///yline(0, lpattern(dash) lcolor(black) lwidth(thin))                    ///ytitle("{stSans:系}""{stSans:数}", size(medlarge) orientation(h))      ///xtitle("{stSans:期数}"           , size(medlarge))                     ///xlabel(, labsize(medlarge))                                            ///ylabel(, labsize(medlarge) format(%02.1f))                             ///saving(parallel_trend_test_1-2, replace)graph export "parallel_trend_test_1-2.emf", replacediscardclear allcls**# 二、多期DID的平行趋势检验use 平行趋势检验.dta, clearglobal y        "TFPQD_OP TFPQD_LP"global adjyear  "yb2 yb1 y0 ya1 ya2"global ctrlvars "ADM PPE ADV RD HHI INDSIZE NFIRMS FCFIRM MARGIN LEVDISP SIZEDISP ENTRYR EXITR"global options  "absorb((city)*(year) (ind3)*(year)) cluster(city year) keepsing"gen year_enter = 2007replace year_enter = 2004 if city == 5101 | city == 5000 | city == 2102 |  ///city == 3501 | city == 4401 | city == 3701 |  ///city == 3201 | city == 3702 | city == 3101 |  ///city == 4403 | city == 1200 | city == 4201 |  ///city == 4404 | prov ==   44 | prov ==   45 |  ///prov ==   43 | prov ==   32 | prov ==   33replace year_enter = 2005 if city == 1100 | city == 5301 | city == 2101 |  ///city == 3502 | city == 6101replace year_enter = 2006 if city == 2201 | city == 2301 | city == 6201 |  ///city == 6401gen yb2 = (year_enter == year + 2)gen yb1 = (year_enter == year + 1)gen y0  = (year_enter == year)gen ya1 = (year_enter == year - 1)gen ya2 = (year_enter <= year - 2)**# 2.1 动态效应检验(TFPQD_OP)qui reghdfe TFPQD_OP $adjyear $ctrlvars , $optionscoefplot,                                                                  ///keep( $adjyear )                                                       ///vertical                                                               ///scheme(qleanmono)                                                      ///coeflabels(yb2 = -2                                                    ///yb1 = -1                                                    ///y0  =  0                                                    ///ya1 =  1                                                    ///ya2 =  2)                                                   ///msymbol(O) msize(small) mcolor(black)                                  ///addplot(line @b @at,    lcolor(black) lwidth(thin) lpattern(solid))    ///ciopts(recast(rcap)     lcolor(black) lwidth(thin))                    ///yline(0, lpattern(dash) lcolor(black) lwidth(thin))                    ///ytitle("{stSans:系}""{stSans:数}", size(medlarge) orientation(h))      ///xtitle("{stSans:期数}"           , size(medlarge))                     ///xlabel(, labsize(medlarge))                                            ///ylabel(, labsize(medlarge) format(%03.2f))                             ///saving(parallel_trend_test_2-1, replace)graph export "parallel_trend_test_2-1.emf", replacediscard**# 2.2 动态效应检验(TFPQD_LP)qui reghdfe TFPQD_LP $adjyear $ctrlvars , $optionscoefplot,                                                                  ///keep( $adjyear )                                                       ///vertical                                                               ///scheme(qleanmono)                                                      ///coeflabels(yb2 = -2                                                    ///yb1 = -1                                                    ///y0  =  0                                                    ///ya1 =  1                                                    ///ya2 =  2)                                                   ///msymbol(O) msize(small) mcolor(black)                                  ///addplot(line @b @at,    lcolor(black) lwidth(thin) lpattern(solid))    ///ciopts(recast(rcap)     lcolor(black) lwidth(thin))                    ///yline(0, lpattern(dash) lcolor(black) lwidth(thin))                    ///ytitle("{stSans:系}""{stSans:数}", size(medlarge) orientation(h))      ///xtitle("{stSans:期数}"           , size(medlarge))                     ///xlabel(, labsize(medlarge))                                            ///ylabel(, labsize(medlarge) format(%03.2f))                             ///saving(parallel_trend_test_2-2, replace)graph export "parallel_trend_test_2-2.emf", replacediscard

五、运行结果

1. 普通DID的平行趋势检验

用石大千等(2018)的数据绘制出如下图 1图 2。其中,图 1是时间趋势图,可以看到,在政策实施年份(2012)年之前,处理组和控制组的人均废气排放量变动趋势大体一致,但在2005-2006这两年间两组目标变量的变动方向相反。在2012年以后,控制组人均废气排放量有过上扬的历史,随后在2013年开始逐年下降,但下降幅度不大;处理组的人均废气排放量在2012年以后年份均处于下降通道,且在2014年下降幅度较大。因此,可以初步判断两组间在政策实施年份前的时间趋势假定基本是满足的,政策实施年份以后趋势线的差异基本判断是由智慧城市试点造成的。当然,这个结论并不稳健,需要进一步检验两组间的动态效应

图 2是动态效应检验图。其中,垂直于横轴的带盖短直线是各期数与处理组虚拟变量的交乘项回归系数的95%置信区间。可以看到,在期数为0(该例为2012年)以前,除政策实施年份三年前的系数显著(95%置信区间没有越过系数 = 0的水平虚线),其余期数都是不显著的,这也与时间趋势图所揭示的信息基本保持一致。而在政策实施以后的所有年份,系数基本显著(期数为2时有微微不显著),说明该政策的影响具有一定的持续性(或称时滞性),并且在样本期间内于实施后的第三年该政策具有最大的效果

当然,基准年的选择对显著性的影响很大,这里将2008年作为基准年,也可以通过选择不同的基准年对结果进行适当调整。

2. 多期DID的平行趋势检验

图 3图 4分别是使用李青原和章尹赛楠(2021)公布的数据画出来的基于OP法和LP法计算的TFP离散度的动态效应检验图。在李青原和章尹赛楠(2021)公布的附件中,作者在平行趋势检验部分提供了回归结果表,但没有将其绘制成图。如图 3所示,在政策实施之前,系数都是不显著的,政策实施以后,系数同样都不显著。这说明了基于OP法计算的TFP离散度满足平行趋势假定,但政策实施不具有持续性。虽然政策不具有持续性,但系数为负是符合基本理论假设的,并且在政策实施一年后开始,系数与t值较之前明显增大。

图 4就比较完美了,实施年份之前都不显著,实施年份之后都显著,且系数符合理论假设,这说明基于OP法计算的TFP离散度既满足平行趋势假定,而且政策实施的影响具有一定的持续性

双重差分法之平行趋势检验相关推荐

  1. 双重差分模型能做固定效应吗_双重差分法的平行趋势假定

    Prof. Orley Ashenfelter, architect of modern labor economics, former AEA president 双重差分法是估计处理效应的常见方法 ...

  2. 双重差分法|DID|PSM|平行趋势检验|安慰剂检验|Stata代码

    双重差分与稳健性检验原理 双重差分法 以两期面板为例 数据采用cardkrueger1994.dta,可在陈强老师个人主页<高级计量经济学及Stata应用>, 第2版下载数据集 基本模型 ...

  3. did双重差分法_互助问答第252期:双重差分平行趋势检验等问题

    老师您好,关于双重差分法的适用性问题:基于现有样本数据,做出平行趋势图如下,设想将A组作为控制组,B组作为实验组,采用双重差分法检验政策出台对B组有抑制效应,请问老师基于这张图是否可行? 2. 关于三 ...

  4. did双重差分法_Stata中双重差分操流程及代码

    01 简介 现代计量经济学和统计学的发展为我们的研究提供了可行的工具.倍差法来源于计量经济学的综列数据模型,是政策分析和工程评估中广为使用的一种计量经济方法.主要是应用于在混合截面数据集中,评价某一事 ...

  5. 双重差分法之安慰剂检验

    简单介绍一下实证论文中双重差分法(DID)的安慰剂检验(Placebo Test)在Stata中如何操作. (本文首发于个人微信公众号DMETP,是往期两篇推文的合辑,欢迎关注!) 下面的内容根据实际 ...

  6. 因果推断 | 双重差分法笔记补充

    换了新的环境后,一直在适应(其实是一直被推着走),所以停更了笔记好久啦.这一周周末终于有点得空,当然也是因为疫情,哪里都不能去,哈哈,所以来冒个泡~ 整理了最近pre的作业,分享一下双重差分法的一些笔 ...

  7. stata DID平行趋势检验

    平行趋势检验有很多方法,这里选用我能够理解的方法. 参考:多期双重差分法(DID)平行趋势检验的Stata操作 step1 (1)我们需要用各期时间减去各自政策开始实施时间,生成一个相对的时间值eve ...

  8. 双重差分模型能做固定效应吗_数据分析之道 | 双重差分法(DID)

    Picture from Internet DID是什么? 双重差分法(DID)又被称为"倍差法",小名"差中差",是种专门用于分析政策效果的计量方法. 我国最 ...

  9. did双重差分法_互助问答第47期:政策时点不一致DID的问题

    问题: 各位老师好,在政策效果评估时经常会用到双重差分法,我想请问一个关于政策时点不一致DID的问题.我知道DID需要满足两个前提,一是政策外生性,二是平行趋势假设.但是我国绝大多数政策其实是采取&q ...

  10. 双重差分法(DID)入门必看

    双重差分(Differences-in-Differences,DID),其常用于政策评估效应研究,比如研究'鼓励上市政策'.'开通沪港通'.'开通高铁'.'引入新教育模式'等效应时,分析效应带来的影 ...

最新文章

  1. 1732: 数花费(Kruscal)
  2. .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  3. mysql3.5 所有表_mysql学习笔记3.5
  4. mysql中的函数编程_MySQL
  5. Nmap 源代码学习四 软件简单使用
  6. linux下mysql启动和关闭
  7. 数据格式转换 (三)Office文档转HTML
  8. toStringequals方法
  9. java captcha 验证码_java生成图片验证码的示例代码
  10. [转载]GBK 汉字内码扩展规范编码表(1.0 版)
  11. html 复选框事件,HTML复选框选中与未选中触发事件的方法
  12. python烤地瓜实例(深入理解面向对象编程)
  13. Django框架目录结构
  14. Python sorted Pandas sort_values 中文拼音排序
  15. 苹果新专利曝光 背后有何暗示?
  16. STM32F103RB 实作笔记(九)- PWM + SPI +MAX6675 整合试验 (正点原子 STM32F103 nano开发板)程式解析
  17. cocos creator接入微信登陆sdk ios篇
  18. 大数据阶段项目之项目介绍
  19. vant 关于IOS时间会出现NaN现象
  20. 史上最全的 Stata 外部命令一览

热门文章

  1. PHP Session理解
  2. excel日期改成字符类型_Excel表格中怎么把日期格式转换成文本格式?excel表格自定义格式的日期...
  3. python tkinter输入框_自制tkinter输入框Inputbox类
  4. 如何量化考核软件开发人员绩效
  5. redhat红帽官方软件仓库同步方案
  6. 互联网和大数据是什么意思_什么是互联网大数据?
  7. 安装EPICS窗口显示工具MEDM和EDM
  8. CC2530 Hex文件解析
  9. 问道手游服务器修改密码,问道手游账号安全设置及找回密码教程 玩转问道
  10. html面包屑菜鸟,同一产品页多个面包屑导航?