Stata中xtdidregress后estat trendplots显示置信区间方法求助
Stata中xtdidregress后estat trendplots无法显示置信区间的解决思路
问题描述
使用Stata的xtdidregress完成双重差分(DID)分析后,执行estat trendplots绘制平行趋势检验图时,无法显示置信区间,尝试官方文档中的ci_plot选项无效,寻求可行解决方法。
示例代码
webuse hospdd xtset hospital xtdidregress (satis)(procedure), group(hospital) time(month) estat trendplots
解决思路
提取统计量手动绘图
先通过estat trendplots, coeflegend获取趋势项的系数标注,再利用coefplot工具直接绘制带置信区间的图:// 先运行原DID命令 webuse hospdd xtset hospital xtdidregress (satis)(procedure), group(hospital) time(month) // 保存估计结果 estimates store did_trend // 用coefplot绘制带置信区间的趋势图 coefplot did_trend, keep(*.procedure) vertical /// xlabel(, angle(45)) /// ciopts(lcolor(navy)) /// title("平行趋势检验(带95%置信区间)") /// yline(0, lcolor(red))也可以通过
postfile将系数、标准误、置信区间上下限导出到新数据集,再用twoway组合折线和置信区间范围,实现更灵活的样式自定义。使用第三方扩展命令
安装Stata用户贡献的DID专用绘图命令,比如eventstudyplot或did_plot,这类命令通常默认支持显示置信区间,且配置更灵活:ssc install eventstudyplot // 运行DID后直接调用 eventstudyplot, eform ci直接提取矩阵结果计算置信区间
xtdidregress运行后,系数矩阵e(b)和方差矩阵e(V)中包含所有趋势项的统计信息,可手动提取并计算95%置信区间(系数±1.96×标准误),构建绘图数据集后用twoway line+twoway rline绘制:// 提取趋势项系数和标准误 matrix b = e(b) matrix V = e(V) // 提取对应趋势项的位置(根据变量名调整) local trend_vars : colnames e(b) // 计算置信区间并存储到数据集中 clear set obs `=colsof(b)' gen varname = colnames(b) gen coef = b[1,_n] gen se = sqrt(V[_n,_n]) gen ci_low = coef - 1.96*se gen ci_high = coef + 1.96*se // 筛选出趋势项并绘图 keep if strmatch(varname, "*procedure*") gen time = _n twoway rline ci_high ci_low time, lcolor(gray%50) || /// line coef time, lcolor(navy) lwidth(medium) /// yline(0, lcolor(red)) /// title("平行趋势检验(带置信区间)")
内容的提问来源于stack exchange,提问作者cyberalcito
相关产品推荐
相关产品推荐

