Поместите p-значение в верхнюю часть гистограммы ggplot, используя stat_compare_means и facet_wrap, и выполните тест Тьюки для указанного сравнения c - PullRequest
2 голосов
/ 05 августа 2020

У меня есть два вопроса, связанных с выполнением статистики и добавлением p-значений в графики ggplot.

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

Я использую набор данных диафрагмы. Вот мой код.

iris
melt_iris <- melt(iris)

#set specific comparisons
my_comparison_iris <- list(c("setosa", "versicolor"), c("setosa", "virginica"))

#plot data
ggplot(data = melt_iris, aes(x = Species, y = value, fill = Species)) + 
   geom_bar(color = "black", stat = "summary", fun = "mean") +
   geom_point(size = 5) +
   scale_fill_manual(values = c("gray65", "deepskyblue1", "orange")) +
   scale_color_manual(values = c("darkslategray", "darkolivegreen", "darkslateblue", "deeppink4")) +
   theme_bw() +
   theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1),
         legend.position = "top",
         legend.title = element_text(face = "bold", size = 14),
         legend.text = element_text(size = 12),
         strip.text = element_text(size = 10, face = "bold"),
         legend.background = element_rect(size=.5, linetype="solid", color = "black"),
         legend.box = "vertical") +
   scale_y_continuous(expand = expansion(mult = c(0.05, 0.2))) +
   stat_compare_means(comparisons = my_comparison_iris) +
   stat_compare_means(method = "anova", label.y.npc = "top") + 
   facet_wrap(~ variable, ncol = 4, scales = "free_y") 

iris_barplot

Во-первых, я не могу получить значение p-anova для печати в верхней части графика. Я использую facet_wrap, поэтому не могу указать конкретное значение c y. Я пробовал использовать label.y.np c = "top" или = 1, что, как я думал, поместит метку вверху каждой оси. Я также добавил пустое пространство с помощью scale_y_continuous и expand, но это не помогло. Как я могу переместить значение p anova в верхнюю часть каждого графика?

Во-вторых, мне неясно, какой метод по умолчанию используется для stat_compare_means, и у меня проблемы с поиском списка допустимых вариантов. Я думаю, что то, как я это написал, это парный t-тест или тест Краскала-Уоллиса, который не корректируется для нескольких тестов. Что я хотел бы сделать, предполагая, что общая анова показывает значимость, так это выполнить несколько парных сравнений с использованием теста Тьюки. Это вариант?

Спасибо за любую помощь, которую вы можете оказать.

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