在R中显示多个置信区间

3

我有一个数据框,其中每一行对应于参数的置信区间上限和下限。如果有n行,则有n个变量。有两列,一列是下置信区间限制“lower”,另一列是“upper”限制。行名称对应于变量名称。类似于这样:

      lower  upper  
y1      7.923  9.22
y2      7.105  8.74 
y3      8.185  9.54 
y4      8.157  9.51 

我想创建一个绘图,将这些置信区间显示为条形图,最好在每个端点处加上挂耳。

如果有人能告诉我一个好的方法来完成这个任务,我会非常感激!

谢谢 PS

4个回答

7

lattice 中的 bwplot 可以制作箱线图:

library(lattice)
bwplot(lower+upper~var, data=dat)

要了解更多详情,请查看 ?bwplot?lattice

enter image description here


通常,您可以通过让绘图函数为您汇总数据来充分利用 R 的全部功能。例如:

dat <- data.frame(
  var <- sample(paste("y", 1:4, sep=""), 100, replace=TRUE),
  val <- rnorm(100)
  )

plot(val~factor(var), data=dat, col="cyan")

enter image description here


谢谢!上面的第一个图看起来就像我想要的,但是我没能让它工作。在你的代码示例中,“var”是什么意思:bwplot(lower+upper~var, data=dat)? - LeelaSella
@P Sellaz var是一个因子构造,用于表示数据来自哪里(来自y1、y2、y3、y4)。在你的情况下,这将是行名称。 - Roman Luštrik
抱歉,我仍然无法解决这个问题。 bwplot(lower+upper~y1, data=cidf) 在eval(expr, envir, enclos)中出现错误:找不到对象“y1”。 - LeelaSella
y1是你的数据框中的列名吗? - Andrie
不,列名是“lower”和“upper”。y1、y2、y3、y4等是对应于参数名称的行名。两列的值是我想要绘制的参数置信区间的上限和下限。我已经将df转换为矩阵并使用boxplot()使其正常工作,但如果可能的话,我想让它在bwplot和/或ggplot中正常工作。谢谢。 - LeelaSella

3

这里是通常的ggplot2解决方案。还有其他几种可用于此类图的geoms。例如,尝试将其替换为geom_crossbar。欲了解更多详情,请访问ggplot2网页

cidf = data.frame(
   var   = c('y1', 'y2', 'y3', 'y4'),
   lower = c(7.923, 7.105, 8.185, 8.157),
   upper = c(9.22, 8.74, 9.54, 9.51)
)

require(ggplot2)
p1 <- ggplot(cidf) + 
  geom_errorbar(aes(x = var, ymin = lower, ymax = upper), width = 0.2)

谢谢。听起来很有前途,但是根据我对其他答案的评论,我不知道你示例代码中的“var”代表什么。例如,我有一个名为cidf的数据框,它有列“lower”和“upper”,每行都是我想要显示的区间。再次感谢。 - LeelaSella
啊,现在明白了。谢谢!所以我需要向数据框添加另一列 - 基本上是将行名称转换为因子,就像Roman Luštrik上面说的那样。抱歉我有点慢! - LeelaSella
我发现我可以直接使用x=row.names(cidf),而不需要创建一个新的列。 - LeelaSella

0

我已经找到了一种使用内置的箱线图命令来完成的方法。不过,我必须将数据框转换为矩阵:

ci <- as.matrix(cidf)
boxplot(ci[1,],ci[2,],ci[3,],ci[4,])

我仍然很想知道在ggplotbwplot中更好的方法,或任何其他相关建议。

附言


0

最后,我用ggplot找到了一个好的解决方案。感谢以上的回复。

p1 <- ggplot(cidf) +

geom_errorbar(aes(x = row.names(ciddf), ymin = lower, ymax = upper), width = 0.2) +

xlab("Variables") +

coord_flip() + opts(title = "Confidence intervals for Variables")

p1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接