在r中添加了带有置信区间(box和wisker plot)的xyplot

时间:2012-02-18 15:40:15

标签: r graph boxplot confidence-interval

我想在XYplot中添加99%和95%的置信区间。

以下是数据:

X <- 1:20
Y <- c(0.5, 1.4, 2.3, 3.4, 4.5,
      3.3, 3.0, 2.1, 1.5, 0,
      0, 3.4, 4.5, 6.7, 5.3, 2.8,
      0.5, 3.4, 3.5,  3.7)
mydata <- data.frame (X, Y)

我想确定Y的最大值,相应的X值是框和晶须图中的中位数。每当Y的值下降1点(左或右)是99%置信区间(将在框内)并且每当Y下降到2(左和右)时,x中的相应位置将被表示由胡须。

所需的情节:

enter image description here

解释。 enter image description here

相应的x值到max(Y)= 6.7 相应的x值到框左= 6.7 - 1,右框= 6.7 - 1 相应的x值为晶须左= 6.7-2,晶须右= 6.7-2

1 个答案:

答案 0 :(得分:1)

以下情节应该让您入手。它使用矩形而不是bwplot,它也不进行插值。

创建数据:

library(ggplot2)

dat <- data.frame(
    x = 1:20,
    y = c(0.5, 1.4, 2.3, 3.4, 4.5, 3.3, 3.0, 2.1, 1.5, 0, 0, 3.4, 4.5, 6.7, 5.3, 2.8, 0.5, 3.4, 3.5,  3.7)
)

编写一个返回5个所需点的函数:

getRange <- function(x, a=1, b=2){
  maxy <- max(x)
  xMax <- which.max(x)
  x2 <- max(which(x[1:xMax] <= (maxy-a)))
  x1 <- max(which(x[1:x2] <= (maxy-b)))
  x3 <- xMax + min(which(x[-(1:xMax)] < (maxy+a)))
  x4 <- x3 + min(which(x[-(1:x3)] < (maxy+b)))
  data.frame(x1=x1, x2=x2, max=xMax, x3=x3, x4=x4)
}

获取范围值并绘制:

rr <- getRange(dat$y, 1, 3)

ggplot(dat, aes(x, y)) + geom_line() + geom_point() +
    geom_rect(data=rr, aes(xmin=x2, xmax=x3, NULL, NULL), 
              ymin=-Inf, ymax=Inf, fill="blue", alpha=0.25) +
    geom_rect(data=rr, aes(xmin=x1, xmax=x4, NULL, NULL), 
              ymin=-Inf, ymax=Inf, fill="blue", alpha=0.25)

enter image description here