考虑溢出效应的倍分法:spillover-robust DID
🍎 连享会主页:lianxh.cn
New!
lianxh
命令发布了: GIF 动图介绍
随时搜索 Stata 推文、教程、手册、论坛,安装命令如下:
. ssc install lianxh
连享会 · 最受欢迎的课
🍓 2021 Stata 寒假班
⌚ 2021 年 1.25-2.4🌲 主讲:连玉君 (中山大学);江艇 (中国人民大学)
👉 课程主页:https://gitee.com/arlionn/PX
作者: 袁子晴 (香港大学)
邮箱: yzq0612@foxmail.com
目录
1. 问题背景
2. 模型设定
2.1 经典的双重差分法
2.2 溢出稳健-双重差分法
3. Stata 实现:cdifdif 命令
3.1 Stata 实例
4. 总结
5. 参考文献
6. 相关推文
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。
1. 问题背景
自然实验通常依据地理边界来划分处理组和控制组,但是由于政策的 外部性 或者个体的策略性 迁移决策 (主动地从控制组地区迁移至处理组地区) ,在 处理组 和 控制组 之间可能发生 溢出效应,即政策处理效果可能会蔓延到近邻的控制组。
这种情况违反了双重查分法的 SUTVA 假定 (Stable Unit Treatment Value Assumption),即不同个体是否受到政策影响是相互独立的,也就是说某一个体受政策影响的情况 (Treatment Status) 不得影响任何其他个体的结果。
2. 模型设定
考虑到这一问题,Clarke (2017) 介绍了一种灵活的方法来检验这种溢出效应,并在溢出效应存在的情况下估计政策处理效应。
2.1 经典的双重差分法
首先我们来回顾一下包含了个体和时间的双固定效应双重差分法模型,核心解释变量是 ,
溢出效应带来的 估计偏差 取决于以下两方面:
对控制组产生的溢出效应的 方向及大小; 受溢出效应影响的 样本占总体的比例。
2.2 溢出稳健-双重差分法
2.2.1 模型设定
考虑到溢出效应,我们运用 溢出稳健-双重差分法 (spillover-robust DID method) ,模型设定如下:
通过 引入近邻处理组,此框架放松了 SUTVA 的假定,只要求 部分满足 SUTVA 假定,来估计政策处理效应 (Treatment Effects) 和 “近邻” 处理效应 (“Close” to Treatment Effects)。
2.2.2 模型优势
该方法主要有以下两方面的优势
a. 对外溢的具体形式没有严格限制,处理组的政策效应可以外溢到控制组,溢出效应依赖于到最近处理组的距离; b. 存在外溢效应的区域是由最优带宽确定的,避免人为主观设定。
2.2.3 前提假设
假设1:处理组 和 控制组 之间的平行趋势
假设2:近邻组 与 控制组 之间的平行趋势。
假设3:SUTVA 局部成立,即在总样本 中,部分个体 子集,其潜在结果 () 与是否受到政策处理无关
假设4A:是否会被分配到近邻处理组取决于到处理组的距离 ,外溢效应在该距离超过阈值 时消失殆尽,即当 时,.
满足 假设1~4A 后,「溢出稳健-双重差分法」可以得到一致估计量,其中 假设4A 可以被进一步放松,即近邻处理组的分配机制可以进一步细化。
假设5:溢出效应随距离的单调性 (Monotonicity of Spillovers in Distance)
假设4A 中,决定是否会被分配到近邻处理组 是一个单一的虚拟变量,事实上可以被进一步拆解成一组虚拟变量:
其中,对于 ,有
其实,某个体离处理组的距离 被切分成 等份,每份(相对于每单位)的长度为 ,比如, 为到处理组的地理距离,最小距离和最大距离分别为 0 km 和 100 km, 可设为 5 km,从而得到 20 个不同的指标 , ,在这一组虚拟变量中,每个个体 在时间 内最多只有一个虚拟变量取值为 1。
3. Stata 实现
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。
Clarke (2017) 为溢出稳健-双重差分法提供了 Stata 外部命令 cdifdif
,相关程序可以到如下仓库下载,并参照 -Stata: 外部命令的搜索、安装与使用- 进行安装:
github 仓库地址:https://github.com/damiancclarke/cdifdif 码云仓库地址:https://gitee.com/arlionn/cdifdif
该命令的语法结构如下:
cdifdif yvar xvars [if] [in] [weight], ///
distance(varname) maxdist(real) [options]
基本选项如下:
distance(varname)
:指定 距离变量,用于度量给定时间段内给定 观测值到最近的处理组的距离。当个体属于处理组时,该变量取值为零。在政策实施前,该变量取值为零,或者设置为缺失值。maxdist(real)
:指定测试 最优带宽的范围,从最小值开始,以delta(#)
为单位递增,直到达到maxdist
。请注意,maxdist
并不意味着不能估计超过设定数值的溢出效应,而是在选择最优带宽时不会考虑超出maxdist
所设定的数值。delta(#)
:测试最佳距离带宽时搜索网格的精细度 (步长)。该数值较小,表明后续测试的带宽应该是紧密间隔的,从而在确定RMSE最佳带宽时考虑更多的带宽选择。该数值应该基于距离变量(varname
) 的度量单位来加以设置。regtype(string)
:指定用 yvar 和 xvars 估计的回归模型,包括areg
,regress
。此外,适用于areg
,regress
的选项,例如聚类稳健标准误cluster()
或者固定效应的选项absorb()
也能直接使用tlimit(#)
:显著性水平设定,默认为 1.96stub(string)
:指定近邻处理变量的名称, 默认情况下,自动返回一系列以 _close 开头的变量nogenerate
:不汇报近邻处理变量,只输出最优的回归模型plotrmse
:将测试的每个溢出带宽的 RMSE 值以图表的方式呈现出来kfold(#)
:在最小化 RMSE 估计最优带宽时,默认使用 k-fold 交叉验证 (除非指定loocv
),指定kfold(#)
允许预测 时使用的参数可以改变。默认为kfold(10)
loocv
:估计最优带宽时使用 leave-one-out 交叉验证,而不是 k-fold 交叉验证,但当观测值数目较多的时候,这种方法较慢verbose
要求汇报更多方法细节,建议在指定 loocv 时使用nonoptimal
要求不使用最佳带宽搜索过程,不建议使用该方法,因为研究者需要自行设定带宽h(#)
指定用于回归的带宽,只有在指定了nonoptimal
时生效。
3.1 Stata 实例
接下来的实例中,我们控制了个体和时间固定效应,采用聚类在个体层级的聚类稳健标准误,将最优带宽的搜索范围限定在 25 之内,回归结果表明外溢效应与政策效应的方向一致,而且在统计上显著,该溢出效应随着距离的增加而衰减。回归结果还汇报了最优带宽为 5。
. webuse set 'http://www.damianclarke.net/data/'. webuse 'spilloverDGPs', clear
. cdifdif y1 treat i.time, distance(distance) /// maxdist(25) regtype(areg) abs(id) cluster(id)
Linear regression, absorbing indicators Number of obs = 1,000Absorbed variable: id No. of categories = 500 F( 7, 499) = 591.12 Prob > F = 0.0000 R-squared = 0.9631 Adj R-squared = 0.9251 Root MSE = 0.9453
(Std. Err. adjusted for 500 clusters in id)------------------------------------------------------------------------------ | Robust y1 | Coef. Std. Err. t P>|t| [95% Conf. Interval]-------------+---------------------------------------------------------------- treat | 10.09622 .2142248 47.13 0.000 9.675327 10.51711 1.time | .8729984 .1088206 8.02 0.000 .6591953 1.086801 _close_0_5 | 5.085146 .4182907 12.16 0.000 4.263318 5.906974 _close_5_10 | 3.931074 .3684214 10.67 0.000 3.207225 4.654922_close_10_15 | 3.447174 .4837801 7.13 0.000 2.496677 4.397671_close_15_20 | 2.12119 .5336645 3.97 0.000 1.072683 3.169696_close_20_25 | .9494996 .4319377 2.20 0.028 .1008589 1.79814 _cons | 3.522413 .042297 83.28 0.000 3.43931 3.605515------------------------------------------------------------------------------Optimal Distance calculated is 5Maximum spillover distance is 25
通过附加选项 plotrmse
,我们可以得到下图,直观地展示了在不同带宽选择下的 RMSE 值,我们可以观察到在带宽为 5 时,RMSE 取最小值,也验证了上述最优带宽的选择。
. cdifdif y1 treat i.time, distance(distance) ///
maxdist(25) regtype(areg) abs(id) cluster(id) plotrmse
我们还可以采用 leave-one-out 交叉验证来估计最优带宽 (参见 Stata:交叉验证简介 ),该方法耗时较长,最终的结果与上面保持一致。
. cdifdif y1 treat i.time, distance(distance) maxdist(25) /// regtype(areg) abs(id) cluster(id) loocv verbose
RMSE for 25 is 1.1252901
Linear regression, absorbing indicators Number of obs = 1,000Absorbed variable: id No. of categories = 500 F( 7, 499) = 591.12 Prob > F = 0.0000 R-squared = 0.9631 Adj R-squared = 0.9251 Root MSE = 0.9453
(Std. Err. adjusted for 500 clusters in id)------------------------------------------------------------------------------ | Robust y1 | Coef. Std. Err. t P>|t| [95% Conf. Interval]-------------+---------------------------------------------------------------- treat | 10.09622 .2142248 47.13 0.000 9.675327 10.51711 1.time | .8729984 .1088206 8.02 0.000 .6591953 1.086801 _close_0_5 | 5.085146 .4182907 12.16 0.000 4.263318 5.906974 _close_5_10 | 3.931074 .3684214 10.67 0.000 3.207225 4.654922_close_10_15 | 3.447174 .4837801 7.13 0.000 2.496677 4.397671_close_15_20 | 2.12119 .5336645 3.97 0.000 1.072683 3.169696_close_20_25 | .9494996 .4319377 2.20 0.028 .1008589 1.79814 _cons | 3.522413 .042297 83.28 0.000 3.43931 3.605515------------------------------------------------------------------------------Optimal Distance calculated is 5Maximum spillover distance is 25
4. 总结
经典双重查分模型的前提假设是处理组和控制组泾渭分明,井水不犯河水,但是考虑到外溢效应,这一假设往往并不满足,可能会导致有偏的估计结果,所以 Clarke (2017) 提供了溢出稳健双重查分模型来解决这一问题,具体模型细节和证明请参阅原文,启示是我们可以在稳健性检验部分借鉴这一方法并且与基准模型相对比,从而增加结果的可信性和说服力。
5. 参考文献
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。
Damian Clarke 个人主页 (damian.clarke@usach.cl) Clarke, D. (2017). Estimating Difference-in-Differences in the Presence of Spillovers. PDF 外部命令源代码:码云;Github