如何从R中的ggplot2统计摘要中提取置信区间的值?

时间:2019-01-10 23:21:44

标签: r ggplot2 bootstrap-modal confidence-interval

我有两种密度的计数数据(级别:1和3)。我已经在R中使用summary_stat函数绘制了具有引导约束置信区间的原始数据。我想从该图中提取置信区间的上限和下限。我该如何实现?

data <- data.frame(set = c(1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 4, 4), 
                   density = c(1, 3, 3, 1, 3, 1, 1, 1, 3, 3, 1, 3), 
                   counts = c(100, 2, 3, 76, 33, 12, 44, 13, 54, 36, 65, 1), 
                   ratio = c(1, 2, 3, 4, 1, 2, 3, 4, 5, 6, 90, 1))
data$density <- as.factor(data$density)

pd <- position_dodge(0.82)
library(ggplot2)
ggplot(data, aes(x=density, y=counts, fill=density)) + 
   theme_bw() +  
   stat_summary(geom="bar", fun.y=mean, position = "dodge") + 
   stat_summary(geom="errorbar", fun.data=mean_cl_boot, width = 0.1, 
                size = 1.2, col = "grey57", position = pd) + 
   ylab("Counts")

1 个答案:

答案 0 :(得分:1)

您可以使用ggplot_build()
该功能为您提供了两条信息:数据帧列表(每一层一个)和一个面板对象,其中包含有关轴限制,中断等的所有信息。

p <- ggplot(data, aes(x=density, y=counts, fill=density)) + 
  theme_bw() +  
  stat_summary(geom="bar", fun.y=mean, position = "dodge") + 
  stat_summary(geom="errorbar", fun.data=mean_cl_boot, width = 0.1, 
               size = 1.2, col = "grey57", position = pd) + 
  ylab("Counts")

plot_info <- ggplot_build(p)$`data`[[2]]

对于您而言,所有相关信息都存储在ymin中第二个列表的ymax$data列中。

 # density 1 error bounds
 density1_error_min <- plot_info[1, 'ymin']
 density1_error_max <- plot_info[1, 'ymax']

 # density 3 error bounds
 density3_error_min <- plot_info[2, 'ymin']
 density3_error_max <- plot_info[2, 'ymax']