Stata 如何绘制带误差棒和文本注释的柱状图

昨天有个培训班的小伙伴在会员群里问了这样一个问题:

请问这种均值比较并带有显著性和置信区间的图 Stata 怎么画出来呢?

这个图由三部分组成:bar、rcap 和 标签(散点),作为演示,下面我使用 Stata 自带的 auto 数据集演示绘制类似这种图的方法。

首先把 auto.dta 数据读取:

clear all
sysuse auto, clear

假如我们想展示 foreign 和 rep78 两个变量的分组均值和均值的区间估计:

collapse (mean) price_mean = price (sd) price_sd = price, by(foreign rep78)
gen ul = price_mean + 1.96 * price_sd
gen ll = price_mean - 1.96 * price_sd

egen x = group(foreign rep78)
replace x = x + 1 if foreign

x 变量就是稍后用来作为 x 轴的变量,给 foreign == 1 的观测值 +1 是为了把国产车和进口车的柱子分开。

这样我们就准备好了数据,然后就可以绘图了:

tw bar price_mean x, barwidth(0.8) || ///
rcap ul ll x || ///
sc ul x, mlab(price_mean) m(i) mlabpos(12) ||, ///
xla(1 "1" 2 "2" 3 `""3" "Domestic""' 4 "4" 5 "5" 7 "3" 8 `""4" " " "Foreign" "' 9 "5") ///
scheme(plotplain) xti("") yti("Price") leg(off)

当然也可以添加表示显著性的小星星,程序会稍微复杂一点,大家可以自行尝试下。上面的代码中 scheme(plotplain) 表示使用 plotplain 主题,这一主题可以使用 ssc install blindschemes 命令安装。

点击这里跳转到 RStata 短书平台获取附件:Stata 如何绘制带误差棒和文本注释的柱状图

评论