温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
作者: 笑花心 (连享会助教)
邮箱: RHs_knowledge@126.com
编者按: 本文摘自以下论文,特此致谢。
Source: Cerulli G. Extending the difference-in-differences (DID) to settings with many treated units and same intervention time: Model and Stata implementation[C]. 2019 Stata Conference. Stata Users Group, 2019 (26). -Link-
目录
双重差分法 (Differences-in-Differences)、断点回归 (Regression Discontinuity)、实验室实验 (Laboratory Experiment)、动态随机一般均衡 (Dynamic Stochastic General Equilibrium)、随机控制实验 (Randomized Control Trial) 以及机器学习或大数据 (Machine Learning or Big data) 一起成为近年来最受学者们青睐的几大研究方法。
来源:Cerulli (2019)
不同于其他研究,DID 方法具有自身的特点。区别于实验中人为控制得到的数据, 学者们采用 DID 方法进行研究时,往往依据经济活动中的观测数据。与机器学习或大数据相比,DID对数据量的要求较低且更注重因果关系的解释。DID、DSGE 和 RD 的方法都可以用来对政策的效应进行评估。DSGE模型需要设定经济主体所处宏观环境和决策行为,同时引入外生性随机冲击来研究政策影响;RD 方法则强调存在一个连续变量能够随机影响个体是否会接受政策干预;而DID的核心假设则在于共同趋势假设 (详见后文)。
本文重点介绍 tfdiff
命令,在分析多期 DID 时非常好用。它与目前常用的两个命令 (diff
以及 tvdiff
) 的区别总结如下:
tfdiff
与 diff
的区别
diff
命令只限于两期数据,即政策实施的前后两阶段,在分析多期数据的结果时可能会出问题;diff
命令可以进行分位数 DID 等多种回归形式;diff
命令得到的结果展示形式比较单一, 而 Cerulli 所编写的 tfdiff
命令则可以很便捷地进行输出,并对提供了较好的图形展示效果。tfdiff
与 tvdiff
的区别
tfdiff
命令要求政策实施时点对于不同个体是固定的 (Time-Fixed),比如欧盟国家在 2001 年同时启用欧元作为共同货币;而 tvdiff
命令可以研究个体政策实施时点不同 (Time-Varing) 的情况 (渐进 DID ),比如不同地区在不同年份实施公共教育支出改革。关于渐进 DID 的介绍,详见「Stata: 多期倍分法 (DID) 详解及其图示」。关于 DID 模型,我们知道「处理组未经处理的结果」和「控制组经处理的结果」无法直接观测,但可以借助「共同趋势假设」来间接的评价政策实施效果。例如,Cerulli (2015) 在研究某一政策时,将 Rome 作为处理组,Milan 作为控制组,共同趋势假设则要求未经处理的 Rome 要和 Milan 的趋势保持一致。
由上图可知,若共同趋势假设成立,政策效果为 3, 反之,政策效果可能为其他值。此时,共同趋势假设成立与否就显得尤为重要。为此,本文将针对 DID 模型中的共同趋势假设检验原理和实现进行简要介绍。
基于如下背景:
有一份面板数据,具有
设置时间虚拟变量
设置虚拟变量
根据上述情形,观测到的结果
在给定
假设可能结果以下面的形式出现 (其中
其中,
依据上述表达式,我们可以得到:
因此得到在时点 t 的平均处理效应 (Average treatment effect):
对于处理和非处理状态的样本,我们也可以写成:
其中,考虑
根据
可以得到如下关系:
可以写成:
该式为包含固定效应的基本回归。由此得到因果效应的表达式为:
现在我们将结果拓展至
当
其中跨期因果效应为:
依据之前的模型,对于共同趋势假设,我们可以进行一个较为简单的检验,即:
如果原假设没有被拒绝,那么就会接受 “处理组和非处理组个体间存在共同趋势”,尽管这个检验只在没有预期行为的前提下有效。
值得注意的是:
共同趋势假定是 DID 识别方法的基础;
这个假设一般是难以检验的;
当能够得到足够长的时间序列,在没有预期效应的前提下,共同趋势是可以 “被评估的”。
tfdiff
命令语法如下:
tfdiff outcome treatment [varlist] [if] [in] [weight],
datatype(datatype) model(modeltype) tvar(time_variable) t(#)
[pvar(panel_variable) test_pt graph ci(#) vce(vcetype)
save_graph(graphname) save_results(filename)]
其中, outcome
为目标变量,treatment
为处理变量,varlist
为控制变量,其余选项将在下文中说明。
*-设置默认绘图模板
clear all
set scheme s1mono
*-生成数据
set obs 100
gen id = _n //产生100个个体
expand 21
by id, sort: gen year = 1999 + _n //生成2000-2020年份
gen w = (id <= 21) //将前21个个体设置为处理组
set seed 1234 //设定种子值,保证结果不变
gen x=uniform() //x是[0,1]区间上均匀分布的随机变量
gen y=rnormal(0, 0.5) // y是服从均值为0, 标准差为0.5的正态随机变量
*对于处理组,在政策实施后,y变为服从均值为2,标准差为1的正态随机变量
replace y=rnormal(2,1) if (year >= 2010) & w==1 //
keep id year y w x
*-定义个体和时间维度
tsset id year
tfdiff y w x, t(2010) pvar(id) tvar(year) datatype(panel) ///
model(ols) ci(10) graph vce(cluster id) save_results(RES_tfdiff)
tfdiff
其他选项:
t(2010)
指定处理的发生时间,即 2010 年;pvar(id)
指定面板变量 id,且必须为数值型;tvar(year)
指定时间变量 year,且必须为数值型;datatype(datatype)
指定所使用的的数据格式: cross-section
为截面数据,panel
为面板数据;model(modeltype)
指定估计模型:fe
为固定效应,ols
为普通最小二乘法;ci(10)
确定 ATE(t) 的统计显著水平;graph
将结果以图形方式展示;vce(cluster id)
进行聚类标准误调整;save_results(RES_tfdiff)
将 ATE(t) 值和置信区间以「RES_tfdiff.dta」存储于本地。更多详细介绍,请参考 help tfdiff
。
tfdiff
结果图示:
处理组和控制组在整个样本时期的变动趋势,如下图所示:
bysort w year: egen y_mean = mean(y)
bysort w year: keep if _n == _N
keep y_mean w year
reshape wide y_mean, i(year) j(w)
twoway scatter y_mean1 year, c(1) xlabel(2000(5)2020) ///
|| scatter y_mean0 year, c(1) xlabel(2000(5)2020) , ///
ylabel(-1.0(1)3.0) xlabel(2000(5)2020) ///
ytitle("E[y(t)]") xtitle("Time") ///
yline(0 , lpattern(dash)) xline(2010, lw(thick) lp(dash)) ///
note(Average Effect of the Policy = 2) ///
legend(ring(0) cols(1) order(1 2) position(5) ///
label(1 "Treated") label(2 "Untreated")) ///
graphregion(fcolor(white)) scheme(s1mono)
可以看出,在 2010 以后,处理组和控制组的结果出现了明显的差异。
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟 Stata 33 讲 - 连玉君, 每讲 15 分钟. 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看,所有课程可以随时购买观看。
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 ⭐ | DSGE, 因果推断, 空间计量等 | |
⭕ Stata数据清洗 | 游万海 | 直播, 2 小时,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD