模型系列-DID入门(附Stata操作)

这篇文章是和小伙伴LF协作完成的,我俩用的是石墨文档。如果需要对应的do文件,可以私信我邮箱,看到后空闲时间就发~

估计政策效应的四种方法:工具变量法、断点回归、倾向得分匹配法、双重差分法。我们在这里介绍双重差分法。

一、模型引入

假设现要修一条铁路,其必然会有穿过的和没有穿过的城市。现在我们想知道铁路修好以后,被铁路穿过的城市经济增长是不是更快了?

为了回答上面的问题,我们至少需要观察两期情况即修铁路前(t=0)和修铁路后(t=1)。同时我们设如果城市i被穿过,我们记Di=1,反之Di=0。

如上图的处理效应即为“修铁路”这项政策的效应。

treat组(处理组):受政策干预——结果Di=1

control组(对照组):未受政策干预——结果Di=0

以上的关键在于处理组如果未受到政策干预,其时间效应或趋势应该与控制组一样。

二、前提条件

1.使用前提

(1)政策不能是“一刀切”类型,即存在受政策影响的实验组和不受政策影响的对照组

(2)至少两年的面板数据,如果是截面数据一般也别考虑了

2.模型前提

(1)平行趋势(CT)假设:处理组和对照组有共同趋势,在政策干预之前,处理组和控制组的结果效应的趋势应该是一样的。

(2)SUTVA条件:政策干预只影响处理组,不会对控制组产生交互影响,或者政策干预不会产生外溢效应;

(3)线性形式条件:潜在结果变量同处理变量和时间变量满足线性条件。

由此可见DID的使用条件较为严苛,并不能随意使用。

三、模型构造

du 表明了一刀切政策无法适用DID;dt表明了截面数据无法使用。

四、稳健性检验

为了证明所有的效应是由政策实施所引起的,必须做稳健性检验,主要体现在两个方面:

1.平行趋势检验

如果是多年面板数据可以通过画图或者回归的方法来检验平行趋势假设。

(1)画图:画出实验组时期和对照组时期的时间趋势图,如果两条线的走势完全一致或基本一致,说明CT假设是满足的。

(2)回归:将模型构造中dt项改为“年份虚拟变量”,政策实施前有a年就有a个年份虚拟变量,以及与du相乘的a个交互项。此时交互项反映的是“政策实施前年份,实验组和对照组的差异”。如果这a个交互项不显著,即说明政策实施前实验组和对照组不存在明显的差别,从而满足CT假设。一般,“都不显著”可以稍微放松,即便存在一两个显著的情况,但只要a个交互项联合不显著,也是满足CT假设。

2.安慰剂检验

安慰剂检验核心思想即即虚构处理组进行回归。

第一步:选取政策实施之前的年份进行处理,例如,政策发生在2014年,研究区间为2013-2015年。我们可以把研究区间向前移动到2011-2013年,并假定政策实施年份为2012年,然后进行回归。

第二步:选取已知的并不受政策实施影响的群组作为处理组进行回归。

如果不同虚构方式下的DID估计量的回归结果依然显著,说明原来的估计结果很有可能出现了偏误。

此外还可以利用不同不同的对照组进行回归,看研究结论是否依然一致。或者选取一个完全不受政策干预影响的因素作为被解释变量进行回归,如果DID估计量的回归结果依然显著,说明原来的估计结果很有可能出现了偏误。

注:以上如果回归结果显著,说明原结果是一定有问题的,而如果回归结果不显著,并不一定能表明原结果没问题。

五、Stata命令详解

1.数据下载地址

http://dss.princeton.edu/training/Panel101.dta

2.数据背景介绍

历史上A、B、C、D、E、F、G这7个地区非常相似,然而1994年后E、F和G三个地区(实验组)颁布了一项政策,其余4个地区(控制组)没有。

3.DID基准回归

*定义工作环境

cd C:\Users\Administrator\Desktop

*导入数据

use panel101,clear

*假设政策执行时间为1994年,设置虚拟变量

gen time = (year >= 1994)&!missing(year)

*假设政策执行地为大于4的地方,设置虚拟变量

gen treated = (country >4)&!missing(country)

*构建DID估计量,即时间和空间的交互项

gen did = time*treated

*第一种DID回归设计

reg y did time treated,r

显然在10%水平上,政策实施有显著的负效应

*第二种DID回归设计

reg y time##treated,r

同样的在第二种方法中,无需设置交互项,结果是一样的

*第三种DID回归设计

**安装外部命令

ssc install diff

**估计DID

diff y, t(treated) p(time)

在第三种方法里,直接使用diff命令,快速实现方法一的三步骤,结果一样

4.平行趋势检验

以上的基准回归只有当地区在政策前足够相似才能够保证DID提取的是政策的因果效应,所以研究者需要知道两组地区在政策前有多大差异。实现这一目标的方法是将年份虚拟变量乘以实验组虚拟变量,这一交互项就可以捕捉两组地区在每一年份的差异。

如果两组地区的确有着平行趋势的话,那么预期在1994年前的那些交互项的回归结果将不显著,而1994年后的将显著。

**生成年份虚拟变量与实验组虚拟变量的交互项(此处选在政策前后各3年)

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

est sto reg

可以看出Before3 Before2 Before1 的系数均不显著,After1的系数负向显著

**采用coefplot命令画图

ssc install coefplot

coefplot reg,keep(Before3 Before2 Before1 Current After1 After2 After3) vertical recast(connect) yline(0)

  • 保留关键变量: keep(Before2 Before1 Current After1 After2 After3_)*

  • 转置: vertical*

  • 系数连线,观察动态效果: recast(connect)*

  • 增加直线y=0: yline(0)*

结果发现系数在政策前的确在0附近波动,而政策后一年系数显著为负,但很快又回到0附近。这说明实验组和控制组的确是可以进行比较的,而政策效果可能出现在颁布后一年,随后又很快消失。

六、参考资料

1.双重差分模型的平行趋势假定如何检验? —— coefplot命令来告诉你

2.那些年,我们用过的DID

3.DID与政策评估(附Stata实现)

4.【Stata教程】如何进行平行趋势检验

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章