考虑溢出效应的倍分法:spillover-robust DID

文摘   教育   2024-10-12 22:01   山西  


👇 连享会 · 推文导航 | www.lianxh.cn

🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)

 课程特色 · 2024机器学习与因果推断

  • 懂原理、会应用。本次课程邀请了两位老师合作讲授,目的在于最大限度地实现理论与应用的有机结合。为期四天的课程,分成两个部分:第一部分讲解常用的机器学习算法和适用条件,以及文本分析和大语言模型;第二部分通过精讲 4-6 篇发表于 Top 期刊的论文,帮助大家理解各类机器学习算法的应用场景,以及它们与传统因果推断方法的巧妙结合。
  • 以 Top 期刊论文为范例。目前多数人的困惑是不清楚如何将传统因果推断方法与机器学习结合起来。事实上,即便是 MIT 和 Harvard 的大牛们也都在「摸着石头过河」。为此,通过论文精讲和复现来学习这部分内容或许是目前最有效的方式了。张宏亮老师此前在浙江大学按照这一模式教授了「因果推断和机器学习」课程,效果甚佳:学生们能够逐渐建立起研究设计的理念,并在构造识别策略时适当地嵌入机器学习方法。


作者: 袁子晴 (香港大学)
邮箱: 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 实现:cdifdif 命令

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) :指定用 yvarxvars 估计的回归模型,包括 areg, regress。此外,适用于areg, regress的选项,例如聚类稳健标准误 cluster() 或者固定效应的选项 absorb() 也能直接使用

  • tlimit(#)显著性水平设定,默认为 1.96

  • stub(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,000
Absorbed 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 5
Maximum 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,000
Absorbed 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 5
Maximum 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

6. 相关推文

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」

Note:产生如下推文列表的命令为:
lianxh DID 倍分法 交叉验证 外部命令的搜索, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

  • 专题:Stata入门
    • Stata: 外部命令的搜索、安装与使用
  • 专题:Stata命令
    • Stata新命令快讯:有向无环图、模糊倍分法等
  • 专题:回归分析
    • Stata:交叉验证简介
  • 专题:倍分法DID
    • tfdiff:多期DID的估计及图示
    • 倍分法DID:一组参考文献
    • Stata:双重差分的固定效应模型-(DID)
    • 倍分法(DID)的标准误:不能忽略空间相关性
    • 多期DID之安慰剂检验、平行趋势检验
    • DID边际分析:让政策评价结果更加丰满
    • Big Bad Banks:多期 DID 经典论文介绍
    • Stata 倍分法: 不满足平行趋势假设咋办?
    • 多期DID:平行趋势检验图示
    • Stata:多期倍分法 (DID) 详解及其图示
    • 倍分法DID详解 (三):多时点 DID (渐进DID) 的进一步分析
    • 倍分法DID详解 (一):传统 DID
    • 倍分法DID详解 (二):多时点 DID (渐进DID)
  • 专题:内生性-因果推断
    • Abadie新作:简明IV,DID,RDD教程和综述

🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)

尊敬的老师 / 亲爱的同学们:

连享会致力于不断优化和丰富课程内容,以确保每位学员都能获得最有价值的学习体验。为了更精准地满足您的学习需求,我们诚挚地邀请您参与到我们的课程规划中来。请您在下面的问卷中,分享您 感兴趣的学习主题或您希望深入了解的知识领域 。您的每一条建议都是我们宝贵的资源,将直接影响到我们课程的改进和创新。我们期待您的反馈,因为您的参与和支持是我们不断前进的动力。感谢您抽出宝贵时间,与我们共同塑造更加精彩的学习旅程!https://www.wjx.cn/vm/YgPfdsJ.aspx# 再次感谢大家宝贵的意见!

New! Stata 搜索神器:lianxh 和 songbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
  . ssc install lianxh
  . ssc install songbl
👉  使用:
  . lianxh DID 倍分法
  . songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。

连享会
连玉君老师团队分享,主页:lianxh.cn。白话计量,代码实操;学术路上,与君同行。
 最新文章