Stata:RDD-DID-断点回归与倍分法完美结合

发布时间:2021-10-27 阅读 898

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

作者: 张超 (中山大学)
邮箱: zhangchaooor@163.com


目录


Angrist 和 Pischke 在《精通计量:从原因到结果的探寻之旅》一书中指出计量经济学研究因果推断的 “盖世五侠” 为随机实验、回归、工具变量 (IV) 、回归断点设计 (RD) 以及双重差分 (DID) 。

上述因果识别方法的单个使用就可以帮助我们实现有效的因果识别,但是有些情况下,需要将其组合使用,如 DID-RDD, 下文首先简单介绍 DID 与 RDD 在不同研究场景下的使用,在此基础上介绍 RDD-DID。

1. RDD-DID 简介

1.1 RDD 简介

RDD 可以用来识别自然实验或结构性政策变化附近的局部处理效应。Thistlethwaite 和 Campbell (1960) 首次提出使用断点回归设计研究处理效应。他们的研究问题是奖学金对于未来学业的影响, 而学生是否获得奖学金取决于考试的分数。由于奖学金由学习成绩决定,故成绩刚好达到获奖标准与差一点达到的学生具有可比性。如果考试分数大于获奖标准分数, 则进入处理组;如果考试分数小于获奖标准分数, 则进入控制组。即获奖标准分数处形成了一个断点, 利用靠近这一断点附近的样本来有效估计处理效应,判断奖学金对未来学业的影响。

后续学者关于 RDD 的研究设计场景大开脑洞,在地理、时间等维度构造断点。地理断点方面,如 Dell (2010) 则通过比较殖民时期的强迫劳动制度—— mita 边界两侧的村庄,即一个属于 mita 的范围 (处理组) ,另一个不一个属于 mita 的范围 (对照组) ,观测 mita 对现代的影响。研究发现当年在 mita 范围内的村庄 (处理组) 在现在仍然比较贫穷。国内关于地理断点的研究场景如利用地表水水质监测站点带来的空间断点,估计了环境监管对企业生产率的影响 (He et al., 2020) , 根据淮河南北采取不同的取暖政策 (淮河以北集中供暖、淮河以南不集中供暖) 来识别长期暴露于空气污染对居民预期寿命的的影响 (Chen et al., 2013) 。

时间断点方面,如中国所有火电厂在同一天的同一个时刻装上某一种除硫设施,这样就能够通过比较在这一时间点前后空气质量的差异来衡量这一政策对空气质量的影响;Chen 等 (2019) 则利用 2017 年 8 月济南市政府取消了买房面积超过90平方米可以落户的规定,进而估算户口的价值。

1.2 DID 简介

一般的 DID 设计是基于个体—时间这两个维度差异构建进行因果识别,以国内场景为例,如农业税改革 (陈晓光,2016) 、省直管县 (李广众和贾凡胜,2020) 、环保法庭的设立 (范子英和赵仁杰,2019) 等。

但是也有基于其他维度,如 Shihe Fu and Yizhen Gu (2017) 则基于年度-月 (日) 度双重时间差异测算国庆节高速免费对空气污染的影响。 2012 年 7 月中国政府宣布节假日小轿车免费通行,因此作者以 2012 年 9 月 30 日- 10 月 7 日全国 98 个城市国庆免费通行的准自然实验,以去年国庆节同期作为参考组,评价了取消收费政策对空气质量的影响。

1.3 RD+DID 简介

当 RD+DID 时,则是利用年度和月度两个维度的差异 (当然也可以脑洞其他两个维度的组合) , 识别假设允许核心解释变量之外的其他协变量在改革日期前后出现跳跃。如 Persson 和 Rossin-Slater (2019) 在识别父亲的工作灵活性是否可以显著改善母亲的产后健康,则是依据 2012 年 1 月 1 日瑞典政府出台的父亲间歇性的育儿假 (‘Double Day’) 这一政策。

从 RDD 研究设计的视角看,可以类比上文提到的 Chen 等 (2019) 关于估算户口价值的论文,可以通过估计 2012 年 1 月 1 日前后三个月 ( RDD 的带宽) 的产子的母亲的心理健康差异,识别这一问题。但是如果前三个月 (10-12月) 的季节是冬天,而后三个月的季节 (1-3月) 是春天,而假设人们在冬天心情不好而在春天心情好,那么这一系统系差异则会影响仅仅根据 RDD 估计的处理效应。(Note: 此处,有关「冬天心情遭,春天心情好」的假设是推文作者自己为了解释系统性差异而引入的,论文原文中并没有这个表述)

从 DID 研究设计的视角看,这种全国一刀切的政策,可以类比上文提到的 Shihe Fu and Yizhen Gu (2017) 基于年度-月(日)度双重时间差异测算国庆节高速免费对空气污染的影响。但是会受到遗漏变量的影响,传统的基于个体-时间两个维度的 DID 可能也不适用。

作者则将 RDD 和 DID 结合,通过比较估计 2012 年 1 月 1 日前后三个月 (处理组) 的产子的母亲的心理健康差异 (RD1),并通过与之前年份相同时间区间 (对照组组) 的心理健康差异 (RD2) 的差异 (DID),消除协变量在改革日期前后也出现跳跃的系统性差异。

梁平汉等 (2020) 在估算出口退税无纸化申报改革对企业出口行为的影响也采用了 RDD-DID 这一方法。由于论文中样本企业所在地区的无纸化改革的实施时间是 2017 年 9 月,因此可以观察这一时点前后企业出口的跳跃情况进而识别政策的经济效应。但是由于企业的月度出口受国外需求周期的影响,具有较强季节性,因此在一年中遵循一定周期性。而对于同一家企业, 可以将自己上一年的月度数据作为对照组,通过量化无纸化改革对同期月度出口绩效的影响准确识别其经济效应。

2. RDD-DID 分析

为了方便读者们理解和翻阅论文原文,我们在此以 梁平汉等 (2020) 的论文场景为例讲解 RDD-DID 。论文中出口退税的无纸化改革的实施时间是 2017 年 9 月,并选择 3 个月的带宽, 因此样本期间是 2017 年 6-11 月 (处理组),2016 年 6-11 月及 2015 年 6-11 月 (对照组)时间段。

具体的识别如下图所示 (此处处理组简化为 2016 年一年) 。

从图中可以看出,其实 RDD-DID 本质上就是相当于把 DID 中个体在冲击前后的差异由利用差分变为利用 RDD 估计 (第一个 Dif) , 然后用处理组的 RDD 估计得到的处理效应 (对应图 1 中的 RDD 处理效应 1 ) 减去对照组 RDD 估计得到的处理效应 (对应图 2 中的 RDD 处理效应 2 ) ,得到 Dif-in-Dif, 即真实的处理效应。

具体而言,模型设定如下

其中,

  • Exporti,t,d 表示企业 itd 月的出口额。
  • d 为企业出口额申报时间,是 RDD 的驱动变量。 c 表示改革的月份 9 月。I[d>=c] 为标记变量,如果申报时间在 9-11 月,则为 1 ;如果申报时间在 6-8 月,则为 0 。
  • Ri 为处理组和对照组的识别变量,如果是 2017 年,则赋值为 1 ,否则赋值为 0 。
  • f(dc) 是关于驱动变量的局部多项式函数。
  • 固定效应方面。 λi 表示企业固定效应,γt 表示年份固定效应, νd表示月度固定效应, ψit 表示企业-年份份固定效应, μid 表示企业-月份固定效应。

我们关注的系数是β2,代表双重差异,第一重差异是 2017 年 9-11 月的出口额与 2017 年 6-8 月出口额的差异,第二重是处理组和对照组的差异,即 2017 年和其他年份的差异。

需要注意的是,此处 RDD-DID 设计要求是所有接受无纸化退税的企业 (才会在断点处跳跃) ,尽管梁老师论文中存在不享受无纸化退税的样本,但是这部分样本是不纳入 RDD-DID 分析的。

3. stata实例

由于梁老师的数据难以获取,我们生成一份模拟数据,数据存在一定的简化。具体数据结构为 60 个体 * 3 年 * 6 个月, 共 1080 个观测值的平衡面板数据,其中我们遵循原文设定,以 2017 年的 9 月为政策冲击年份

首先生成样本

// 设定 60 个观测值,设定随机数种子
clear all
brow
set obs 60
set seed 10101
gen id = _n

//每一个数值的数量扩大 3 倍,生成 60*3 = 180,为 60 个个体 3 年的面板数据
expand 3
sort id
count
bys id: gen year = _n+2014

//由于 RDD 的带宽为 3 个月,因此每个样本每年需要扩大 6 倍,即 180*6 = 1080 ,为 60 个个体 3 年 6 个月份的数据
expand 6
sort id year
count
bys id year: gen month= _n+5

// 生成协变量 x1,x2
gen x1 = rnormal(1,7)
gen x2 = rnormal(2,5)

// 生成固定效应
* 个体固定效应
sort  year month id
bys year month: gen ID = _n
sort ID
* 年份固定效应
sort id month year 
bys id month: gen Y = _n
sort Y
* 月份固定效应
sort id year month  
bys id year: gen M = _n
sort M

// 生成 YPost MPost变量,以 2017 年 9 月为政策冲击年份,
* 月份跳跃前后的识别,即跳跃前 (6-8月) MPost为 0,跳跃后 (9-11月) MPost为 1
gen MPost = 0
replace MPost = 1 if month >= 9 
tab month MPost //从下表可以看出,我们的月份和MPost的关系设定正确

         |         MPost
     month |         0          1 |     Total
-----------+----------------------+----------
         6 |       180          0 |       180 
         7 |       180          0 |       180 
         8 |       180          0 |       180 
         9 |         0        180 |       180 
        10 |         0        180 |       180 
        11 |         0        180 |       180 
-----------+----------------------+----------
     Total |       540        540 |     1,080

* 年份识别变量,政策于 2017 年出台,出台前 YPost 为 0,出台当年 YPost 为 1
gen YPost = 0
replace YPost = 1 if year == 2017
tab year YPost //从下表可以看出,我们的年份和YPost的关系设定正确

       |         YPost
      year |         0          1 |     Total
-----------+----------------------+----------
      2015 |       360          0 |       360 
      2016 |       360          0 |       360 
      2017 |         0        360 |       360 
-----------+----------------------+----------
     Total |       720        360 |     1,080 

save RD_DID_sample.dta //我们将这些基础信息保存为一个数据文件

我们首先观察处理组 ( 2017 年) 和对照组 ( 2015 年、 2016 年) ,在 9 月前后的跳跃变化(即上文中提到第一个 Dif ),由于 RDD-DID 允许出现协变量引发的变化 (系统性差异的存在),因此我们在此允许 x1x2 在 9 月前后发生变化。

首先,我们观察对照组 ( 2015年、 2016 年)在断点 ( 9 月) 前后的变换。

use RD_DID_sample.dta, clear

// 生成被解释变量
// 由于 RDD-DID 允许出现协变量引发的变化,因此我们在此允许 x1 在 9 月后增加 1 个单位,x2 在 9 月后增加 2 个单位。

bys id year: gen     y0 = 10 + 5*x1     +3*x2     + rnormal() if MPost==0 & YPost==0
bys id year: replace y0 = 10 + 5*(x1+1) +3*(x2+2) + rnormal() if MPost==1 & YPost==0  

save RD_DID_sample.dta,replace

从上述 y0 的设定可以看出,我们应该观测到 9 月前后跳跃了 11 个单位(5 * 1 + 3 * 2 = 11),其中包括 x1 增加一个单位引发的变化 5 和 x2 增加一个单位引发的变化 6 。

use RD_DID_sample.dta, clear
areg y0 MPost x1 x2 i.M i.year if YPost==0, ab(ID ) vce(robust)
//从回归结果可以看出,MPost的系数为10.848,接近11

note: 6.M omitted because of collinearity

Linear regression, absorbing indicators   Number of obs     =  720
Absorbed variable: ID                     No. of categories =   60
                                          F(8,    652)   =  138753.76
                                          Prob > F          =  0.0000
                                          R-squared         =  0.9994
                                          Adj R-squared     =  0.9994
                                          Root MSE          =  0.9851
---------------------------------------------------------------------
       |              Robust                                         
    y0 |     Coef.   Std. Err.      t    P>|t|   [95% Conf. Interval]
-------+-------------------------------------------------------------
 MPost |  10.84842   .1233064    87.98   0.000    10.6063    11.09055
    x1 |  5.007873   .0051366   974.94   0.000   4.997787    5.017959
    x2 |  2.993566   .0075459   396.72   0.000   2.978748    3.008383
       |                                                             
     M |                                                             
    2  | -.1385908   .1215393    -1.14   0.255  -.3772466     .100065
    3  | -.1391771   .1374009    -1.01   0.311  -.4089787    .1306246
    4  |  .0192871    .125654     0.15   0.878  -.2274483    .2660225
    5  |  .0274213   .1198433     0.23   0.819  -.2079042    .2627467
    6  |         0  (omitted)                                        
       |                                                             
  year |                                                             
 2016  |  -.098825   .0734967    -1.34   0.179  -.2431439    .0454938
       |                                                             
 _cons |  10.17572   .0990673   102.72   0.000   9.981186    10.37025
---------------------------------------------------------------------

其次,我们观察处理组 (2017 年) 在断点 (9 月) 前后的变换。

use RD_DID_sample.dta, clear
// 生成被解释变量
// 由于 RDD-DID 允许出现协变量引发的变化,因此我们在此允许 x1 在 9 月后增加 1 个单位,x2 在 9 月后增加 2 个单位。此外,政策冲击导致 Y 增加 5 个单位,
bys id year: gen y1 = 10 + 5*x1 +3*x2 +rnormal()  if MPost==0 & YPost==1
bys id year: replace y1 = 10 + 5 + 5*(x1+1) +3*(x2+2) +rnormal()   if MPost==1 & YPost==1

save RD_DID_sample.dta,replace

从上述 y0 的设定可以看出,我们应该观测到 9 月前后跳跃了 11 个单位(5 * 1 + 3 * 2 + 5 = 16),其中包括 x1 增加一个单位引发的变化 5 和 x2 增加一个单位引发的变化 6 ,以及政策冲击导致的 5 。


areg y1 MPost x1 x2   i.M if YPost==1, ab(ID ) vce(r) 
//下表可以看出,MPost的系数为15.914,接近16

note: 6.M omitted because of collinearity

Linear regression, absorbing indicators  Number of obs     =      360
Absorbed variable: ID                    No. of categories =       60
                                         F(   7,    293)   = 57048.35
                                         Prob > F          =   0.0000
                                         R-squared         =   0.9994
                                         Adj R-squared     =   0.9993
                                         Root MSE          =   1.0256

---------------------------------------------------------------------
       |              Robust                                         
    y1 |     Coef.   Std. Err.      t    P>|t|   [95% Conf. Interval]
-------+-------------------------------------------------------------
 MPost |  15.91433   .1878629    84.71   0.000    15.5446    16.28406
    x1 |  5.010561   .0086649   578.26   0.000   4.993508    5.027614
    x2 |  2.996086   .0114469   261.74   0.000   2.973557    3.018614
       |                                                             
     M |                                                             
    2  | -.0627951   .2038922    -0.31   0.758   -.464074    .3384838
    3  |  .0912909   .2006643     0.45   0.649  -.3036352    .4862169
    4  | -.1209243   .1728636    -0.70   0.485  -.4611359    .2192873
    5  |  .2545042   .1729513     1.47   0.142  -.0858801    .5948885
    6  |         0  (omitted)                                        
       |                                                             
 _cons |  9.947508    .147951    67.24   0.000   9.656327    10.23869
---------------------------------------------------------------------

我们知道,政策真实的处理效应为 5 , 但是如果仅仅针对政策当年使用断点识别,我们估计的处理效应为 16, 这是由于冲击时点前后 y 存在系统性差异 (11 =5 * 1 + 3 * 2 ) 导致的。

所以,我们可以通过用估计的处理效应 16 减去利用之前年份估计出的冲击前后的系统性差异 11 ( 即 x1 增加一个单位引发的变化 5 和 x2 增加一个单位引发的变化 6 ,合计 11)得到真实的处理效应 5 ( 即 Dif-Dif ),这个可以通过构造交互项 YPost*MPost 实现 (类似于 DID 研究设定中的 Treat*Post ,其中 YPost 类比为 TreatMPost 类比为 Post,但是时间前后的差异是利用断点方法识别而非差分方法) 。

use RD_DID_sample.dta, clear
gen y = y0 if YPost==0
replace y = y1 if YPost==1

gen YPost_MPost = YPost*MPost
areg y MPost YPost_MPost x1 x2 c.x1#i.MPost c.x2#i.MPost i.M i.Y , ab(ID ) vce(r) 
// YPost_MPost系数是我们关注的核心,类似于 DID 研究中的 Treat*Post,约等于 5 ,说明捕捉到了真实的改革处理效果

note: 6.M omitted because of collinearity

Linear regression, absorbing indicators     Number of obs     =      1,080
Absorbed variable: ID                       No. of categories =         60
                                            F(  12,   1008)   =  131182.72
                                            Prob > F          =     0.0000
                                            R-squared         =     0.9994
                                            Adj R-squared     =     0.9993
                                            Root MSE          =     0.9956

---------------------------------------------------------------------------
             |               Robust                                        
           y |      Coef.   Std. Err.      t    P>|t|  [95% Conf. Interval]
-------------+-------------------------------------------------------------
       MPost |   10.90144   .1133312    96.19   0.000  10.67905    11.12383
 YPost_MPost |    5.01466   .1302858    38.49   0.000  4.758997    5.270322
          x1 |   5.016943    .006198   809.45   0.000   5.00478    5.029105
          x2 |   2.998538   .0092015   325.88   0.000  2.980482    3.016594
             |                                                             
  MPost#c.x1 |                                                             
          1  |  -.0229563   .0088027    -2.61   0.009   -.04023   -.0056827
             |                                                             
  MPost#c.x2 |                                                             
          1  |   -.004164   .0119499    -0.35   0.728 -.0276135    .0192855
             |                                                             
           M |                                                             
          2  |  -.1182666   .1045555    -1.13   0.258  -.323438    .0869048
          3  |  -.0688265   .1112079    -0.62   0.536  -.287052     .149399
          4  |  -.0321119   .1033496    -0.31   0.756 -.2349169    .1706931
          5  |   .0923329   .0985065     0.94   0.349 -.1009684    .2856342
          6  |          0  (omitted)
             |                                                             
           Y |                                                             
          2  |  -.0941455   .0734446    -1.28   0.200 -.2382673    .0499764
          3  |  -.1257474   .1056452    -1.19   0.234  -.333057    .0815623
             |
       _cons |   10.12667    .090287   112.16   0.000  9.949501    10.30384
---------------------------------------------------------------------------

4. 参考资料

参考文献:

  • 陈晓光.财政压力、税收征管与地区不平等[J].中国社会科学,2016(04):53-70+206. -PDF-

  • 范子英,赵仁杰.法治强化能够促进污染治理吗?——来自环保法庭设立的证据[J].经济研究,2019,54(03):21-37. -PDF-

  • 李广众,贾凡胜.财政层级改革与税收征管激励重构——以财政“省直管县”改革为自然实验的研究[J].管理世界,2020,36(08):32-50. -PDF-

  • 梁平汉,邹伟,胡超.时间就是金钱:退税无纸化改革、行政负担与企业出口[J].世界经济,2020,43(10):52-73. -PDF-

  • Chen Y , Shi S , Tang Y . Valuing the urban hukou in China: Evidence from a regression discontinuity design for housing prices[J]. Journal of Development Economics, 2019, 141. -PDF-

  • Dell, M. “The Persistent Effects of Peru's Mining Mita.” Econometrica 78, no. 6 (2010): 1863-1903. -PDF-

  • Ebenstein A , Fan M , Greenstone M , et al. New evidence on the impact of sustained exposure to air pollution on life expectancy from China's Huai River Policy[J]. Proceedings of the National Academy of Sciences of the United States of America, 2017, 114(39). -PDF-

  • Fu, S. and Gu, Y,. 2017, Highway Toll and Air Pollution: Evidence from Chinese Cities, Journal of Environmental Economics and Management 83, 32-49-PDF-

  • He G , Wang S , Zhang B . Watering Down Environmental Regulation in China*[J]. Quarterly Journal of Economics, 2020, 135(4):2135-2185. -PDF-

  • Persson P , Rossin-Slater M . When Dad Can Stay Home: Fathers' Workplace Flexibility and Maternal Health[J]. Social Science Electronic Publishing. -PDF-

  • Thistlethwaite, D. L., & Campbell, D. T. (1960). Regression-discontinuity analysis: An alternative to the ex post facto experiment. Journal of Educational Psychology, 51(6), 309–317. -PDF-

5. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh DID 差分
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

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

课程主页

课程主页

关于我们

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

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

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

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

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