Значит барплот с доверительными интервалами? - PullRequest
0 голосов
/ 31 октября 2019

У меня большой набор данных, где у меня есть переменная Q1 с 7 вариантами ответа / значения и две группы (One и Two).

 Q1<- c(6,4,2,4,7,1,4,7,4,5,4,4,2,6,1)
 Group<- c(One, Two, One, Two,Two, Two, One, One, One, One, Two, One, One, Two, Two)    

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

enter image description here

df1<- filter(df, Q1!="-99",df$Group=="One"|df$Group=="Two") 
ggplot(data = df1, aes(x = Q1)) +
geom_bar(aes(fill = df1$Group), position = "dodge", stat="summary", fun.y="mean") + labs(title="Graph Title")

Когда я запускаю это, я получаю следующую ошибку:

Error: stat_summary requires the following missing aesthetics: y

Любые идеи приветствуются!

Ответы [ 2 ]

1 голос
/ 31 октября 2019

что-то вроде этого

`ggplot(df.df, aes(x=category, color=group)) + 
  stat_summary(aes(y = value),
             fun.y = mean, na.rm = TRUE,
             geom = "bar",
             size = 3) + 
stat_summary(aes(y = value),
           fun.data = mean_se, na.rm = TRUE,
           geom = "errorbar",
           width = 0.2) `
0 голосов
/ 01 ноября 2019

Вот пример. Вам необходимо предварительно вычислить CI:

library(dplyr)
library(ggplot2)

set.seed(123)

df <- data.frame(g = c(rep("A",10),rep("B",10),rep("C",10)),
           val = c(rnorm(10,100,5), rnorm(10,200,10), rnorm(10,300,50)))

df <- df %>% group_by(g) %>% summarise(m = mean(val),
                                       stdv = sd(val))

ggplot(df, aes(g,m,fill=g)) + 
  geom_bar(stat="identity", color="black", 
           position=position_dodge()) +
  geom_errorbar(aes(ymin=m-stdv, ymax=m+stdv), width=.2,
                position=position_dodge(.9)) 

Выход

Output

ОБНОВЛЕНИЕ

df <- data.frame(
  Q1 = c(6,4,2,4,7,1,4,7,4,5,4,4,2,6,1),
  Group = sample(c("One","Two"), 15, TRUE),
  stringsAsFactors = FALSE)

df <- df %>% group_by(Group) %>% summarise(m = mean(Q1),
                                       stdv = sd(Q1))

ggplot(df, aes(Group,m,fill=Group)) + 
  geom_bar(stat="identity", color="black", 
           position=position_dodge()) +
  geom_errorbar(aes(ymin=m-stdv, ymax=m+stdv), width=.2,
                position=position_dodge(.9))
...