Отображение нескольких доверительных интервалов в R - PullRequest
3 голосов
/ 06 октября 2011

У меня есть кадр данных со строками, соответствующими верхнему и нижнему пределам доверительных интервалов для параметра. Если есть 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

Ответы [ 4 ]

6 голосов
/ 06 октября 2011

bwplot в lattice создает графики для ящиков и усов:

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

Подробнее см. ?bwplot и ?lattice.

enter image description here


В общем, вы можете использовать полную мощность R, позволяя функции plot суммировать данные для вас.Например:

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

2 голосов
/ 06 октября 2011

Вот обычное 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)
0 голосов
/ 07 октября 2011

Наконец, у меня есть хорошее решение с 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
0 голосов
/ 07 октября 2011

Мне удалось найти один способ сделать это с помощью встроенной команды boxplot.Мне пришлось изменить фрейм данных на матрицу, хотя:

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

Мне все равно было бы интересно узнать более хороший способ сделать это в ggplot или bwplot, или любой другой соответствующий совет.

PS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...