【问题标题】:Display several confidence intervals in R在 R 中显示几个置信区间
【发布时间】:2011-10-06 19:29:21
【问题描述】:

我有一个数据框,其中的行对应于参数的置信区间的上限和下限。如果有 n 行,则有 n 个变量。有两列,一列具有置信区间下限“下限”,另一列表示“上限”。行名称对应于变量名称。像这样的

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

我想创建一个图以将这些置信区间显示为条形,最好在每一端都有法兰。

如果有人能告诉我这样做的好方法,我将不胜感激!

谢谢 PS

【问题讨论】:

    标签: r


    【解决方案1】:

    bwplot in lattice 制作盒须图:

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

    请参阅?bwplot?lattice 了解更多详情。


    一般来说,您可以通过让 plot 函数为您汇总数据来使用 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")
    

    【讨论】:

    • 谢谢!上面的第一个情节看起来像我想要的,但我无法让它工作。您的示例代码中的“var”是什么: bwplot(lower+upper~var, data=dat) ?
    • @P Sellaz var 是一个用于表示数据来自何处(来自 y1、y2、y3、y4)的因子。在您的情况下,这将是行名。
    • 抱歉,我仍然遇到问题。 bwplot(lower+upper~y1, data=cidf) eval 中的错误(expr, envir, enclos) : object 'y1' not found
    • y1 是 data.frame 中列的名称吗?
    • 谢谢。不,列名是“lower”和“upper”。 y1,y2,y3,y4 等是与参数名称对应的行名称。两列的值是我希望绘制的参数置信区间的上限和下限。在将 df 转换为矩阵后,我能够使用 boxplot() 使其工作,但如果可能的话,我想让它与 bwplot 和/或 ggplot 一起工作。
    【解决方案2】:

    这是惯用的ggplot2 解决方案。还有其他几个geoms 可用于这种情节。例如尝试替换为geom_crossbar。更多详情,请访问the ggplot2 webpage

    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 的数据框,它有“下”和“上”列,每一行都是我要显示的间隔。再次感谢。
    • 啊,现在明白了。谢谢 !所以我需要在数据框中添加另一列 - 基本上是将行名转换为因子,正如上面 Roman Luštrik 所说的那样。抱歉有点慢!
    • 我发现我可以只使用 x=row.names(cidf) 而不是创建一个新列。
    【解决方案3】:

    最后,我有一个很好的 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
    

    【讨论】:

      【解决方案4】:

      我已经设法找到一种使用内置 boxplot 命令的方法。我不得不将数据框更改为矩阵:

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

      我仍然有兴趣在ggplotbwplot 或任何其他相关建议中了解更好的方法。

      PS

      【讨论】:

        猜你喜欢
        • 2013-10-09
        • 2012-09-13
        • 2019-04-26
        • 1970-01-01
        • 1970-01-01
        • 2021-02-05
        • 2021-04-08
        相关资源
        最近更新 更多