基于DID回归的Event Study:coefplot绘图报错求助
问题排查与修正方案
核心错误原因
报错estimation result diff_from_mean not found的本质是**coefplot工具的使用逻辑完全错误**:coefplot是用来可视化回归模型的系数估计值,而非直接调用数据集中的变量。你直接传入生成的diff_from_mean变量,它会误认为这是一个存储的回归估计结果名称,自然找不到对应内容。
此外,当前的回归设定xtreg prop_firms treated_post##c.year, fe并非标准事件研究模型,无法输出各相对年份的处理效应,根本达不到你要展示年度平均处理效应的目标。
修正后的完整代码
* 设定面板数据结构 xtset county_id year * 生成相对时间变量:rel_year = 当前年份 - 政策实施年份sbdcopen gen rel_year = year - sbdcopen * 生成相对时间虚拟变量(排除基准组rel_year=-1,避免多重共线性) forvalues y = -6(1)6 { // 这里假设相对时间范围是政策前6年到后6年,可根据你的数据调整 gen rel_`y' = (rel_year == `y') } * 运行固定效应回归:控制个体+年份固定效应,纳入所有相对时间虚拟变量 xtreg prop_firms rel_* i.year, fe * 存储回归结果 estimates store event_study * 绘制标准事件研究图 coefplot event_study, keep(rel_*) /// xline(0, lcolor(red)) /// 政策实施当年(rel_year=0)画红色竖线标记 ylabel(, angle(horizontal)) /// y轴标签水平显示,提升可读性 xlabel(-6 "-6" -5 "-5" -4 "-4" -3 "-3" -2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3" 4 "4" 5 "5" 6 "6") /// ytitle("处理组vs对照组房产企业数量差值") /// xtitle("相对政策实施年份") /// title("事件研究:商业法对房产企业数量的年度处理效应") /// legend(off) /// 仅一组系数,无需图例 addplot(line @b @at, lcolor(blue) lwidth(medium)) // 用折线连接系数点,清晰展示趋势
关键修正点说明
- 重构事件研究模型:通过
rel_year生成相对政策实施的年份变量,再逐个生成对应虚拟变量,回归时纳入这些虚拟变量,才能得到每个相对年份的处理效应系数。 - 正确调用
coefplot:基于存储的回归结果event_study,用keep(rel_*)筛选出相对时间虚拟变量的系数,这才是coefplot的正确使用方式。 - 完善固定效应控制:加入
i.year控制年份固定效应,消除时间趋势对结果的干扰,保证估计结果的可靠性。
内容的提问来源于stack exchange,提问作者econ_grad12345
相关产品推荐
相关产品推荐

