双重差分模型(DID) – 潘登同学的计量经济学笔记
基本思想
双重差分法可以理解为对随机分配实验的一种模拟,在没有随机实验的情况下去验证因果关系。
步骤:
- 分组:对于一个自然实验,其将全部的样本数据分为两组:一组是受到干预影响,即实验组;另一组是没有受到同一干预影响,即对照组;
- 目标选定:选定一个需要观测的目标指标,如购买转化率、留存率,一般是希望提升的KPI;
- 第一次差分:分别对在干预前后进行两次差分(相减)得到两组差值,代表实验组与对照组在干预前后分别的相对关系;
- 第二次差分:对两组差值进行第二次差分,从而消除实验组与对照组原生的差异,最终得到干预带来的净效应。
构造模型
对于每一个个体
i
i
i,其对应指标的公式化表达如下,类似线性回归的形式
y
i
,
t
=
γ
s
(
i
)
+
λ
t
+
δ
⋅
p
o
s
t
+
ϵ
i
,
t
y_{i,t} = \gamma_{s(i)} + \lambda_t + \delta \cdot post + \epsilon_{i,t}
yi,t=γs(i)+λt+δ⋅post+ϵi,t
其中
s
(
i
)
s(i)
s(i)表示组别变量,post表示政策实施与否(未实施则为0,实施则为1)
我们需要计算的DID可以表示为下式:
δ ^ = ( y ˉ T , 1 − y ˉ T , 0 ) − ( y ˉ C , 1 − y ˉ C , 1 ) \hat{\delta} = (\bar{y}_{T,1} - \bar{y}_{T,0}) - (\bar{y}_{C,1} - \bar{y}_{C,1}) δ^=(yˉT,1−yˉT,0)−(yˉC,1−yˉC,1)
即实验组干预前后的均值的差减去对照组干预前后均值的差
将上式的双重差分思想写成经典的双重差分模型:
Y
i
,
t
=
β
0
+
β
1
s
(
i
)
+
β
2
p
o
s
t
i
,
t
+
δ
s
(
i
)
∗
p
o
s
t
i
,
t
+
ϵ
i
,
t
Y_{i,t} = \beta_0 + \beta_1 s(i) + \beta_2 post_{i,t} + \delta s(i)*post_{i,t} + \epsilon_{i,t}
Yi,t=β0+β1s(i)+β2posti,t+δs(i)∗posti,t+ϵi,t
因为只有同时满足是实验组且是政策实施后的群体才能表现出差异,所以重点观察系数
δ
\delta
δ
数据前提
双重差分利用的是面板数据
样本数据需要满足下面三个假设(第三个需要重点关注):
- 线性关系假设: 认为因变量(Treatment)与结果变量存在线性关系
- 个体处理稳定性假设(The Stable Unit Treatment Value Assumption,SUTVA)个体的outcome是取决于个体干预变量treatment的一个函数,该假设由两部分组成:
- 一致性(Consistency):个体接受处理后所导致的潜在结果是唯一的。(例:我养狗了会变开心,无论是什么狗、不存在因为狗是黑的就不开心)
- 互不干预(No interference):个体接受处理后导致的潜在结果不受其他个体处理的影响(例:我在淘宝上领到了红包之后会更愿意买东西,不因为我同事也领了红包就意愿降低了)
- 平行趋势假设(Parallel Trend Assumption):实验组和对照组在没有干预的情况下,结果的趋势是一样的。即在不干预的情况下,前后两个时间点实验组与对照组的差值一致。
稳健性检验
共同趋势(CT)检验
画出实验组时期和对照组时期的时间趋势图;若两条线走势完全一样或者基本一致,则满足共同趋势(CT)假设。
或者通过平行趋势检验:
Y
i
,
t
=
∑
t
=
−
q
−
1
δ
t
D
t
s
(
i
)
+
∑
t
=
0
m
γ
t
D
t
s
(
i
)
+
λ
t
+
X
i
,
t
+
ϵ
i
,
t
Y_{i,t} = \sum_{t=-q}^{-1}\delta_t D_t s(i) + \sum_{t=0}^m\gamma_t D_t s(i)+ \lambda_t + X_{i,t} + \epsilon_{i,t}
Yi,t=t=−q∑−1δtDts(i)+t=0∑mγtDts(i)+λt+Xi,t+ϵi,t
该模型中包括了政策之前和之后若干期的虚拟变量 D t D_t Dt ,即可用于检验平行趋势是否成立,也可估计政策施行每一期效果具体大小, λ t \lambda_t λt代表时间固定效应。系数 δ t \delta_t δt用于检验平行趋势是否成立,若系数不显著则平行趋势成立;系数 γ t \gamma_t γt度量的是政策实行后每一期的效果大小,若显著则说明该期政策效应存在。
安慰剂检验
- 选择政策实施前年份进行处理。
- 假设2013-2015年是研究区间,2014年是政策发生实践。则可以移动区间把2011-2013年设置为样本区间,并假设政策发生在2012年,进行回归。在这样的虚构模型假设下,如果回归结果仍然显著,则可能原来的结果存在偏误。
- 选择已知的不受政策影响的群体作为处理组进行回归。
- 选择一个完全不受政策敢于影响的因素作为解释变量进行回归。
如果原来的结果稳健的话,虚构模型下的结果都不应该显著。如果显著,就回过头去检查之前的模型和结果是否有问题。
- 利用不同的对照组进行回归,看结论是否一致。
如果一致则没有问题。
stata示例
- 数据下载地址
- 数据背景介绍: 历史上A、B、C、D、E、F、G这7个地区非常相似,然而1994年后E、F和G三个地区(实验组)颁布了一项政策,其余4个地区(控制组)没有。
use panel101,clear
gen time = (year >= 1994)&!missing(year)
gen treated = (country >4)&!missing(country)
egen mean_y=mean(y), by(year treat)
twoway (connect mean_y year if treat==1,sort) (connect mean_y year if treat==0,sort lpattern(dash)), ///
xline(1994,lpattern(dash) lcolor(gray)) ///
ytitle("y") xtitle("年度") ///
ylabel(,labsize(*0.75)) xlabel(,labsize(*0.75)) ///
legend(label(1 "处理组") label( 2 "控制组")) ///图例
xlabel(1990 (1) 1999) graphregion(color(white)) //白底
DID估计
use panel101,clear
gen time = (year >= 1994)&!missing(year)
gen treated = (country >4)&!missing(country)
diff y, t(treated) p(time)
在10%的显著性水平上,政策实施有显著的负效应;
平行趋势检验
以上的基准回归只有当地区在政策前足够相似才能够保证DID提取的是政策的因果效应,所以研究者需要知道两组地区在政策前有多大差异。实现这一目标的方法是将年份虚拟变量乘以实验组虚拟变量,这一交互项就可以捕捉两组地区在每一年份的差异。
如果两组地区的确有着平行趋势的话,那么预期在1994年前的那些交互项的回归结果将不显著,而1994年后的将显著。
// 平行趋势检验
gen Dyear = year-1994
gen Before3 = (Dyear==-3&treated==1)
gen Before2 = (Dyear==-2&treated==1)
gen Before1 = (Dyear==-1&treated==1)
gen Current = (Dyear==0&treated==1)
gen After1 = (Dyear==1&treated==1)
gen After2 = (Dyear==2&treated==1)
gen After3 = (Dyear==3&treated==1)
**将以上交互项作为解释变量进行回归
xtreg y time treated Before3 Before2 Before1 Current After1 After2 After3 i.year, fe
eststo reg
可以看出Before3 Before2 Before1 的系数均不显著,After1的系数负向显著
采用coefplot命令画图: 查看系数的变化
结果发现系数在政策前的确在0附近波动,而政策后一年系数显著为负,但很快又回到0附近。这说明实验组和控制组的确是可以进行比较的,而政策效果可能出现在颁布后一年,随后又很快消失。
安慰剂检验
政策的实施确实产生了政策效应,且政策实施前实验组和控制组不存在显著性差异,但是通过DID估计出的政策效应是否受其他政策或因素的影响是未知的,因此需要进行安慰剂检验。
将研究样本设定在1990-1994间,并将政策年份设定在1992年
//安慰剂检验
gen time_new = (year>=1992) & !missing(year)
gen treated_new = (country>4) & !missing(country)
gen did_new = time_new*treated_new
reg y time_new treated_new did_new x1-x3 i.opinion if year<=1994, r
结果显示,did_new的系数为负,但是不显著,表明可以排除其他潜在的不可观测因素的影响,即估计出的政策效应是稳健的。