r - 使用 ggplot 绘制方差和置信区间

标签 r ggplot2 statistics data.table variance

考虑标准数据集 mtcars 中的变量 gearqsec

require(ggplot2)
ggplot(mtcars, aes(x=gear, y=qsec)) + geom_point()

enter image description here

我正在尝试用误差条绘制组内方差(对于每个组)。

这是我目前的解决方案(对误差条使用 95% 的置信区间):

require(data.table)
dtmtcars = data.table(mtcars)[,list(var.qsec = var(qsec)),by=list(gear)]
samplesize = sapply(unique(mtcars$gear), function(x) nrow(subset(mtcars, gear == x)))
high.EB =  ((samplesize-1)*dtmtcars$var.qsec)/qchisq(0.025,n-1)
low.EB = ((samplesize-1)*dtmtcars$var.qsec)/qchisq(0.975,n-1)
ggplot(dtmtcars, aes(x=gear, y=var.qsec)) + geom_point() + geom_errorbar(aes(ymin=low.EB, ymax=high.EB))

enter image description here

有没有更简单的解决方案(比如 ggplot2 中已经实现的函数)?如果不是,请确认我的解决方案是否正确?

最佳答案

使用stat_summary。请注意,当文档说 fun.data 应该“将数据框作为输入”时,文档是错误的。

ggplot(mtcars, aes(x=gear, y=qsec)) + 
  stat_summary(fun.y = var, geom = "point") +
  stat_summary(fun.data = function(y) {
    data.frame(y = var(y),
               ymin = ((length(y)-1)*var(y))/qchisq(0.025,length(y)-1),
               ymax = ((length(y)-1)*var(y))/qchisq(0.975,length(y)-1))
  }, geom = "errorbar") +
  ylab("var.qsec")

resulting plot

关于r - 使用 ggplot 绘制方差和置信区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28534690/

相关文章:

r - 计算 r 中的相对 RMSE

r - 使用 R 选择第一个非 NA 值

r - 在 R 中拆分包含多个分隔符的字符串

r - 如何从 r 中的多个列表 append 到列表?

r - 向facet_wrap中的每个方面添加标题

google-analytics - 使用谷歌分析在一个网站上跟踪多家公司

r - 线性插值时间序列中的缺失值

r - 是否可以在 ggplot2 中使用 facet_grid() 仅在一个子图中显示 annotation_logtics()?

r - 如何显示趋势线的图例?

r - 如何获得 R 多项回归中预期结果百分比的置信区间?