DID-倍分法:事前趋势检验的局限性和诊断

发布时间:2022-11-23 阅读 360

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:郭楚玉 (武汉大学)
邮箱julieguo@whu.edu.cn


目录


1. Pre-trend Test 的局限性

识别真实、有效政策效应 (因果关系) 的困难是数据缺失。在任何时间,研究对象可能处于两种潜在结果中的任何一种,但不可能同时处于两种状态。因此我们需要控制组,作为处理组的反事实状态 (无法观测到、数据缺失) 的替代。一个“良好的”控制组需要和处理组同质,即两者越像越好。Pre-trend test 就是检验处理组和控制组是否“相像”的一个检验。

通常来说,我们希望事前趋势的系数都显著的不异于 0。然后我们就得出结论,因变量的事前趋势在处理组和控制组之间是很相像的。因此,控制组是“良好的”。Roth (2022) 这篇文章告诉我们,pre-trend test 有两个问题。

  • 第一个是 test 本身 low power。即事前平行趋势不满足时,pre-trend test 能检测出事前平行趋势不满足的概率很低。
  • 第二个问题是 distortions from passing the pre-trend test。作者认为能通过平行趋势检验的样本,只是整个 DGP (data generating process) 里的某一类样本(selected sample)。Selected sample 会对政策估计系数造成进一步的统计偏误 (statistical distortion)。

1.1 Low Power

首先,我们来看一下 pre-trend test 存在的第一个问题——low power。下图是用 TWFE 估计的系数绘制的 event-study plot:

下面,我们假设三种事前处理组和控制组之间的相对趋势:分别是平行趋势、线性趋势、二次函数趋势。

情况 (i): Zero Pre-trend

如下图所示,我们认为绿色圆点代表了真实的 pre-trend 情况,即处理组和对照组的 Y 变量拥有相同的事前平行趋势。Pre-trend test 的结果显示 P-value = 0.81。我们无法拒绝原假设,原假设是 TWFE 的估计系数 (黑色三角形) 等于绿色圆点。

情况 (ii): A Linear Pre-trend

如下图所示,我们认为红色圆点代表真实的 pre-trend 情况,即处理组和控制组的 Y 变量的事前相对趋势满足一条线性关系。Pre-trend test 的原假设为黑色三角 (回归估计系数) 等于红色圆点。作者有意的让这个 pre-trend test 的 P-value 也等于 0.81,即我们无法拒绝黑色三角系数等于红色圆点。

根据事前趋势的三个红点,外推出一条直线。在这种情况下,事后期 (0-3 期) 的系数 高估 了真实的处理效应。

情况 (iii): A Quadratic Pre-trend

如下图所示,此时蓝色圆点代表真实的 pre-trend 情况。同样,作者有意设定这个 pre-trend test 的 P-value 也等于 0.81,即我们无法拒绝黑色三角系数等于蓝色圆点。

根据事前趋势的三个蓝色圆点,外推出一条抛物线。在这种情况下,事后期 (0-3期) 的估计系数就 低估 了真实的政策效应。

上面展示的三种 pre-trend 的情况告诉我们,进行 Pre-trend test,我们无法拒绝平行趋势 (zero pre-trend), 但同样也无法拒绝 a linear pre-trend or a quadratic pre-trend。后面两种事前趋势,都会导致事后期的估计系数偏误。所以,这就是 pre-trend test has low power 的体现, 即当 pre-trend 不满足平行趋势时,pre-trend test 能检测出来的概率很低。

Note:当事前期的期数较少时,更容易出现 pre-trend test low power 的问题。

1.2 Distortions from Pre-trend Test

Pre-trend test 存在的第二个问题是 additional statistical distortions from "seemingly" passing the pre-trend test。假设实际上存在某种事前趋势 (violation of paralle trend),因为 pre-trend test 的 low power 问题,我们通过了 pre-trent test,所以我们错误的以为样本中的处理组和控制组之间没有事前趋势(zero pre-trend)。作者认为,这样的样本是整个 DGP 里面某一类特殊的样本 (selected sample), 而这也会进一步导致偏误。

现在我们举一个简单的三期 DID 模型的例子。假设有三期 t{1,0,1},处理组在 t=0 和 t=1 期受处理。假设没有处理效应。处理组相对控制组的变化趋势是一个线性关系,系数为 δ

下图展示了当 δ=3 时,处理组和控制组的 Y 变量的相对变化趋势 (黑色带三角线条)。注意,因为假设没有处理效应,控制组的 Y 变量的整体均值为 0,而处理组的 Y 变量是随时间变化的,是一条斜率为 3 的线性关系。通过模拟,我们可以从这个总体中,抽取出很多种样本结果,灰色线表示。

在这无数次随机抽样中,下图用蓝色高亮出来的线 (样本) 是那些能通过 Pre-trend test 检验的样本。我们可以发现,能通过平行趋势检验的样本,是那些在事前期比较平缓的 (即事前期系数更接近于0) 。作者总结,among the insignificant draws, we tend to underestimate the diffrence between treatment and control at t = 0. As a result, the DiD between period 0 and 1 tends to be particularly large when we get an insignificant pre-trend。这就是通过平行趋势检验而造成的 additional statistic distortions,这也会导致无法估计出真实的,有效的处理效应。

2. Possible Diagonostic Tool

根据这篇文章的思想,作者做了一个 pretrends R package。在一定程度上,可以帮助研究者检验上述提到的两个 pre-trend test 的问题是否很严重。下面为大家展示 pretrends R package 的具体做法,以及关键结果的解释。

2.1 Pretrends R Package 代码

# install.packages("devtools") 
devtools::install_github("jonathandroth/pretrends")

# load the package
library(pretrends)

#Load the coefficients, covariance matrix, and time periods
beta <- pretrends::HeAndWangResults$beta
sigma <- pretrends::HeAndWangResults$sigma
tVec <- pretrends::HeAndWangResults$tVec
referencePeriod <- -1 #This is the omitted period in the regression
data.frame(t = tVec, beta = beta)
#>    t         beta
#> 1 -4  0.066703148
#> 2 -3 -0.007701792
#> 3 -2 -0.030769054
#> 4  0  0.084030658
#> 5  1  0.242441818
#> 6  2  0.219878986
#> 7  3  0.191092536

pretrend R 包主要有两个功能。第一个主要功能是它可以帮你算出一条你假设的可能的线性 pre-trend 的斜率,并且你可以设定这条线性 pre-trend 能被 pre-trend test 检测出来的 power。

#Compute slope that gives us 50% power
slope50 <-
slope_for_power(sigma = sigma,
                targetPower = 0.5,
                tVec = tVec,
                referencePeriod = referencePeriod)
slope50
#> [1] 0.05205532

第二个主要功能是可以直观的画图和给出三个 power analysis 的指标。

pretrendsResults <- 
  pretrends(betahat = beta, 
            sigma = sigma, 
            tVec = tVec, 
            referencePeriod = referencePeriod,
            deltatrue = slope50 * (tVec - referencePeriod))

pretrendsResults$event_plot 
# 画出下图,event-study plot基础上,加上了刚刚你算出来的给定 pre-trend test power的一条线性趋势。

df_power 将展示三个有关的 power 统计量。

  • Power: The probability that we would find a significant pre-trend under the hypothesized pre-trend. 该值是我们之前自己设定好的,在上面的例子里 power = 0.5。
  • Bayes Factor: The ratio of the probability of "passing" the pre-test under the hypothesized trend relative to under parallel trends. 该值一般会小于 1, 因为一般更容易通过 zero pre-trend 检验。
  • Likelihood Ratio: The ratio of the likelihood of the observed coefficients under the hypothesized trend relative to under parallel trends.
pretrendsResults$df_power
#>       Power Bayes.Factor Likelihood.Ratio
#> 1 0.5002036     0.568873        0.1057885

Hypothesized trend 并不局限于线性形式,根据你的研究对象,你也可以假设存在二次函数形式的 pre-trend。 R 代码操作如下:

  quadraticPretrend <-
  pretrends(betahat = beta, 
            sigma = sigma, 
            tVec = tVec, 
            referencePeriod = referencePeriod,
            deltatrue = 0.024 * (tVec - referencePeriod)^2)

quadraticPretrend$event_plot_pretest

2.2 Pretrends R Package 优缺点

优点:

  • 简单可视化,可以呈现在原有的 event-study plot 上面呈现你的 hypothesized trend。直观判断 hypothesized trend 是否合理。
  • 只需要在原有研究习惯上,多做个检验,不需要很大的研究方法改变。

缺点:

  • Power 总是小于 1 的,无法保证政策系数的无偏。
  • 需要研究者根据自己文章的研究对象,以及相关的经济学研究背景,来自己判断一条 typothesized trend。这可能不易做到。

3. 结语

在之前的 DID 研究范式中,研究者非常依赖于是否可以通过平行趋势检验。如果没有通过,则可能会放弃这篇文章的想法。Roth 的这篇文章提醒我们注意考察,平行趋势检验的 power 是否足够强相比于 hypothesized trend 的检验。而且在 Roth 的另一篇文章 "An Honest Approach to Parallel Trends",直接建议研究者们不再做平行趋势检验,而是进行一个 formal sensitivity analysis。

4. 参考资料

  • Roth, Jonathan. "Pretest with Caution: Event-Study Estimates after Testing for Parallel Trends." American Economic Review: Insights 4, no. 3 (2022): 305-22. -PDF-
  • Rambachan, Ashesh, and Jonathan Roth. "A More Credible Approach to Parallel Trends." Unpublished manuscript, Harvard University (2019). -PDF-
  • Roth, Jonathan. "Testing and Sensitivity Analysis for Violations of Paralle Trends". Lecture notes (2021) -PDF-
  • Roth, Jonathan. Pretrends R Package -Link-

5. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 趋势, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,700+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxhsongbl 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh