Как получить групповые ошибки в правильном месте на графике с накоплением динамита в ggplot? - PullRequest
0 голосов
/ 29 января 2020

У меня есть набор данных, для которого я хочу построить среднее значение и пределы достоверности на графике динамита (я знаю о недостатках графиков динамита, но я работаю в корпоративной среде, где простая сводная статистика часто более полезна, чем представление распределение.) Я рассчитал сводную статистику перед построением графика следующим образом:

library(gmodels)

lci <- function(data) {
  as.numeric(ci(data)[2])
}

uci <- function(data) {
  as.numeric(ci(data)[3])
}

ID <- seq(1:140)
avg_outcome <- c(rnorm(100, 100, 20), rnorm(40, 60, 30))
avg_outcome[avg_outcome<0] <- 0
group <- c( rep("Red", 100), rep("Blue", 40) )
area <- c(rep("North", 50),rep("South", 10), rep("West", 15), rep("East", 25), rep("North", 15), rep("South", 5), rep("East", 20))

reprex <- data.frame(ID, avg_outcome, group, area)

reprex_avg <- reprex %>%
  group_by(group, area) %>%
  summarise_if(is.numeric, funs(mean, lci, uci)) 

Но я не могу понять, как заставить столбцы ошибок успешно складываться таким образом, как столбцы:

ggplot(reprex_avg, aes(x=area, fill=group, y=avg_outcome_mean, ymin=avg_outcome_lci, ymax=avg_outcome_uci)) +
  geom_col(color="black") +
  geom_errorbar()

дает:

graph 1

Я пытался явно установить положение, например

ggplot(reprex_avg, aes(x=area, fill=group, y=avg_outcome_mean, ymin=avg_outcome_lci, ymax=avg_outcome_uci)) +
  geom_col(color="black", position=position_stack(0.5)) +
  #geom_errorbar() +
  #geom_errorbar(aes(group=group)) + # this does nothing
  #geom_errorbar(aes(group=group, linetype=group)) + # different linetypes but still not stacked
  geom_errorbar(aes(group=group, linetype=group), position=position_stack(0.5)) +
  geom_hline(yintercept=0) +
  theme_bw()

, что дает:

graph2

вместе с предупреждением:

Warning message:
Stacking not well defined when not anchored on the axis 

Что я не совсем понимаю, так как я установил эстетику для обеих осей.

Я знаю, что мог бы обойти это, используя уклоненный динамитный график или огранку по группам, но в этом случае я бы предпочел стек, потому что в моем реальном наборе данных много разных областей, поэтому уклонение выглядело бы путая а также потому, что меньшая группа присутствует только для небольшого их подмножества, поэтому огранка может привести к большому количеству неиспользуемого пространства.

Кто-нибудь знает, как я могу успешно складывать панели ошибок?

1 Ответ

0 голосов
/ 29 января 2020

Я нашел, что это "решено" здесь: Как складывать бары ошибок в столбчатом графике с накоплением, используя geom_errorbar?

, и интерпретировать это довольно сложно: https://github.com/tidyverse/ggplot2/issues/1079

Надеюсь, это поможет!

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