不少小伙伴遇到过这样的问题,做完回归之后想展示下回归系数和置信区间,绘制一幅类似这样的图:

用 Stata 如何实现呢?
最近一个小伙伴的问题是这样的:
就是 logit 回归后求出边际效应,进而想画个这个图。
我随便举个例子:
webuse lbw, clear logit low age lwt smoke ptl ht ui *> Iteration 0: log likelihood = -117.336 *> Iteration 1: log likelihood = -104.7002 *> Iteration 2: log likelihood = -104.39685 *> Iteration 3: log likelihood = -104.39591 *> Iteration 4: log likelihood = -104.39591 *> *> Logistic regression Number of obs = 189 *> LR chi2(6) = 25.88 *> Prob > chi2 = 0.0002 *> Log likelihood = -104.39591 Pseudo R2 = 0.1103 *> *> ------------------------------------------------------------------------------ *> low | Coef. Std. Err. z P>|z| [95% Conf. Interval] *> -------------+---------------------------------------------------------------- *> age | -.0422544 .0345836 -1.22 0.222 -.110037 .0255281 *> lwt | -.0142885 .0066523 -2.15 0.032 -.0273267 -.0012502 *> smoke | .5506312 .3436293 1.60 0.109 -.1228697 1.224132 *> ptl | .5932548 .3484191 1.70 0.089 -.089634 1.276144 *> ht | 1.862491 .6862291 2.71 0.007 .5175064 3.207475 *> ui | .7367904 .4564882 1.61 0.107 -.15791 1.631491 *> _cons | 1.37896 1.088893 1.27 0.205 -.7552312 3.513151 *> ------------------------------------------------------------------------------
|
最快速的方法是我们可以使用 coefplot 命令,这个命令可以使用 ssc 安装:
然后就可以使用了:
coefplot, yti("变量") xti("系数估计值 + 95% 置信区间") /// xline(0)
|

绘制两组置信区间也没问题:
coefplot, yti("变量") xti("系数估计值 + 95% 置信区间") /// xline(0) levels(99 95)
|

这个命令还有很多拓展用法,详情可以参考其帮助文档。
更底层的方法是我们可以在回归之后将返回值中的矩阵转换为 dta 数据绘图:
webuse lbw, clear logit low age lwt smoke ptl ht ui ret list mat m = r(table) mat l m
clear input str10 var "age" "lwt" "smoke" "ptl" "ht" "ui" "_cons" end
gen b = . gen ll = . gen ul = .
forval i = 1/7{ replace b = m[1, `i'] in `i' replace ll = m[5, `i'] in `i' replace ul = m[6, `i'] in `i' }
encode var, gen(varn)
tw rspike ll ul varn, horizontal || sc varn b, leg(off) m(o) yla(, val) yti("变量") xti("系数估计值 + 95% 置信区间") xline(0)
|

虽然过程麻烦了点,但是掌握了你就可以随心所欲处理各种 Stata 命令运行得到的返回值了。
点击这里跳转到 RStata 短书平台获取附件:Stata:如何展示回归系数和置信区间
评论