Ошибка пакета ggsignif stat_signif требует следующей отсутствующей эстетики: y - PullRequest
0 голосов
/ 21 февраля 2019

Это придуманный пример моих данных:

x <- c("Control", "Case", "Case", "Case", "Control", "Control", "Control", "Case", "Case", "Case")
y <- c("Dead", "Dead", "Dead", "Alive", "Alive", "Dead", "Dead", "Dead", "Alive", "Dead")

Я пытаюсь представить эти данные в виде гистограммы, а затем указать статистически значимую разницу в соотношении живых и мертвыхпациенты между двумя экспериментальными группами (случаи и контроль).Я выполнил критерий хи-квадрат Пирсона, и значение p равно 4.674e-06.

Это мой код для графика:

library(ggsignif)

ggplot(data, aes(x = data$x,
             fill = data$y)) + 
geom_bar(aes(y = stat(count/sum(count))), position = position_dodge(0.9)) + 
theme(plot.title = element_text(hjust = 0.5)) +
ylim(c(0, 0.4)) +
labs(x = NULL, y = "Proportion", fill = NULL) +
scale_x_discrete(labels = c("Control", "Case")) +
geom_signif(comparisons = list(c("Control", "Case"), map_signif_level = TRUE))

Но тогда я получаю:

Error: stat_signif requires the following missing aesthetics: y

Может кто-нибудь сказать мне, почему это происходит и как я могу это решить?

Спасибо

1 Ответ

0 голосов
/ 21 февраля 2019

Как указано в сообщении об ошибке, geom_signif требует y эстетики, а вы не указали ничего.

Либо переместите y = stat(count/sum(count)) из geom_bar в глобальную эстетику, либо добавьтеэто к эстетике geom_signif.

Далее исправьте свою эстетику: вместо data$x и data$y используйте x и y.Кроме того, у вас есть ошибка в geom_signif: map_signif_level = TRUE должен быть вне comparisons.

Наконец, geom_signif, похоже, не в состоянии работать сКомпьютерная статистика в эстетике.Таким образом, вам нужно вычислить эту статистику заранее, например, с помощью dplyr:

data %>%
    group_by(x) %>%
    count(y) %>%
    mutate(Freq = n / sum(n)) %>%
    ggplot() +
    aes(x, Freq, fill = y) +
    geom_col(position = position_dodge(0.9)) +
    geom_signif(
        comparisons = list(c("Control", "Case")),
        map_signif_level = TRUE
    )
...