5

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 の対応する位置が表されます。ひげによって。

望ましいプロット:

ここに画像の説明を入力

説明。 ここに画像の説明を入力

max(Y) に対応する x の値 = 6.7 左のボックスに対応する x の値 = 6.7 - 1、ボックスの右 = 6.7 - 1 ひげの左側に対応する x の値 = 6.7 - 2、ひげの右側 = 6.7 - 2

4

1 に答える 1

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)

ここに画像の説明を入力

于 2012-02-18T19:03:13.523 に答える