所有计量经济圈方法论
丛的code程序
, 宏微观
数据库和各种软
件都放在社群里.欢迎到计量经济圈社群交流访问
.
不过,在讲今天主题之前,还是先接着上一日的内容,把
处理效应异质性稳健的估计量(非二元处理变量)和DID中添加协变量相关问题的示例和代码列出来。
处理效应异质性稳健的估计量(非二元处理变量)
关于非二元处理变量,包括单时点非二元处理变量(对应正文表4 )与多时点非二元处理变量(对应正文表5)。其中,单时点非二元处理变量的估计通过Lu & Yu (2015) 为例来展示,多时点非二元处理变量的估计通过Favara & Imbs (2015) 来展示,这两种情形均是基于工具变量两步法思路计算ATT(de Chaisemartin & D’Haultfoeuille, 2024a),主要涉及did_multiplegt_dyn 这一命令,常用格式、静态模型与动态模型估计的相关内容与A.2 第(4)部分一致。笔者在do 文档(见非二元处理变量-单时点.do 的第94-162 行和非二元处理变量-多时点.do 的第181-414 行)呈现了该估计量的工具变量两步法思路。以Favara & Imbs (2015) 为例,该文处理变量为0-4 的多时点非二元处理变量。基于该处理变量生成0-1 工具变量之后,先估计工具变量对结果变量的影响(图A6a),再估计工具变量对处理变量的影响(图A6b),最后根据每个相对时期处理组观测值数量占全部时期处理组测值数量的比例进行加权,得到ATT。
协变量
现有文献关于控制变量的添加形式主要包括直接添加随时间变化的控制变量、添加不随时间变化控制变量或前定变量(处理发生前的控制变量值,如研究样本期初值),与时间虚拟变量或线性时间趋势的交互项。可以基于研究主题,通过did_multiplegt_dyn、csdid、eventstudyinteract、did_imputation 四个命令的相关选项添加各种形式的控制变量避免模型误设。需要注意的是,部分命令(如did_multiplegt_dyn、csdid)不支持通过c.varname # i.year 添加控制变量,因此需要手动生成相关变量进行添加。
另外,当存在多个处理变量时(对应正文表6),为避免可能导致的“负权重”问题,可以基于STATA 命令did_multiplegt_old 进行估计。该命令的常用格式是:did_multiplegt_old Y G T D, robust_dynamic dynamic(#) placebo(#) controls(varlist) cluster(varname) breps(#) seed(#)与did_multiplegt_dyn 的格式十分类似。区别之处在于当进行动态模型估计时,需要添加选项robust_dynamic,以及effects(#) 此时由dynamic(#) 代替。另外,breps(#) 代表计算标准误时bootstrap 的重复次数,默认为50 次;seed(#) 代表设置bootstrap 估计时使用的种子,以方便结果复现。
当需要控制其他处理变量(othertreat)时,需要添加if_first_diff(fd_othertreat==0)、trends_nonparam(othertreat)、always_trends_nonparam 这三个选项(可见do 文档多个处理变量.do)。其中,fd_othertreat 为其他处理变量的一阶差分;if_first_diff(fd_othertreat==0) 代表估计时剔除其他处理变量一阶差分不为0 的观测值;trends_nonparam(othertreat) 代表估计量是基于其他处理变量(othertreat)相同的样本进行估计的加权平均值;trends_nonparam(othertreat) 和always_trends_nonparam 同时使用代表剔除其他处理变量(othertreat)相同的样本中,处理状态发生变化(switchers)且没有对应控制组的观测值进行估计。如果需要控制多个处理变量,可以先通过egen othertreats = group(othertreat1 othertreat2) 生成一个新变量,然后沿用上述思路进行估计。
由于21 世纪早期中国实施了国有企业改革与外资管制放松,属于中国加入WTO 的同期冲击。笔者以Lu & Yu (2015) 为例进行呈现使用did_multiplegt_old 控制处理变量的估计结果,并与TWFE 估计结果进行对比(图A7)。
今天的议题,相关内容:
关于平行趋势,1.
平行趋势检验, 事件研究图绘制, 安慰剂检验的保姆级程序指南!
2.
标准DID中的平行趋势检验,动态效应, 安慰剂检验, 预期效应教程
,3.
平行趋势通不过, 该采取什么方法来更好地满足平行趋势呢?
4.
平行趋势的敏感性检验, 结果能容忍违反多大程度的平行趋势
,5.
某经济学权威刊物上平行趋势怎么这样, 真给我看迷糊了! 到底如何对pre-trend检测, 讨论和处理呢?
6.
在平行趋势检验中对政策前后系列年份进行缩尾处理?
7.
三重差分DDD估计中平行趋势检验如何操作呢?
8.
2篇TOP5: 当前平行趋势检验方法有问题,新的平行趋势检验方法已经出现
,9.
前沿: 平行趋势没有通过却成功发在了AER上!
10.
只有4期数据, 为啥平行趋势检验时有6期呢? DID与连续变量交互系数如何解释?
11.
历史上首篇DID中修改平行趋势而被撤稿的TOP5文章!
11.
连续型DID也要被改造! 现成的平行趋势PT和TWFE估计都有问题, 时隔3年再次出发!
12
.
违反平行趋势就一定可怕吗? 事前趋势不平行是否会影响估计结果的稳健性?
13.
还是不行, pre-trend检验方法不行了, 新的平行趋势方式用起来!
平行趋势假设的检验
(1)事前趋势检验可靠性的诊断
这一诊断主要用到STATA 命令pretrends,该命令常用的常用格式是:pretrends power #.#, pre(#/#) post(#/#) pretrends, numpre(#) b(str) v(str) slope(real)第一行命令代表基于事前期间pre(#/#) 与事后期间post(#/#) 计算出有多大功效能发现的线性事前趋势。通常将power 设置为0.8,即80%(Cohen, 1988;Roth, 2022)。第二行命令代表基于回归估计结果与第一行命令得到的线性事前趋势斜率拟合出线性事前趋势存在情况下的动态效应估计。numpre(#) 代表事前期数的数量,b(str) 与v(str) 分别代表回归估计的系数矩阵与方差-协方差矩阵,slope(real) 代表第一行命令得到的线性事前趋势斜率。以Stevenson & Wolfers (2006) 数据为例,基于传统TWFE 回归,使用pretrends 进行诊断的相关命令与STATA 结果窗口主要内容显示如下:
其中,同名变量与前文定义一致。诊断顺序为:第一,先进行回归估计。第二,根据动态估计系数次序选择需要检测的时期,笔者选择事前第6 期至第2 期(次序为16-20),事后当期至第4 期(次序为21-25)为例,并选择功效为80%。可以得到80% 功效能够发现的线性事前趋势斜率是1.52451。第三,根据该斜率,结合第一步回归估计的系数矩阵与方差-协方差矩阵得到图A8。图中带有置信区间与深蓝色点的竖线为原始回归估计系数,红色实线为斜率是1.52451 的直线,蓝色虚线为假如不满足事前趋势,即存在斜率是1.52451 的线性事前趋势时预计的回归估计系数。如果预计的回归估计系数大部分落在原始回归估计系数的置信区间内,那么表明可能存在线性事前趋势,即不满足平行趋势假设。另外,pretrends 除了可以针对命令reghdfe 的回归估计结果进行检测外,针对渐进正态估计量的回归估计结果也可以检测,比如Callaway & Sant’Anna(2021) 与Sun & Abraham (2021) 估计量。
(2)稳健性和敏感性分析
这一分析主要用到STATA 命令honestdid,该命令常用的常用格式是:honestdid, pre(#) post(#) mvec(str) delta(str) l_vec(str) coefplot该命令主要基于事前估计,判断当平行趋势假设不满足时,事后估计结果是否保持稳健。其中,pre(#) 与post(#) 分别代表事前与事后期间,均可以设置1 个时期或多个时期。如果要对多个事后时期的整体处理效应进行分析,需添加选项l_vec(str)。比如对两个时期的平均处理效应进行分析,设置l_vec(0.5 \0.5)。当假设事后趋势是事前趋势的倍数时(相对幅度限制),设置mvec(str);当假设连续时期趋势差异的斜率变化不超过某个百分比时(平滑性限制),进一步添加delta(sd)。需要做图时,添加选项coefplot。以Stevenson & Wolfers (2006) 数据为例,基于传统TWFE 回归,假设事后趋势是事前趋势的倍数变化时,使用honestdid 进行诊断的相关命令与STATA 结果窗口主要内容显示如下:
同名变量与前文定义一致。笔者基于事前第6 期至第2 期(次序为16-20)判断事后第8 期(次序为29)系数估计的稳健性和敏感性。图A9中红线为事后第8 期估计系数的原始置信区间,后续蓝线分别为当事后趋势是事前趋势的0.5 倍、1 倍、1.5 倍与2 倍时,事后第8 期估计系数的置信区间。可以发现,当事后趋势是事前趋势0.5 倍时,事后第8 期系数就开始变为不显著。当假设连续时期趋势差异的斜率变化不超过某个百分比时,使用honestdid 进行诊断的相关命令与STATA 结果窗口主要内容显示如下。基于图A10可以发现,即使当连续时期间趋势差异的斜率变化为0.1% 时,事后第8 期系数依然显著。
重温一下平行趋势假设的检验
在实证分析中,常常通过动态回归模型(10)的估计结果来检验事前趋势,即对事前趋势估计参数𝛽𝑙 = 0 (𝑙 < 0) 的原假设进行假设检验。通常情况下,如果在回归模型(10)中,所有的𝛽𝑙(𝑙 < 0) 估计值均不显著不同于0,则研究者认为平行趋势假设是成立的。根据Sum & Abraham(2021) 的研究,二元交错处理变量中如果处理效应存在组间异质性,那么基于TWFE 回归模型得出的事前趋势参数将是有偏的。然而,即使在处理效应具有同质性的条件下,依赖事前趋势进行平行趋势检验也存在问题。
已有文献对此问题有了丰富讨论。简单来说,Roth (2022) 提出目前事件分析法存在检验功效的不足(Low Power) 等问题,提出了新的检测方法;Roth & Sant’Anna (2023) 指出,平行趋势假设对于变量形式的具有很高的敏感度;Rambachan & Roth (2023) 提出一些在平行趋势假设可能不满足的情况下可以进行的稳健性和敏感性的分析。接下来笔者将逐一介绍文献当中对事前趋势检验的局限性的讨论、检验可靠性的诊断以及稳健性和敏感性分析方法,结合实例和代码,以期为实证研究者提供指南。
(1)事前趋势检验的局限性
首先,Roth (2022) 认为,即使检验结果显示处理组和控制组在处理前的结果变量趋势是平行的,也不能保证处理后两者的趋势仍然平行。这意味着,仅通过检验事前趋势来推断事后趋势的方法本身存在一定的问题。Kahn-Lang & Lang (2020) 中提到一个例子:13 岁之前,男生和女生的身高变化趋势相对平行,但之后两者的差距逐渐扩大。如果要分析一个针对初中女生的健康政策的效果,使用男生作为控制组显然会导致估计结果有偏。这一点构成了对常用平行趋势检验的根本性挑战。之所以利用事前趋势来推断事后趋势,是因为后者在现实中往往无法直接观测;同时,这种方法的隐含假设是,不存在随时间变化并与接受处理条件相关的不可观测的混淆因素。
对此,实证研究者不仅可以检验其他可能的相关变量在接受处理时是否同样发生变化,更应结合研究背景和经济学理论深入讨论这一假设的合理性。毕竟,相较于仅依赖事前趋势检验的统计显著性,将经济学理论应用于具体情境以深入分析平行趋势假设可能遇到的问题,更有说服力。其次,文献当中指出,原假设为事前趋势估计参数等于0 的假设检验具有较低的检验功效(Bilinski & Hatfield, 2018; Freyaldenhoven et al., 2019; Kahn-Lang & Lang, 2020; Roth, 2022)。换言之,即使事前趋势存在差异,检验结果也可能无法检测出这一点。这是因为此类假设检验的原假设是不存在事前趋势差异,即平行趋势假设得到满足,因此只有在有显著证据时,平行趋势假设才会被认为不成立。这种检验将误判平行趋势假设不成立的概率(第一类错误) 控制在5% 以内(假设显著性水平为5%),但允许将不成立的平行趋势假设误判为成立的概率(第二类错误) 显著增加,从而降低了检测事前趋势存在的可能性。再次,以通过事前趋势检验为前提来进行双重差分估计可能引入样本选择偏误。简而言之,如果全样本存在事前趋势差异,但研究样本恰好满足事前平行趋势假设,则估计结果可能存在偏差。Roth (2022) 发现,这种样本选择偏误可能比平行趋势假设不满足导致的偏误更为严重。
最后,如果通过事前趋势检验发现平行趋势假设不成立,是否就应该停止研究?理论上,只要提高检验的精度(降低假设检验的显著性水平),总能拒绝平行趋势假设成立的原假设。然而,在给定的事前趋势估计和事后处理效应估计的情况下,特别是在事前趋势差异虽然显著,但其参数的估计量与事后处理效应的估计量相比差异较大时,研究者仍希望能对处理效应提出一些建议性的结论。
当前文献对这些问题进行了探讨,提出了新的检测方法来应对检测功效低的问题,并在平行趋势假设可能不满足的情况下提供了进行稳健性和敏感性分析的方法。出于实用性的角度考虑,笔者接下来详细分析Roth (2022) 和Rambachan & Roth (2023) 中的方法,因为他们能够很好地与前文提到的那些处理效应异质性稳健的估计量进行结合。
(2)事前趋势检验可靠性的诊断
Roth (2022) 提出了两种基于事件分析法的“功效检验”(Power Test)来估计结果。第一种方法是在给定一定的检验功效(通常为80%)的条件下,计算一个线性事前趋势的斜率。这个斜率代表了在存在此类线性事前趋势的情况下,事前趋势检验有80% 的概率能够成功检测到它,即检验的功效为80%。第二种方法是,在已知某种事前趋势存在的情况下,计算事前趋势检验的功效,并在事件分析图中绘制假设的事前趋势以及虽存在但未被当前事前趋势检验发现显著的事前趋势。如果这些假定的事前趋势能解释事件分析图中观察到的事前趋势(即落在事前趋势检验的置信区间内),则表明当前的事前趋势检验的功效较弱。这些方法帮助研究者评估当前的事前趋势检验是否有足够的检测功效。Roth (2022) 的方法可以通过STATA 命令和R 包pretrends 来实现。
(3) 稳健性和敏感性分析
然而,Roth (2022) 提到的方法主要是对事前趋势检验本身进行检验和改进,并没有直接对处理效应的估计提供较大的启发。接下来,笔者将探讨在事前趋势检验不支持平行趋势假设的情况下,如何对处理效应进行估计。Rambachan & Roth (2023) 提出可以通过事前趋势为处理效应提供边界估计。具体来说,这一方法的目的是,假设存在事后趋势但不超过事前趋势的
倍时,计算出处理效应的置信区间,并由此来判断处理效应对于违反平行趋势假设的稳健性。例如,如果研究者报告,处理效应为正的结论在
= 2 的情况下依然稳健,就意味着要推翻非零处理效应的结论,事后趋势需要达到事前趋势的两倍以上。这种表述清楚地说明了,为了得到当前的结论,对平行趋势假设的违反需要达到何种程度。Rambachan & Roth (2023建议实证研究者应根据具体情境选择适当的回归模型形式(线性或非线性),根据不同的
值报告稳健的置信区间,以及使处理效应评估不显著的
的最小值或临界值。Rambachan & Roth (2023) 的方法可以通过STATA 命令和R 包honestdid来实现。
关于多期DID或交叠DID: 1.
DID相关前沿问题“政策交错执行+堆叠DID+事件研究”, 附完整slides
,2.
交错(渐进)DID中, 用TWFE估计处理效应的问题, 及Bacon分解识别估计偏误
,3.
典范! 这篇AER在一图表里用了所有DID最新进展方法, 审稿人直接服了!
4.
最新Sun和Abraham(2020)和TWFE估计多期或交错DID并绘图展示结果!详细解读code!
5.
多期DID或渐进DID或交叠DID, 最新Stata执行命令整理如下供大家学习
,6.
多期DID前沿方法大讨论, e.g., 进入-退出型DID, 异质性和动态性处理效应DID, 基期选择问题等
,7.
交叠DID中平行趋势检验, 事件研究图绘制, 安慰剂检验的保姆级程序指南!
8.
欣慰! 营养午餐计划终于登上TOP5! 交叠DID+异质性稳健DID!
9.
用事件研究法开展政策评估的过程, 手把手教学文章!
10.
从双重差分法到事件研究法, 双重差分滥用与需要注意的问题
,11.
系统梳理DID最新进展: 从多期DID的潜在问题到当前主流解决方法和代码!
12.
标准DID中的平行趋势检验,动态效应, 安慰剂检验, 预期效应教程
,13.
DID从经典到前沿方法的保姆级教程, 释放最完整数据和代码!
关于因果推断书籍
:1.
一本最新因果推断书籍, 包括了机器学习因果推断方法, 学习主流和前沿方法
,2.
社会经济政策的评估计量经济学, 提供书籍和数据和程序文件
,3.
诺奖得主Angrist的因果推断课程文献读物单子再次更新了, 还提供了其他三门课程
,4.
全面且前沿的因果推断课程, 提供视频, 课件, 书籍和经典文献
,5.
从网页上直接复制代码的因果推断书籍出现了, 学会主流方法成效极快
,6.
推荐书籍"用R软件做应用因果分析", 有需要的学者可以自行下载!
7.
哪本因果推断书籍最好?我们给你整理好了这个书单!
8.
“不一样”的因果推断书籍, 很多观点让我们能恍然大悟, 涵盖了不少其他书里没有的因果推断方法!
9.
搞懂因果推断中内生性问题解决方法必读的书籍和文献已搜集好!
10.
一位“诗人”教授写了本因果推断书籍, 现在可以直接下载PDF参看!
11.
使用R软件学习计量经济学方法三本书籍推荐
,12.
机器学习与Econometrics的书籍推荐, 值得拥有的经典
,13.
史上最全的因果识别经典前沿书籍, 仅此一份
,14.
用R语言做Econometrics的书籍推荐, 值得拥有的经典
,15.
Stata学习的书籍和材料大放送, 以火力全开的势头
,16.
USA经管商博士最狂热崇拜的计量书籍震撼出炉
,17.
推荐使用Python语言做因果推断前沿方法的书籍
,18.
一些比较常见的因果推断书籍25本汇总, 很多可以直接下载PDF
,19.
推荐一本专攻处理效应分析的书籍, 包括主流政策评估计量方法
下面这些短链接文章属于合集,可以收藏起来阅读,不然以后都找不到了。
7年,计量经济圈近2000篇不重类计量文章,
可直接在公众号菜单栏搜索任何计量相关问题
,
Econometrics Circle