You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在STATA中从TWFE系数图中移除事件年份?

事件研究系数图移除事件年份的Stata代码反馈

针对你要在异质性处理时点(1990-2018年县任意时点接受处理)的事件研究中移除系数图事件年份的需求,结合你提供的代码,给出如下专业反馈:

一、现有代码的核心问题

  1. 变量生成冗余:

    • 你生成了Hurr_Surface1-10和Hurr_Lead0-10,但实际仅用到前6期的滞后与领先变量,多余变量会占用不必要的内存,建议缩小循环范围至1/6和0/6。
    • 手动逐个生成MajLag和MajLead系列虚拟变量过于繁琐,完全可以用循环简化,减少重复代码出错概率。
  2. 系数图未实现“移除事件年份”需求:

    • 你当前仅修改了事件当年(MajLead0)的标签,但并未将其从系数图中剔除,需在coefplot选项中添加drop(MajLead0)来实现移除。
    • coeflabels中的变量顺序混乱,会导致x轴相对时点(-6到-1、1到6)排列无序(比如先显示0,再显示1-6,最后显示-1到-6),完全不符合事件研究图的阅读逻辑。
  3. 回归设定的潜在优化点:

    • 针对异质性处理时点的事件研究,更严谨的做法是先生成每个县的处理年份(如首次遭遇飓风的年份),再计算相对时间变量rel_year = year - treat_year,接着基于rel_year生成对应虚拟变量(排除基准组,比如rel_year==-1)。你当前手动生成滞后/领先变量的方式虽可行,但如果存在重复处理的情况,可能会导致变量定义偏差。

二、修正后的代码示例

1. 简化变量生成代码

xtset fips year

// 仅生成需要的6期滞后与领先变量
forvalues i = 1/6 {
    by fips (year), sort: gen Hurr_Surface`i' = L`i'.vmax_sust 
}
forvalues i = 0/6 {
    by fips (year), sort: gen Hurr_Lead`i' = F`i'.vmax_sust 
}

// 用循环批量生成飓风事件虚拟变量
forvalues i = 1/6 {
    by fips (year), sort: gen MajLag`i' = inrange(Hurr_Surface`i', 48, 299)
}
forvalues i = 0/6 {
    by fips (year), sort: gen MajLead`i' = inrange(Hurr_Lead`i', 48, 299)
}

2. 回归与系数图修正(移除事件年份+调整时点顺序)

// 按相对时点从远到近的顺序定义处理变量列表
local treat_vars MajLead6 MajLead5 MajLead4 MajLead3 MajLead2 MajLead1 MajLag1 MajLag2 MajLag3 MajLag4 MajLag5 MajLag6

local i = 1
foreach dep_var in `dep_vars' {
    qui xtreg `dep_var' `treat_vars' , fe vce(cluster fips)
    estimates store Wage_Reg`i'
    local i = `i' + 1
}

coefplot (Wage_Reg1, label("贫困率") pstyle(p4)) ///
, vertical drop(_cons MajLead0) // 移除常数项和事件当年的系数
yline(0) msize(1) msymbol(D) byopts(yrescale xrescale row(2)) ///
// 按x轴逻辑顺序设置时点标签
coeflabels(MajLead6 = "-6" ///
MajLead5 = "-5" ///
MajLead4 = "-4" ///
MajLead3 = "-3" ///
MajLead2 = "-2" ///
MajLead1 = "-1" ///
MajLag1 = "1" ///
MajLag2 = "2" ///
MajLag3 = "3" ///
MajLag4 = "4" ///
MajLag5 = "5" ///
MajLag6 = "6") ///
legend(off) xlabel(, angle(45)) xtitle({stSerif: 相对事件时点}, size(3) color(gs5)) ///
ylabel(, angle(45)) ytitle({stSerif: 系数}, size(3) color(gs5)) ///
subtitle(, size(3) margin(none) justification(center) color(gs5) bcolor(white) bmargin(top_bottom))

三、关键注意事项

  • 移除事件年份:drop(MajLead0)会直接从系数图中剔除事件当年的系数;如果仅想隐藏标签而非移除系数,可将coeflabels中MajLead0的标签设为空字符串。
  • 时点顺序:必须保证treat_vars中的变量顺序为从最远的领先期(-6)到最近的领先期(-1),再到最近的滞后期(1)到最远的滞后期(6),这样x轴才会呈现符合逻辑的事件前后效应变化。
  • 异质性处理时点适配:若你的“处理”定义为县首次遭遇飓风,建议先生成每个县的首次处理年份first_treat_year,再计算相对时间变量,以此生成虚拟变量,避免重复处理对结果的干扰。

内容的提问来源于stack exchange,提问作者Anupam Ghosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:35:00