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

Stata中如何在coefplot上存储并绘制回归系数的置信区间

在Stata中存储回归系数及置信区间并绘制带置信区间的折线图

步骤1:同时存储系数与置信区间上下限

每次跑完目标回归后,除了存储系数,还要计算并存储95%置信区间的上下限(以t分布为例,大样本可替换为z分布):

// 假设这是你针对某一时间段的回归代码,替换为实际模型
reg y x1 x2 x3

// 存储系数
local coef1 = _b[x1]
// 提取回归自由度与标准误
local df = e(df_r)
local se1 = _se[x1]
// 计算95%置信区间上下限
local lci1 = `coef1' - invttail(`df', 0.025)*`se1'
local uci1 = `coef1' + invttail(`df', 0.025)*`se1'

重复上述操作,依次得到coef2-coef6、lci2-lci6、uci2-uci6(对应6个时间区间)。

步骤2:构建包含系数与置信区间的矩阵

创建一个3行6列的矩阵,分别存放系数、置信区间下限、置信区间上限:

matrix Z = (`coef1',`coef2',`coef3',`coef4',`coef5',`coef6') \ ///
           (`lci1',`lci2',`lci3',`lci4',`lci5',`lci6') \ ///
           (`uci1',`uci2',`uci3',`uci4',`uci5',`uci6')

步骤3:用coefplot绘制带置信区间的折线图

调用coefplot时,指定矩阵第一行为点估计值,第二、三行为置信区间的上下限,同时移除原代码中的noci参数:

coefplot (matrix(Z[1,]), ci((Z[2,]) (Z[3,])) ciopts(recast(rcap)) ///
          vertical recast(connected) xlabel(1 "P1" 2 "P2" 3 "P3" 4 "P4" 5 "P5" 6 "P6") ///
          yline(0) name(Fig000) xtitle(Time intervals) ytitle(Coefficient))

优化:用循环简化重复操作

如果6个时间区间可通过循环遍历(比如用标记变量区分时间段),可以用循环自动完成存储与矩阵构建:

// 初始化3行6列的空矩阵
matrix Z = J(3,6,0)

forvalues i=1/6 {
    // 替换为针对第i个时间段的回归代码,比如按period变量筛选
    reg y x1 x2 x3 if period == `i'
    // 存入系数与置信区间
    matrix Z[1,`i'] = _b[x1]
    local df = e(df_r)
    matrix Z[2,`i'] = _b[x1] - invttail(`df', 0.025)*_se[x1]
    matrix Z[3,`i'] = _b[x1] + invttail(`df', 0.025)*_se[x1]
}

// 绘图代码同步骤3
coefplot (matrix(Z[1,]), ci((Z[2,]) (Z[3,])) ciopts(recast(rcap)) ///
          vertical recast(connected) xlabel(1 "P1" 2 "P2" 3 "P3" 4 "P4" 5 "P5" 6 "P6") ///
          yline(0) name(Fig000) xtitle(Time intervals) ytitle(Coefficient))

注意事项

  • 若使用z分布(大样本场景),将invttail(df', 0.025)替换为invnormal(0.975)`即可
  • 非OLS模型(如probit、logit)需调整置信区间的计算逻辑,匹配对应模型的分布特征

内容的提问来源于stack exchange,提问作者Joshua Scott

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:25:08