双重差分及R、Stata操作与应⽤
本⽂由计量经济学服务中⼼综合整理
转载请注明来源
1
简介
现代计量经济学和统计学的发展为我们的研究提供了可⾏的⼯具。倍差法来源于计量经济学的综列数据模型,是政策分析和⼯程评估中⼴为使⽤的⼀种计量经济⽅法。主要是应⽤于在混合截⾯数据集中,评价某⼀事件或政策的影响程度。该⽅法的基本思路是将调查样本分为两组,⼀组是政策或⼯程作⽤对象即“作⽤组”,⼀组是⾮政策或⼯程作⽤对象即“对照组”。根据作⽤组和对照组在政策或⼯程实施前后的相关信息,可以计算作⽤组在政策或⼯程实施前后某个指标(如收⼊)的变化量(收⼊增长量),同时计算对照组在政策或⼯程实施前后同⼀指标的变化量。然后计算上述两个变化量的差值(即所谓的“倍差值”)。这就是所谓的双重差分估计量(Difference in Differences,简记DD或DID),因为它是处理组差分与控制组差分之差。该法最早由Ashenfelter(1978)引⼊经济学,⽽国内最早的应⽤或为周黎安、陈烨(2005)。
常⽤的倍差法主要包括双重倍差法和三重倍差法。双重差分法(Difference-in-difference,DID)有⼏种其他的称谓:倍差法、差分再差分等。该⽅法的原理⾮常简单,它要求数据期⾄少有两期,所有的样本被分为两类:实验组和控制组,其中实验组在第⼀期是没有受到政策影响,此后政策开始实施,第⼆期就是政策实施后的结果,控制组由于⼀直没有受政策⼲预,因此其第⼀期和第⼆期都是没有政策⼲预的结果。双重差分⽅法的测算也⾮常简单,两次差分的效应就是政策效应。
双重差分法的假定,为了使⽤OLS⼀致地估计⽅程,需要作以下两个假定。
假定1:此模型设定正确。特别地,⽆论处理组还是控制组,其时间趋势项都是。此假定即“平⾏趋势假定”(parallel trend assumption)。DID最为重要和关键的前提条件:共同趋势(Common Trends)
双重差分法并不要求实验组和控制组是完全⼀致的,两组之间可以存在⼀定的差异,但是双重差分⽅法要求这种差异不随着时间产⽣变化,也就是说,处理组和对照组在政策实施之前必须具有相同的发展趋势。
假定2:暂时性冲击与政策虚拟变量不相关。这是保证双向固定效应为⼀致估计量(consist estimator)的重要条件。在此,可以允许个体固定效应与政策虚拟变量相关(可通过双重差分或组内变换消去,或通过LSDV法控制)。
DID允许根据个体特征进⾏选择,只要此特征不随时间⽽变;这是DID的最⼤优点,即可以部分地缓解因 “选择偏
差”(selection bias)⽽导致的内⽣性(endogeneity)。
2
命令介绍
案例数据介绍:cardkrueger1994
例如,Card and Krueger(1994)就利⽤了新泽西州最低⼯资的⼀次突然上涨,在收集了新泽西州以及与之相邻的宾⼣法尼亚州的快餐⾏业雇⼯数据后,他们讨论了最低⼯资的上涨与就业的关系。
在1992年,美国新泽西州通过法律将最低⼯资从每⼩时4.25美元提⾼到5.05美元,但在相邻的宾⼣法尼亚州最低⼯资却保持不变。这两个州的雇主仿佛被随机地分配到实验组(新泽西州)与控制组 (宾⼣法尼亚州)。收集了两个州的快餐店在实施新法前后雇佣⼈数的数据,发现提⾼最低⼯资对低技能⼯⼈的就业⼏乎没有影响。
3
R操作之⼿⼯计算双重差分
代码为
•
•
•
•
•
•
•
setwd( "C:/Users/admin/Desktop") library(readstata13) cardkrueger1994<- read.dta13( "cardkrueger1994.dta") cardkrueger $treat<- ifelse(cardkrueger $treated== "NJ",cardkrueger $treat<- 1,cardkrueger $treat<- 0)
df=fte~treat+t+I(treat*t) ols <- lm(df, data=cardkrueger) summary(ols)
4
Stata操作之⼿⼯计算双重差分
代码为
•
•
•
usecardkrueger1994,clear gengd=t*treated // (定义交叉项gd) reg fte gd treated t, r
gd处理效应的系数估计值为2.914,但是仅在10%显著性⽔平下显著,p值为0.094,与⼿⼯回归的结果完全相同。5
Stata操作之双重差分
命令为:
•
bootstrappeddiffoutcome_var[if][in][weight], [ options]
模型必选项介绍:
outcome_var :结果变量
period(varname) :实验期变量
treated(varname) :处理变量
cov(varlist) :协变量。
可选项介绍:
cov(varlist),协变量,加上kernel可以估计倾向得分
kernel,执⾏双重差分倾向得分匹配
id(varname),kernel选项要求使⽤
id(varname),kernel选项要求使⽤
bw(#) ,核函数的带宽,默认是0.06
ktype(kernel),核函数的类型.
rcs Indicates that the kernel is set for repeated cross section. This option does not require option id(varname). Option rcs strongly assumes that covariates in cov(varlist) do not vary over time.
qdid(quantile),执⾏分位数双重差分
pscore(varname) .提供倾向得分
logit,进⾏倾向得分计算,默认probit回归
ddd(varname),三重差分
1、DID with no covariates不带协变量的估计
diff fte, t(treated) p(t)
bootstrapped 稳健标准误
2、DID with covariates带协变量的估计
diff fte, t(treated) p(t) cov(bk kfc roys)
diff fte, t(treated) p(t) cov(bk kfc roys) report
diff fte, t(treated) p(t) cov(bk kfc roys) report bs
3、Kernel Propensity Score Diff-in-Diff
diff fte, t(treated) p(t) cov(bk kfc roys) kernel rcs
diff fte, t(treated) p(t) cov(bk kfc roys) kernel rcs support
diff fte, t(treated) p(t) cov(bk kfc roys) kernel rcs support addcov(wendys)
diff fte, t(treated) p(t) kernel rcs ktype(gaussian) pscore(_ps)
diff fte, t(treated) p(t) cov(bk kfc roys) kernel rcs support addcov(wendys) bs reps(50)
4、 Quantile Diff-in-Diff 分位数双重差分法
diff fte, t(treated) p(t) qdid(0.25)
diff fte, t(treated) p(t) qdid(0.50)
diff fte, t(treated) p(t) qdid(0.75)
diff fte, t(treated) p(t) qdid(0.50) cov(bk kfc roys)
diff fte, t(treated) p(t) qdid(0.50) cov(bk kfc roys) kernel id(id) diff fte, t(treated) p(t) qdid(0.50) cov(bk kfc roys) kernel rcs 5、Balancing test of covariates.包含协变量的控制组与实验组之间差异检验
diff fte, t(treated) p(t) cov(bk kfc roys wendys) test
diff fte, t(treated) p(t) cov(bk kfc roys wendys) test id(id) kernel
diff fte, t(treated) p(t) cov(bk kfc roys wendys) test kernel rcs
6. Triple differences (consider bk is a second treatment category).
三重差分法
diff fte, t(treated) p(t) ddd(bk)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论