标准 DID 模型一般针对政策实施时点为同一个时期,且接受干预的状态将一直持续下去,否则 的交互项设置将会严重违背平行趋势的假设,从而导致交互项的估计系数有偏。由于现实世界中很多的政策试点地区和时间都不尽相同,而且也容易发生个体是否接受政策干预的状态在不停地发生改变,因此,本文将介绍渐进 DID 方法(Time-varying DID)来使得 DID 模型更加具有一般性。这类模型也被称为多时点 DID
说到渐进 DID 的相关论文,不得不提到的就是发表在 The Journal of Finance 上的 Beck, Levine & Levkov(2010) 这篇文章。 它运用渐进 DID 方法对银行去管制对收入分配的影响,并且给出渐进 DID 模型的平行趋势检验的方法。这篇不失为一篇利用渐进 DID 的模版。
在双重固定效应(Two-Way Fixed Effects)的估计框架下,Standard DID 的一般化方程是
与之相对应的Time-varying DID 的一般化模型设定是
ESA 方法应用 (Event Study Approach)
DID 应用 ESA 方法有两个目的:一是可以利用回归方法对双重差分法中最重要的平行趋势假设进行检验,与上面的图示法相比,好处在于可以控制协变量的影响,方程形式也更加灵活;二是可以更加清楚地得到政策效果在时间维度上地变化。因此,这部分检验在论文中也往往被称为政策的动态效果(Dynamic Effects) 或者灵活的 DID (Flexible DID Estimates)
对于 Time-varying DID 来说,即使没有了统一的政策时点,由于每一个个体进入实验组的时点是确定的,我们可以通过当前年份与该个体的政策时点相比较,就可以得到该个体的前 N 期到后 N 期,从而观察动态的政策效果。换句话说,Standard DID 结合 ESA 方法所生成的时期虚拟变量是一种绝对的时间尺度,即观测政策在某个样本时期的效果,而 Time-varying DID 利用 ESA 方法所需要的是相对的时期,即观测政策效果在个体接受处理的前 N 期和后 N 期的变化。
xtset stkcd year
tab policy
replace policy = -10 if policy < -10
replace policy = 15 if policy > 15
forvalues i=10(-1)1{
gen pre`i'=(policy==-`i')
}
gen current= (policy==0)
forvalues i=1(1)15{
gen post`i'=(policy==`i')
}
drop pre1 //将政策前第一期作为基准组,很重要!!!
xtreg y pre* current post* i.wrkyr, fe vce(cluster statefip)
reghdfe y pre* current post*, absorb(statefip wrkyr) vce(cluster statefip)
coefplot, baselevels ///
keep(pre* current post*) ///
vertical ///转置图形
coeflabels( pre10 = "-10" ///
pre9 = "-9" ///
pre8 = "-8" ///
pre7 = "-7" ///
pre6 = "-6" ///
pre5 = "-5" ///
pre4 = "-4" ///
pre3 = "-3" ///
pre2 = "-2" ///
current = "0" ///
post1 = "1" ///
post2 = "2" ///
post3 = "3" ///
post4 = "4" ///
post5 = "5" ///
post6 = "6" ///
post7 = "7" ///
post8 = "8" ///
post9 = "9" ///
post10 = "10" ///
post11 = "11" ///
post12 = "12" ///
post13 = "13" ///
post14 = "14" ///
post15 = "15") ///
yline(0,lcolor(edkblue*0.8)) ///加入y=0这条虚线
ylabel(-0.06(0.02)0.06) ///
xline(10, lwidth(vthin) lpattern(dash) lcolor(teal)) ///
ylabel(,labsize(*0.75)) xlabel(,labsize(*0.75)) ///
ytitle("政策动态经济效应", size(small)) ///加入Y轴标题,大小small
xtitle("政策时点", size(small)) ///加入X轴标题,大小small
addplot(line @b @at) ///增加点之间的连线
ciopts(lpattern(dash) recast(rcap) msize(medium)) ///CI为虚线上下封口
msymbol(circle_hollow) ///plot空心格式
scheme(s1mono)
生成的图片类似于
图形优化 ,如常用的平行趋势图
ciopts(recast(rcap))
rescale(100)
scheme(s1mono)
//也可以通过scheme调整风格如
scheme(qleanmono)
参考资料
Beck T , Levkov R L . Big Bad Banks? The Winners and Losers from Bank Deregulation in the United States[J]. Journal of Finance, 2010, 65(5):1637-1667.
DID大法:多期DID如何做平行趋势检验? - 知乎