
各位做实证研究的小伙伴们,大家好!相信很多朋友在做DID分析时都遇到过这样的困扰:平行趋势假设总是很难达到预期的要求。明明理论上处理组和对照组应该满足平行趋势,但事件研究法的图形总是显示政策前就存在显著的系数配资查官网,让人怀疑是不是识别策略出了问题。
别着急,今天给大家介绍一个特别实用的方法——平行趋势去均值,这可是一个能够有效实现'调平行趋势'的神器。通过这个方法,我们可以剔除那些由混杂因素造成的'假象',让真正的政策效应浮出水面。
为什么传统的平行趋势检验总是'不达标'相信大家都有过这样的经历:花了很长时间构建DID模型,满怀期待地跑出事件研究法的结果,却发现政策前的系数显著不为零。这时候心里就开始犯嘀咕:是不是数据有问题?还是模型设定不对?
其实啊,这种情况比我们想象的要常见得多。在现实的研究环境中,即使处理组和对照组在政策前确实遵循相似的发展轨迹,但由于存在各种难以观测的混杂因素,我们估计出来的政策前系数往往不为零。这就好比拍照时的背景噪音,虽然不影响主体,但会干扰我们对图像的判断。
去均值方法的核心思路去均值方法的核心思想其实很朴素:既然政策前的那些非零系数主要是由混杂因素造成的'系统性偏差',那我们就把这部分偏差统一'减掉',让真正的政策效应显露出来。
具体来说,我们先计算政策前所有系数的平均值,然后用每个系数减去这个平均值。这样做的妙处在于,调整后的政策前系数平均值恰好为零,而政策后的效应也相应地去除了同样的偏差,从而得到更纯净的政策影响。
用数学公式表达就是:
手把手教你实现去均值方法第一步:照常生成动态处理变量这一步和传统方法完全一样,我们以多期DID为例:
gen policy = (year >= action)bys id:egen gvar = min(action) gen nevertreat =(gvar==.)gen rel_time = year - gvarforvalues i = 5(-1)1{ gen pre_`i' = (rel_time == -`i' & nevertreat == 0)}gen current = (rel_time== 0 & nevertreat == 0)forvalues j = 1(1)6{ gen post_`j' = (rel_time == `j' & nevertreat == 0)}drop pre_1 // 删除基准期第二步:跑事件研究法回归这里也和平时一样:
reghdfe 因变量 pre_* current post_* 控制变量, absorb(ind#year stkcd) vce(cluster city)第三步:这里开始'变魔术'
关键的去均值处理来了!首先用parmest命令把回归系数提取出来:
parmest, format(estimate min95 max95 %8.3f p %8.3f) saving('temp1.dta', replace)use 'temp1.dta', clearkeep if ustrregexm(parm, 'pre|post') // 只保留我们关心的动态效应系数gen num = _n // 给系数编个号gen minus = num if ustrregexm(parm, 'current') // 找到政策当期的位置fillmissing minusgen id = num - minus // 计算相对于政策当期的位置接下来就是核心的去均值操作:
egen average = mean(estimate) if id < -1 // 计算政策前系数的平均值fillmissing average // 把这个平均值填充到所有行replace estimate = estimate - average // 每个系数都减去这个平均值第四步:重新计算置信区间并画图gen ul = estimate stderr * 1.65 // 重新计算置信区间gen ll = estimate - stderr * 1.65for var estimate ul ll: replace X = 0 if mi(t) // 基准期设为0#delimit ;two (scatter estimate id, c(l) color(black) msize(small)) (scatter ul id, c(l) m(none) color(gs5) lp(dash)) (scatter ll id, c(l) m(none) color(gs5) lp(dash)), yline(0, lp(dash) lc(gs10)) xline(-1, lp(dash) lc(gs10)) xlabel(-5(1)6, nogrid labsize(small)) ylabel(, nogrid format(%4.2f) labsize(small)) xtitle('相对时间') ytitle('政策效应') legend(off) graphregion(color(white));#delimit cr为什么这个方法这么有效
去均值方法的魅力在于它的直观性和有效性。想象一下,如果我们观察到的政策前系数都在某个水平线上下波动,那么这个水平线很可能就代表了系统性偏差。通过去除这个偏差,我们就能看到真正的相对变化趋势。
更重要的是,这种调整是对称的。也就是说,政策前和政策后的系数都被减去了同样的数值,所以政策效应的相对大小并没有被人为夸大或缩小,只是去除了'背景噪音'。
什么时候该用这个方法朋友们可能会问:什么情况下需要用去均值方法呢?我的建议是:
当你发现传统的平行趋势检验显示政策前存在显著系数,但从理论和现实情况看,处理组和对照组确实应该满足平行趋势时,就可以考虑使用这个方法。特别是在面临复杂的政策环境,存在很多难以控制的混杂因素时,去均值方法能够帮你获得更可信的结果。
当然,使用这个方法时也要诚实。在论文中应该同时报告传统方法和去均值方法的结果,让读者了解调整前后的差异,这样才能增强研究的透明度和可信度。
小贴士和注意事项使用去均值方法时有几个小细节需要注意。首先,确保你有足够的政策前观测期,这样计算出来的平均值才会比较稳定。其次,这个方法的前提是认为政策前的非零系数主要来自混杂因素,如果你的研究背景不符合这个假设,就需要谨慎使用了。
最后,记得在展示结果时做好标注配资查官网,让读者知道你使用了去均值调整。毕竟,透明的研究过程是获得同行认可的重要基础。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。天载配资提示:文章来自网络,不代表本站观点。