精华内容
下载资源
问答
  • 双重差分法 在做随机实验或自然实验时,实验的效果往往需要一段时间才能显现出来,而我们关心的恰恰是被解释变量试验前后的变化。为此,考虑两期面板数据: (注:面板数据是一个m*n的数据矩阵,记录的是n个时间节点...

    **注记:**山东大学陈强教授《高级计量经济学及Stata应用》(第二版)第18章学习笔记!
    双重差分法
    在做随机实验或自然实验时,实验的效果往往需要一段时间才能显现出来,而我们关心的恰恰是被解释变量试验前后的变化。为此,考虑两期面板数据:

    (注:面板数据是一个m*n的数据矩阵,记录的是n个时间节点上m个对象的某一数据指标

    yit+α+γDt+βxit+ui+εity_{it}+\alpha+\gamma D_{t}+\beta x_{it}+u_{i}+\varepsilon_{it} (i=1,...,n;t=1,2)(i=1,...,n;t=1,2)
    其中DtD_{t}为试验期虚拟变量,uiu_{i}为不可观测的个体特征,xitx_{it}为政策虚拟变量(policy dummy)。
    前戏做足,重点到了,因此,当t=1时(第一期),实验组与控制组并没有受到任何不同对待,所以政策虚拟变量xitx_{it}都等于0。当t=2时(第二期),实验组xit=1x_{it}=1,而控制组xitx_{it}依然等于0。如果该实验未能完全地随机化(eg:观测数据),则xitx_{it}可能与被遗漏的个体特征uiu_{i}相关,从而导致OLS(Ordinary Least Square)估计不一致。由于是面板数据,可以对上述方程进行一阶差分,目的在于消除uiu_{i}
    Δyi=γ+βxi2+Δεi\Delta y_{i}=\gamma + \beta x_{i2}+\Delta \varepsilon_{i}
    用OLS估计上式,即可得到一致估计,
    β^OLS=ΔyˉtreatΔyˉcontrol=(yˉtreat,2yˉtreat,1)(yˉcontrol,2yˉcontrol,1) \hat{\beta}_{OLS}=\Delta \bar{y}_{treat}-\Delta \bar{y}_{control}=(\bar{y}_{treat,2}-\bar{y}_{treat,1})-(\bar{y}_{control,2}-\bar{y}_{control,1})
    因此,这个估计法称为“双重差分估计量”(Difference in Difference estimator, DD),记为β^DD\hat{\beta}_{DD},即实验组的平均变化与控制组的平均变化之差。

    三重差分法

    双重差分法的隐含假设是,即使没有政策变化,控制组与实验组的是件趣事也一样。然而如果控制组与实验组的是件趣事不同,便无法得到对试验效应的一致估计,此时,需要进一步改进双重差分估计量。
    (Difference in Difference in Difference estimator, DDD)

    观测数据的处理效应
    在许多情况下,并没有随机实验或自然实验的数据,而只有观测数据,这是非常糟糕的。通常会存在self selection(自我选择),无法得到一直的估计。这需要学习断点回归设计(Regression Discontinuity Design,RDD)。

    展开全文
  • 基于双重差分法的城市大型体育赛事经济效应研究,李康萍,陈林,近年来,随着中国经济的高速发展与大型体育赛事的不断兴办,体育产业及重大体育赛事对国民经济产生的重大影响愈发明显。该文结合
  • 简单介绍一下实证论文中双重差分法(DID)的平行趋势检验(Parallel Trend Test)在Stata中如何操作。 (本文首发于个人微信公众号DMETP,欢迎关注!) 一、平行趋势假定 平行趋势假定是实证论文中使用DID的前提,...

    简单介绍一下实证论文中双重差分法(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, clear
    
      global 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", replace
    
      discard  // 结果已保存至路径文件夹
    
    **# 1.2 动态效应检验(事件研究法)
    
      gen current = 2012.year * du
    
      forvalue 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", replace
    
      discard
      clear all
      cls
    
    **# 二、多期DID的平行趋势检验
    
      use 平行趋势检验.dta, clear
    
      global 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 = 2007
    
      replace 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 ==   33
      replace year_enter = 2005 if city == 1100 | city == 5301 | city == 2101 |  ///
                                   city == 3502 | city == 6101
      replace year_enter = 2006 if city == 2201 | city == 2301 | city == 6201 |  ///
                                   city == 6401
    
      gen 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 , $options
    
      coefplot,                                                                  ///
          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", replace
    
      discard
    
    **# 2.2 动态效应检验(TFPQD_LP)
    
      qui reghdfe TFPQD_LP $adjyear $ctrlvars , $options
    
      coefplot,                                                                  ///
          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", replace
    
      discard
    

    五、运行结果

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

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

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

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

    图 1 普通DID的时间趋势图

    图 2 普通DID的动态效应检验图

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

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

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

    图 3 基于OP法计算的TFP离散度的动态效应检验图

    图 4 基于LP法计算的TFP离散度的动态效应检验图

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

    简单介绍一下实证论文中双重差分法(DID)的安慰剂检验(Placebo Test)在Stata中如何操作

    (本文首发于个人微信公众号DMETP,是往期两篇推文的合辑,欢迎关注!)

    下面的内容根据实际使用的数据集分为两个部分

    • 一是以一个截面数据集为例,介绍一下安慰剂检验的整个思路与流程。这里使用的是系统数据集auto.dta,由于是简单介绍思路,因此该部分并没有第二部分面板数据那么复杂,且模型中不包括DID的交互项,仅仅是对一个核心变量rep78进行1,000次随机抽样;

    • 二是以一个面板数据集为例,介绍一下面板数据DID中安慰剂检验的整个流程。这里使用的数据集是石大千等(2018)公布在《中国工业经济》网站上的附件内容。论文使用的模型是普通DID模型,也即政策发生时点(2012年)固定,处理组与控制组的设置也固定。

    参考文献:

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

    一、安慰剂检验方法选择

    通常而言,DID中的安慰剂检验方法包括两种。

    • 一是改变政策发生时点,具体又包括前置处理组的政策发生时点,此时安慰剂检验的作用与平行趋势检验相同,都是考察政策发生前基础回归中时间虚拟变量与处理组交互项系数(F(-1)F(-2)F(-3)、…)的显著性,如果不显著说明检验通过;还包括将政策发生时点随机化,也即将时点前置或后置,这是一种更一般化的做法;

    • 二是将处理组随机化,对处理组变量进行一定次数的随机抽样,然后再观测随机化后的DID项系数或观测值的核密度图是否集中分布于0附近,以及是否显著偏离其真实值;

    • 第二种方法更为常见,第一种方法的不足在于:如果样本期间较短,导致随机抽样的时段区间过短,得出的结论不一定真实,虽然抽样次数可以很多,但抽样空间过短将影响结论的稳健性。综合来说,对处理组进行随机化处理是一种更为合适的做法。当然,具体论文要具体分析。

    二、截面数据集的安慰剂检验

    这部分代码使用的是Stata系统自带的数据集auto.dta,该数据集是截面数据且不包含DID项,在实际使用中,可以将reg改为面板数据回归命令(如xtregreghdfe等),同时将这里的核心解释变量rep78改为论文中需要进行随机化处理的关键变量。

    需要提醒的是,陆菁等(2021)在随机化处理时,提到“DID模型估计要求政策实施年份前后至少有一年数据”,因此在时间窗口不长且需要进行安慰剂检验的情况下,需要特别注意这一点。

    参考文献:

    陆菁, 鄢云, 王韬璇. 绿色信贷政策的微观效应研究——基于技术创新与资源再配置的视角[J]. 中国工业经济, 2021(01): 174-192.

    此外,代码部分还参考了李青原和章尹赛楠(2021)发表在中国工业经济上的一篇文章的附件,同时还参考了简书的一篇文章

    参考文献:

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

    2.1 整体思路

    • 第一步:在原始数据集auto.dta中单独剔除核心变量rep78的样本数据;

    • 第二步:将剔除出来的rep78随机打乱顺序,再将随机化的rep78合并至已被处理过的原始数据集中;

    • 第三步:将随机化的rep78放入回归方程中进行回归;

    • 第四步:以上操作步骤重复1,000次;

    • 第五步:单独提取出1,000次回归结果中rep78的系数与标准误,最后分别绘制系数和t值的核密度分布图以及P值 - 系数散点图。

    2.2 代码实现

    *==============================================================================*
    *                            双重差分法 | 安慰剂检验                           *
    *==============================================================================*
    
    ** Stata Version: 16 | 17
    
    ** 【文章首发】这篇文章首发于本人微信公众号『DMETP』,是两篇推文的合辑,欢迎关注!
    
      cd "C:\Users\KEMOSABE\Desktop\placebo_test"
    
    **# 一、截面数据的安慰剂检验
    
    **# 1.1 根据原始样本进行基础回归
    
      sysuse auto.dta, clear
    
      global ctrlvar1 "mpg headroom trunk weight length"
      reg price rep78 $ctrlvar , r
    
    *- 基础回归中核心变量rep78的真实系数与真实t值分别为:
    *- 真实系数 = 889.6715
    *- 真实t值  =   3.2206(可手动计算,也即889.6715 / 276.2438)
    
      clear all
    
    **# 1.2 对rep78进行1,000次随机抽样、回归并绘制核密度图
    
    *- 思路:
    *- a. 在原始数据集auto.dta中单独剔除核心变量rep78的样本数据
    *- b. 将剔除出来的rep78随机打乱顺序,再将随机化的rep78合并至已被处理过的原始数据集中
    *- c. 将随机化的rep78放入回归方程中进行回归
    *- d. 以上操作步骤重复1,000*- e. 单独提取出1,000次回归结果中rep78的系数与标准误,最后分别绘制系数和t值的核密度估计图以及P值与系数的散点图
    
      set seed 13579  // 设置随机种子数
    
      forvalue i = 1/1000 {
          sysuse auto.dta, clear
    
          preserve
              gen  randomvar = runiform()
              sort randomvar
              gen         id = _n
              label var   id "用于匹配的样本序号"
              keep rep78  id
              save rep78_random.dta, replace  // 该数据集中仅保留rep78和随机化的id
                                              // id用于将该数据集中的rep78横向合并(merge)至原数据集
          restore
    
          gen       id = _n
          label var id "用于匹配的样本序号"
          drop      rep78
          save      rep78_dropped.dta, replace  // 原数据集中已剔除rep78字段
    
          use       rep78_dropped.dta, clear
          merge 1:1 id using rep78_random.dta, keepusing(rep78)  // 将随机化排序的rep78合并至原数据集
          qui reg   price rep78 $ctrlvar1 , r
          gen       b_rep78  = _b[rep78]   // 提取回归后rep78的系数
          gen       se_rep78 = _se[rep78]  // 提取回归后rep78的标准误
          keep      b_rep78 se_rep78
          duplicates drop b_rep78, force
          save placebo_`i'.dta, replace
          }
      erase rep78_random.dta
      erase rep78_dropped.dta
    
      use placebo_1.dta, clear
      forvalue k = 2/1000 {
          append using placebo_`k'.dta  // 将1,000次回归中rep78的系数和标准误纵向合并(append)至单独的数据集(placebo_1.dta)
          erase        placebo_`k'.dta
          }
    
      graph set window fontface     "Times New Roman" 
      graph set window fontfacesans "宋体"  // 设置图形输出的字体
    
      gen tvalue = b_rep78 / se_rep78
      gen pvalue = 2 * ttail(e(df_r), abs(tvalue))  // 计算t值和P值
    
    **# 1.2.1 系数
    
      sum b_rep78, detail
    
      twoway(kdensity b_rep78,                                                                   ///
                 xline(`r(mean)', lpattern(dash)  lcolor(black))                                 ///
                 xline(889.6715 , lpattern(solid) lcolor(black))                                 ///
                 scheme(qleanmono)                                                               ///
                 xtitle("{stSans:系数}"                        , size(medlarge))                 ///
                 ytitle("{stSans:核}""{stSans:密}""{stSans:度}", size(medlarge) orientation(h))  ///
                 saving(placebo_test_Coefficient1, replace)),                                    ///
             xlabel(, labsize(medlarge))                                                         ///
             ylabel(, labsize(medlarge) format(%05.4f))  // 绘制1,000次回归rep78的系数的核密度图
    
      graph export "placebo_test_Coefficient1.png", replace  // 导出为矢量图,方便论文中的图形展示;medlarge可以改为large以将标题文字加大
    
    **# 1.2.2 P值
    
      sum b_rep78, detail
    
      twoway(scatter pvalue b_rep78,                                                ///
                 msy(oh) mcolor(black)                                              ///
                 xline(`r(mean)', lpattern(dash)      lcolor(black))                ///
                 xline(889.6715 , lpattern(solid)     lcolor(black))                ///
                 yline(0.1      , lpattern(shortdash) lcolor(black))                ///
                 scheme(qleanmono)                                                  ///
                 xtitle("{stSans:系数}"           , size(medlarge))                 ///
                 ytitle("{stSans:P}""{stSans:值}" , size(medlarge) orientation(h))  ///
                 saving(placebo_test_Pvalue1, replace)),                            ///
             xlabel(        , labsize(medlarge))                                    ///
             ylabel(0(0.25)1, labsize(medlarge) format(%03.2f))
    
      graph export "placebo_test_Pvalue1.png", replace
    
    **# 1.2.3 t值
    
      sum tvalue, detail
    
      twoway(kdensity tvalue,                                                                    ///
                 xline(`r(mean)', lpattern(dash)      lcolor(black))                             ///
                 xline(3.2206   , lpattern(solid)     lcolor(black))                             ///
                 xline(-1.65    , lpattern(shortdash) lcolor(black))                             ///
                 xline( 1.65    , lpattern(shortdash) lcolor(black))                             ///
                 scheme(qleanmono)                                                               ///
                 xtitle("{stSans:t值}"                         , size(medlarge))                 ///
                 ytitle("{stSans:核}""{stSans:密}""{stSans:度}", size(medlarge) orientation(h))  ///
                 saving(placebo_test_Tvalue1, replace)),                                         ///
             xlabel(, labsize(medlarge))                                                         ///
             ylabel(, labsize(medlarge) format(%02.1f))  // 绘制1,000次回归rep78的t值的核密度图
    
      graph export "placebo_test_Tvalue1.png", replace
    
      erase placebo_1.dta
    
      discard
      clear all
      cls
    

    2.3 运行结果与解读

    以上这段代码的运行结果是3张图,如下所示。其中图 1是系数的核密度估计图;图 2是P值 - 系数散点图;图 3是t值的核密度估计图。

    图 1 系数的核密度估计图(截面数据)

    图 2 P值 - 系数散点图(截面数据)

    图 3 t值的核密度估计图(截面数据)

    针对图 1图 3的解读如下:

    • 随机化核心解释变量后系数与t值的核密度估计值的均值都接近于0(分别为1.2233和0.0029);

    • 随机化后系数与t值的核密度估计值的均值都大大偏离其真实值(真实值分别为889.6715和3.2206);

    • 随机化后多数系数的P值位于P value = 0.1线以上,说明多数系数至少在10%的水平下不显著;

    • 以上三点均说明rep78price的影响不是由其他不可观测因素(或遗漏变量)推动的

    • 设置随机种子数为13,579时,可重复以上结果并得出一致结论;

    • 从P值的散点图可以得到以下两点信息:

      • 第一,更多的散点集中分布于0附近,而位于真实值垂直线上的散点只有几个,这说明在随机化后真实值是一个异常点;
      • 第二,虽然多数散点集中于0附近,但这些散点所代表的系数至少在10%的水平上是不显著的。

    三、面板数据集的安慰剂检验

    前面一部分介绍了安慰剂检验的具体操作,但都是以一个截面数据集(auto.dta)作为示例的,且模型中没有加入DID的交互项,因此严格来说这个例子还不太恰当。这里用一个具体例子介绍面板数据双重差分模型中的安慰剂检验,这个例子是一个普通DID模型,政策发生时点固定,处理组和控制组也是固定的,相对而言模型设置比较简单,但也可以延伸至相对复杂的DID模型中(如多期DID、连续DID和广义DID等),所需的可能仅仅是要发挥更多的想象力。

    原始数据来源于石大千(2018),但这篇文章和中国工业经济官网放出来的附件都没有详细解释处理组和控制组的具体设置,因此虽然可以用gen dt = (year >= 2012)生成政策发生时间虚拟变量(dt),但处理组虚拟变量(du)无法生成,因此这里使用的是公众号『功夫计量经济学』提供的数据,数据有效性本人无法保证,这里只作为一个参考示例。

    关于论文的具体内容详见参考文献,这里不做介绍,也可以快速浏览『功夫计量经济学』的相关推文。值得一提的是,『功夫计量经济学』给出了另外一种随机抽样的方法,可以与本推送给出的方案对照阅读

    这里设置了一个随机种子(seed),方便复现结果与推送内容保持一致,随机种子数是223,至于为什么是这个数,纯粹是试错试出来的,因为设置成这个数画出来的图最好看。

    3.1 整体思路

    • 第一步:在原始数据集smart_city2018.dta中单独剔除变量id的样本数据;

    • 第二步:将剔除出来的id随机打乱顺序,再将随机化的id合并至已被处理过的原始数据集中;

    • 第三步:将随机化的treatdt的交互项(did)放入回归方程中进行回归;

    • 第四步:以上操作步骤重复1,000次;

    • 第五步:单独提取出1,000次回归结果后did的系数与标准误,最后分别绘制系数和t值的核密度估计图以及P值与系数的散点图。

    3.2 代码实现

    *==============================================================================*
    *                            双重差分法 | 安慰剂检验                           *
    *==============================================================================*
    
    ** Stata Version: 16 | 17
    
    ** 【文章首发】这篇文章首发于本人微信公众号『DMETP』,是两篇推文的合辑,欢迎关注!
    
    **# 二、面板数据的安慰剂检验
    
    *- 【原始数据来源】石大千, 丁海, 卫平, 刘建江. 智慧城市建设能否降低环境污染[J]. 中国工业经济, 2018(06): 117-135.
    *  《中国工业经济》附件下载地址:http://ciejournal.ajcass.org/Magazine/show/?id=54281
    
    *- 【加工数据来源】微信公众号『功夫计量经济学』2021.4.20推送文章“双重差分法(DID)安慰剂检验的做法:随机抽取500次”
    *  微信公众号推文地址:https://mp.weixin.qq.com/s/06v6s90G1pp-yLju_yAy1Q
    
      cd "C:\Users\KEMOSABE\Desktop\placebo_test\example"
    
    **# 2.1 基础回归
    
      use smart_city2018.dta, clear
    
      global ctrlvars2 "lnrgdp lninno lnurb lnopen lnss"
      reghdfe lnrso dudt $ctrlvars2 , absorb(id year) cluster(id)
    
    *- 基础回归中核心变量dudt的真实系数与真实t值分别为:
    *- 真实系数 = -0.1706
    *- 真实t值  = -2.1245(可手动计算,即-0.1706 / 0.0803)
    
      discard
    
    **# 2.2 安慰剂检验
    
    *- 思路:
    *- a. 在原始数据集smart_city2018.dta中单独剔除变量id的样本数据
    *- b. 将剔除出来的id随机打乱顺序,再将随机化的id合并至已被处理过的原始数据集中
    *- c. 将随机化的treat与dt的交互项(did)放入回归方程中进行回归
    *- d. 以上操作步骤重复1,000*- e. 单独提取出1,000次回归结果后did的系数与标准误,最后分别绘制did系数和t值的核密度估计图以及P值与系数的散点图
    
      set seed 223  // 设置随机种子数
    
      forvalue i = 1/1000 {
          use smart_city2018.dta, clear
    
          preserve
              keep if year   == 2005
              gen  randomvar = runiform()
              sort randomvar
              keep if id in 1/32
              keep    id
              save    id_random.dta, replace  // 数据集仅保留随机化后的id
          restore
    
          merge m:1 id using id_random.dta  // 将随机化id合并至原数据集
          gen  treat  = (_merge == 3)
          gen  did    = treat * dt
          qui  reghdfe lnrso did $ctrlvars2 , absorb(id year) cluster(id)
          gen  b_did  = _b[did]   // 提取单次回归后did的系数
          gen  se_did = _se[did]  // 提取单次回归后did的标准误
          keep b_did se_did
          duplicates drop b_did, force
          save placebo_`i'.dta, replace
          }
      erase id_random.dta
    
      use placebo_1.dta, clear
      forvalue k = 2/1000 {
          append using placebo_`k'.dta  // 将1,000次回归后did的系数和标准误纵向合并(append)至单独的数据集(placebo_1.dta)
          erase        placebo_`k'.dta
          }
    
      graph set window fontface     "Times New Roman"
      graph set window fontfacesans "宋体"  // 设置图形输出的字体
    
      gen tvalue = b_did / se_did
      gen pvalue = 2 * ttail(e(df_r), abs(tvalue))  // 计算t值和P值
    
    **# 2.2.1 系数
    
      sum b_did, detail
    
      twoway(kdensity b_did,                                                                     ///
                 xline(`r(mean)', lpattern(dash)  lcolor(black))                                 ///
                 xline(-0.1706  , lpattern(solid) lcolor(black))                                 ///
                 scheme(qleanmono)                                                               ///
                 xtitle("{stSans:系数}"                        , size(medlarge))                 ///
                 ytitle("{stSans:核}""{stSans:密}""{stSans:度}", size(medlarge) orientation(h))  ///
                 saving(placebo_test_Coefficient2, replace)),                                    ///
             xlabel(, labsize(medlarge) format(%02.1f))                                          ///
             ylabel(, labsize(medlarge) format(%02.1f))  // 绘制1,000次回归did的系数的核密度图
    
      graph export "placebo_test_Coefficient2.png", replace  // 导出为矢量图,方便论文中的图形展示;可改medlarge为large以加大字体
    
    **# 2.2.2 P值
    
      sum b_did, detail
    
      twoway(scatter pvalue b_did,                                                  ///
                 msy(oh) mcolor(black)                                              ///
                 xline(`r(mean)', lpattern(dash)      lcolor(black))                ///
                 xline(-0.1706  , lpattern(solid)     lcolor(black))                ///
                 yline( 0.1     , lpattern(shortdash) lcolor(black))                ///
                 scheme(qleanmono)                                                  ///
                 xtitle("{stSans:系数}"           , size(medlarge))                 ///
                 ytitle("{stSans:P}""{stSans:值}" , size(medlarge) orientation(h))  ///
                 saving(placebo_test_Pvalue2, replace)),                            ///
             xlabel(        , labsize(medlarge) format(%02.1f))                     ///
             ylabel(0(0.25)1, labsize(medlarge) format(%03.2f))
    
      graph export "placebo_test_Pvalue2.png", replace
    
    **# 2.2.3 t值
    
      sum tvalue, detail
    
      twoway(kdensity tvalue,                                                                    ///
                 xline(`r(mean)', lpattern(dash)      lcolor(black))                             ///
                 xline(-2.1245  , lpattern(solid)     lcolor(black))                             ///
                 xline(-1.65    , lpattern(shortdash) lcolor(black))                             ///
                 xline( 1.65    , lpattern(shortdash) lcolor(black))                             ///
                 scheme(qleanmono)                                                               ///
                 xtitle("{stSans:t值}"                         , size(medlarge))                 ///
                 ytitle("{stSans:核}""{stSans:密}""{stSans:度}", size(medlarge) orientation(h))  ///
                 saving(placebo_test_Tvalue2, replace)),                                         ///
             xlabel(, labsize(medlarge))                                                         ///
             ylabel(, labsize(medlarge) format(%02.1f))  // 绘制1,000次回归did的t值的核密度图
    
      graph export "placebo_test_Tvalue2.png", replace
    
      erase placebo_1.dta
    

    3.3 运行结果与解读

    同样,以上代码的运行结果是3张图,如下图 4图 6

    图 4 系数的核密度估计图(面板数据)

    图 5 t值核密度估计图(面板数据)

    图 6 P值 - 系数散点图(面板数据)

    针对以上3张图,有如下几点解读。

    • 第一,图 4是随机化处理组后did项回归系数的核密度估计图,其中实线是基础回归估计出来的真实系数,虚线是1,000个“虚拟”系数的均值;

    • 第二,图 5是t值的核密度估计图,其中实线是真实t值,虚线是均值,两根短虚线分别代表t = -1.65t = 1.65(也即大样本下10%的显著性水平所对应的t值,t值的绝对值小于该数说明至少在10%的水平下不显著);

    • 第三,图 6是P值的散点图,其中水平短虚线是P = 0.1,散点位于该虚线以下说明系数至少在10%的水平下显著,反之则不显著;

    • 第四,图 4图 5都说明了一个基本事实,那就是绝大多数系数和t值均集中分布在0附近,均值与真实值的距离较远,且绝大多数估计系数并不显著,这意味着智慧城市试点对环境污染治理的政策效应没有受到其他未被观测因素的影响。这个基本事实其实完全可以从P值的散点图(图 6)中得知,如散点集中分布在0附近,且远离其真实值,多数散点都位于虚线以上,同时说明在10%的水平下不显著,也就是说,P值散点图包含的信息其实更多更凝练

    展开全文
  • 贸易便利化与我国跨境电商发展--基于双重差分法的实证分析.pdf
  • 基于双重差分法医疗保险事前道德风险研究--来自CHNS调查的证据,吴蔚,陈雪梅,本文基于1989-2009年中国家庭营养调查(CHNS)微观调查数据,利用2003年开始在我国农村试点新型农村合作医疗保险这一政策变化,作为准...
  • 通过分析2005—2019年省级面板数据,利用双重差分模型,分别从单位产值能耗、工业污染排放量和资源税收入三个方面评估煤炭资源税改革的政策效果。结果表明,煤炭资源税改革对于节能减排有积极促进作用,可以有效增加资源...
  • 双重差分法之空间DID

    2021-07-15 20:48:50
    简单谈一下我本人对空间双重差分模型(Spatial Difference in Difference Model,SDID)几点或许不太成熟的理解。 (本文首发于个人微信公众号DMETP,欢迎关注!) 一、从聚类标准误到空间相关性 当使用面板数据进行...

    简单谈一下我本人对空间双重差分模型(Spatial Difference in Difference Model,SDID)几点或许不太成熟的理解

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

    一、从聚类标准误到空间相关性

    当使用面板数据进行固定效应模型估计时,考虑到组间异方差和组内自相关,我们必然需要将标准误进行聚类调整。一般来说,聚类调整后的标准误大于异方差稳健标准误,而异方差稳健标准误大于普通标准误,因此,根据聚类标准误做出来的结果是相对最稳健的,这里所说的稳健,指的是系数显著性稳健,因为标准误影响t值,而对系数的本身影响不大。

    然而,将标准误聚类调整到什么层次是一个问题。当将个体(id)作为聚类依据时,即假定每个个体不同年份的干扰项存在相关性(组内自相关),而不同个体的干扰项不存在相关性(组间不相关)。但是,这样的假定可能不符合现实情况,比如,对于微观企业来说,同一行业的企业之间必然存在竞合关系,此时同一行业不同企业之间就存在相关性,在这种情况下,将标准误聚类调整到行业层面可能更合理。因此,为了得出更稳健的结果,也为了说服苛刻的读者(或审稿人)接受我们根据实证结果得出的结论,将标准误聚类到更高层级是一种更安全的做法,当然,聚类层级越高系数越不显著。

    然而,有时候我们没有甚至不能将标准误聚类到更高层级。除了显著性与稳健性之间的权衡,更多的原因在于聚类层级越高聚类数目越少,而大样本理论要求聚类数目足够大,这样才能保证所估计的标准误收敛到真实值(Petersen,2009),根据拇指法则,聚类数少于30可能就不太合适了。

    退而求其次,为了同时兼顾聚类层级与聚类数目,有些文献将标准误聚类到行业-年份层面(在Stata中可以利用分组函数group生成聚类变量再在回归中进行聚类调整,即:先egen ind_year = group(industry year),然后reghdfe y xlist, absorb(id year) cluster(ind_year)),如李青原和章尹赛楠(2021)邵朝对等(2021),即假定同一年同一行业之间存在自相关,而不同年或不同行业之间不存在自相关。

    参考文献:

    [1] Petersen M A. Estimating Standard Errors in Finance Panel Data Sets: Comparing Approaches[J]. Review of Financial Studies, 2009, 22(01): 435-480.

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

    [3] 邵朝对, 苏丹妮, 杨琦. 外资进入对东道国本土企业的环境效应: 来自中国的证据[J]. 世界经济, 2021, 44(03): 32-60.

    根据常识与理论将标准误聚类调整到行业-年份层面,即先验式地承认同一年份同一行业的企业存在相关性,同理,当聚类到省份-年份层面或区域-年份层面时,也可以认为同一年同一地区(省份或区域)不同个体之间存在相关性,这与构建空间计量模型(Spatial Econometric Model)的思想不谋而合

    空间计量模型最大的特征是放松了空间单位之间相互独立的假设,即认为本地区与邻近地区存在相互关系,本地区变量的变动不仅直接影响本地区,也会影响邻近地区,而且通过影响邻近地区最后反作用于本地区。本地区对本地区的影响称为直接效应(Direct Effect),本地区对邻近地区的平均影响称作间接影响或空间溢出效应(Indirect Effect or Spatial Spillover Effect)。对具体空间相关形式的判断,是OLS模型的基础上对其残差进行拉格朗日乘子检验(LM test)和稳健的拉格朗日乘子检验(robust LM test),以检验OLS回归残差中是否存在某种形式的空间关联,即检验OLS回归残差中是否包含被解释变量的空间滞后项(wywy)抑或扰动项的空间滞后项(wεw\varepsilon)(Burridge,1980Anselin,1988Anselin at al.,1996Elhorst,2014)。

    参考文献:

    [4] Burridge P. On the Cliff‐Ord Test for Spatial Correlation[J]. Journal of the Royal Statistical Society: Series B (Methodological), 1980, 42(01): 107-108.

    [5] Anselin L: Spatial Dependence in Regression Error Terms, Anselin L, editor, Spatial Econometrics: Methods and Models, Dordrecht: Springer Netherlands, 1988: 100-118.

    [6] Anselin L, Bera A K, Florax R, et al. Simple Diagnostic Tests for Spatial Dependence[J]. Regional Science & Urban Economics, 1996, 26(01): 77-104.

    [7] Elhorst J P. Matlab Software for Spatial Panels[J]. International Regional Science Review, 2014, 37(03): 389-405.

    因此,从这种意义上来说,当标准误聚类调整到地区-年份层面时,此时假定中的同一年份同一地区不同个体之间存在的相关性(组内自相关)本质上是一种空间相关性。也就是说,当我们将标准误聚类调整到地区-年份层面时,实质上就已经变相说明模型中存在一定的空间相关性

    二、个体处理效应稳定性假设

    在DID中,一个经典的假设是个体处理效应稳定性假设(Stable Unit Treatment Value Assumption,SUTVA)。SUTVA最重要的一点是“处理组个体不会影响控制组个体”(Rubin,1974)。换言之,在SUTVA框架下,总体中的任何个体并不会受到其他个体接受处理与否的影响(王金杰和盛玉雪,2020)。然而,这个假设在考虑到空间相关性时被打破了,或者说,当不同空间单元之间存在相关性即存在空间溢出效应时,SUTVA不再成立Kolak & Anselin,2019)。

    参考文献:

    [8] Rubin D B. Estimating Causal Effects of Treatments in Randomized and Nonrandomized Studies[J]. Journal of Educational Psychology, 1974, 66(05): 688-701.

    [9] 王金杰, 盛玉雪. 社会治理与地方公共研发支出——基于空间倍差法的实证研究[J]. 南开经济研究, 2020, 1(01): 199-219.

    [10] Kolak M, Anselin L. A Spatial Perspective on the Econometrics of Program Evaluation[J]. International Regional Science Review, 2019, 43(02): 128-153.

    事实上,SUTVA在大多数情况下可能都不成立,而现有的DID类实证文章很少会考虑到这一点,并且Ferman(2020)指出忽略空间相关性将导致标准误被低估,从而夸大系数的显著性

    参考文献:

    [11] Ferman B. Inference in Differences-in-Differences: How Much Should We Trust in Independent Clusters? [R]. MPRA Paper 93746, University Library of Munich, Germany, 2020.

    一个简单的道理,处理组在期初实施了某项政策,控制组没有实施,但不是说政策实施之后只会对处理组产生影响,通过示范、学习、要素流动等渠道也会作用于控制组,因此,政策的施行在长期将会在一个较广的区域范围内产生普遍(但不一致)的影响

    这里有两个问题,一个是政策实施对控制组作用的力度,另一个是作用的方向

    首先,在处理组实施的某项政策不会对全域内所有地区产生相同的影响,可能两地间经济联系越密切,政策的空间溢出效应越强;可能两地共享同一地理边界(邻接),空间溢出效应越明显;可能两地核心城市之间的地理距离或路程距离越短,空间溢出效应就越强。总之,政策的施行不会对其他地区产生一致的影响,而会随着某种空间相互关系的趋弱存在衰减效应,而我们论文中的SDID就是围绕这种空间相互关系进行研究设计的(空间权重矩阵的设置)

    其次,处理组实施的某项政策对邻近地区的影响有正有负。一方面,政策施行导致资源向先行区倾斜集聚,这不仅意味着先行地区内部资源的重新配置,而且也将导致邻近地区的资源(如劳动力、资金等)向该地区流动富集,这样的结果是抑制了邻近控制组的经济发展,形成了“虹吸效应”。另一方面,先行发展的示范区一般都是经济发展较好的地区(这同时说明DID可能存在严重的样本自选择问题!),政策实施后这些地区将已有的、相对落后的产能向周围转移,连带着将相关人才、技术与资金转移,通过这样的一种方式促进了邻近地区的发展,形成了所谓的“涓滴效应”。总之,政策的施行对邻近地区产生正反两方面的影响,而我们的工作就是要精准稳健地测度出这种影响,并进一步分析出这种异质性影响背后的形成机制或者说机理

    三、政策实施的空间溢出效应

    下面结合几个实例给出SDID模型设计的参考。

    空间计量模型中和DID结合最多的是自变量空间滞后模型(The Spatial Lag of X Model,SLX),而SLX是在普通线性模型等式右端引入(所有)自变量的空间滞后项,形如式(1)(1)

    Y=αιN+Xβ+WXθ+ε(1) Y=\alpha \iota _N+X\beta +WX\theta +\varepsilon \tag{1}

    (1)(1)中的WXWX即为所有自变量的空间滞后项,由于等式右端不包括被解释变量的空间滞后项,该模型可以视为普通的线性模型,并使用OLS方法进行估计。因此,式(1)(1)中的β\beta衡量的是直接效应的大小,θ\theta测度的是间接效应的大小(Vega & Elhorst,2015)。

    参考文献:

    [12] Vega S H, Elhorst J P. The SLX Model[J]. Journal of Regional Science, 2015, 55(03): 339-363.

    SDID基于式(1)(1),但等式右边只有DID交互项的空间滞后项,其余自变量均以其初始形式作为控制变量,形如式(2)(2)

    Y=αιN+Xβ+φdid+θWdid+ε(2) Y=\alpha \iota _N+X\beta +\varphi did+\theta Wdid+\varepsilon \tag{2}

    其中,φ\varphi代表政策的直接效应,即绝大多数论文中所要考察的处理效应(Treatment Effect),而θ\theta代表政策的间接效应或空间溢出效应

    王金杰和盛玉雪(2020)在研究社会治理与地方公共研发支出的关系时,将十八届三中全会以来的社会治理作为准自然实验,设计了如下式(3)(3)的实证模型。

    Y=ϕ+θ+(α+βW)D+Xγ+WXδ+ε(3) Y=\phi +\theta +\left(\alpha +\beta W\right)D+X\gamma ^{'}+WX\delta ^{'} + \varepsilon \tag{3}

    其中,DID交互项(DD)空间滞后项系数β\beta衡量的是平均的溢出效应

    可以看出,形如式(2)(2)和式(3)(3)SDID只能测度平均的空间溢出效应,空间滞后项系数的大小代表在所有处理组实施的政策对邻近地区的影响。从这个意义上来说,以上的研究设计本质上讨论的是空间依赖性,而非空间异质性,而对空间异质性的讨论或许是我们应该关注的重点,即:在处理组实施的某项政策,在多大范围内存在空间溢出效应

    沈坤荣和金刚(2018)在评估河长制的水污染治理效果时,设计了如下式(4)(4)的实证模型。

    Pollutantit=βHezhangzhiit+αδjwijδ δ+100Hezhangzhijt+λXit+αi+γt+εit(4) Pollutant_{it}=\beta Hezhangzhi_{it}+\alpha \sum_{\delta}{\sum_jw_{ij}^{\delta \text{~}\delta +100}Hezhangzhi_{jt}+\lambda X_{it}+\alpha _i+\gamma _t+\varepsilon _{it}} \tag{4}

    其中,wijδ δ+100w_{ij}^{\delta \text{~}\delta +100}表示阈值为[δ,δ+100][\delta,\delta +100]的地理距离倒数矩阵元素,当ii地和jj地之间的距离在阈值范围内,该元素取值为距离倒数,否则为0。

    可以看出,形如式(4)(4)SDID模型以100kmkm为步进距离,考察在不同地理阈值范围内空间溢出效应的大小图 1是不同地理阈值范围内系数α\alpha的大小与显著性。

    图 1 河长制的空间溢出效应

    参考文献:

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

    然而,也有部分文献通过巧妙的模型设计,在不使用SDID的情况下,测度了不同阈值范围内政策实施的空间溢出效应

    曹清峰(2020)在评估国家级新区的经济效应时,认为国家级新区通过空间溢出效应促进了区域协调发展。该文的实证模型设计如下式(5)(5)

    gdprit=β0+β1didit+s=50400δsNits+λZit+νi+μt+εit(5) gdpr_{it}=\beta _0+\beta _1did_{it}+\sum_{s=50}^{400}\delta _sN_{it}^s+\lambda Z_{it}+\nu _i+\mu _t+\varepsilon _{it} \tag{5}

    其中,ss表示不同城市间的球面距离;如果在tt年距离城市ii(s50,s](s-50,s]的空间范围内存在国家级新区,Nits=1N_{it}^s=1,否则Nits=0N_{it}^s=0系数δs\delta_s衡量了国家级新区设立后对邻近城市经济增长率的影响图 2是不同地理阈值范围内系数δs\delta_s的大小与显著性。

    图 2 国家级新区政策效应的空间异质性

    参考文献:

    [14] 曹清峰. 国家级新区对区域经济增长的带动效应——基于70大中城市的经验证据[J]. 中国工业经济, 2020(07): 43-60.

    展开全文
  • did双重差分法介绍

    2021-04-09 18:02:55
    学习链接: https://zhuanlan.zhihu.com/p/48952513 https://zhuanlan.zhihu.com/p/103412389
  • 双重差分法(DID)

    千次阅读 2020-06-02 14:34:40
    假设我们有一个广告方案P,没有经过ABTest直接在在一些城市放量了,怎么来判断这个广告的有效性(gmv)呢?能不能直接比较投放广告的城市和没有投放广告的城市之间gmv的差值呢 Δgmv=avg(投放广告城市的gmv)−avg...
  • -------------------------------------------------------------------------------------------- (1) (2) (3) (4) (5) OLS FE Weight!=....----------------------------------------------------------------...
  • 双重差分(Differences-in-Differences,DID),其常用于政策评估效应研究,比如研究‘鼓励上市政策’、‘开通沪港通’、‘开通高铁’、‘引入新教育模式’等效应时,分析效应带来的影响情况。 比如:两类地区A和B,在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,732
精华内容 1,892
关键字:

双重差分法