
Пост-хок парные сравнения - очень распространенная часть повседневной работы исследователя данных. Всякий раз, когда мы проводим ANOVA или непараметрическое тестирование с более чем двумя группами, это неизбежно.
В какой-то момент вы захотите получить красивую визуализацию того, что является значимым, а что нет. Возможно, с p-значениями, написанными на графике. Тогда вы можете придумать какую-нибудь собственную функцию, которая будет выполнять эту работу. Или вы можете найти ggpubr пакет как простое решение. И здесь возникает ловушка. Обычный код, приведенный в качестве примера, не дает p-значений с поправкой на множественное сравнение! Допустим, у вас есть некоторый ответ y и 4 группы A, B, C, D, и вы хотите сравнить y в других группах с y в контрольной группе A. Тогда в итоге вы получите код следующего вида:
библиотека(tidyverse)
библиотека(rstatix)
библиотека(ggpubr)
библиотека(ggplot2)
my_comparisons <- list( c("A", "B"), c("A", "C"), c("A", "D"))
ggboxplot(data, x = "grouping.variable", y = "your.response",
palette = "jco",fill="grouping.variable",order=c("A", "B", "C", "D"),
legend="right")+
stat_compare_means(comparisons = my_comparisons, label.y = c(0.4, 0.5, 0.6),method="wilcox.test",p.adjust.method = "bonferroni")+
labs(y="Y-ответ",x="Некоторая группирующая переменная здесь",fill="Группы")
И график, который НЕ имеет скорректированных p-значений!

Правильный код следующий:
stat.test %
wilcox_test(your.response ~ grouping.variable,ref.group = "A") %>%
adjust_pvalue() %>%
add_significance("p.adj")
stat.test
stat.test % add_y_position()
ggboxplot(data, x = "grouping.variable", y = "your.response",
palette = "jco",fill="grouping.variable",order=c("A", "B", "C", "D"),
legend="right")+stat_pvalue_manual(stat.test, label = "p.adj", tip.length = 0.01)+
labs(y="Ответ Y",x="Здесь какая-то группирующая переменная",fill="Группы")

Конечно, выше приведен пример с непараметрическим тестом Вилкоксона, но пакет предлагает также t-тест. Если вы хотите сравнить "все со всем", а не только с группой A, то просто удалите ref.group = "A" из кода:
stat.test %
wilcox_test(your.response ~ grouping.variable) %>%
adjust_pvalue() %>%
add_significance("p.adj")
stat.test
stat.test % add_y_position()
ggboxplot(data, x = "grouping.variable", y = "your.response",
palette = "jco",fill="grouping.variable",order=c("A", "B", "C", "D"),
legend="right")+stat_pvalue_manual(stat.test, label = "p.adj", tip.length = 0.01)+
labs(y="Ответ Y",x="Здесь какая-то группирующая переменная",fill="Группы")
И вы получите:

Обратите внимание, что приведенный выше метод корректировки больше не является методом Бонферрони. Это Holm, метод по умолчанию, реализованный в R. Веселитесь!