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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:51:13