отображать значимость нескольких t-тестов/сравнений на одном графике ggplot2

Я пытаюсь создать график, который отображает значения для 3 отдельных t-тестов для разных результатов. Я пытаюсь использовать функцию stat_compare_means из ggpubr, но постоянно получаю следующую ошибку: Computation failed in `stat_signif()`: missing value where TRUE/FALSE needed. Это та же ошибка, что и Добавить значения P для сравнения внутри групповой диаграммы но мой случай гораздо проще. Есть ли способ исправить это?

Пример кода ниже

require(tidyverse)
require(ggplot2)
require(ggpubr)

condition <- c("a", "a", "a", "a", "a", "b", "b", "b", "b", "b")
outcome_1 <- c(5,4,4,3,5,2,3,4,5,3)
outcome_2 <- c(4,3,3,2,5,4,5,3,2,4)
outcome_3 <- c(1,2,3,3,2,4,4,5,1,2)

df <- data.frame(condition, outcome_1, outcome_2, outcome_3)

df_means <- df %>%
  select(condition, outcome_1, outcome_2, outcome_3)

gg_means <- melt(df_means, id = "condition")

#dodge <- position_dodge(width = 0.5)

ggplot(gg_means, aes(x = reorder(variable, -value), y = value, fill = factor(condition))) + 
  stat_summary(fun = mean, geom = "bar", position = position_dodge(width = 0.8), width = 0.75) +
  stat_summary(fun.data = mean_cl_boot, geom = "errorbar",
               colour="grey70", position=position_dodge(width = 0.8), width =.25) +
  stat_compare_means(aes(group=condition), 
                     label = "p.signif", 
                     method="t.test", 
                     comparisons = (list(c("a", "b")))) + 
  scale_fill_brewer(palette = "Paired") +
  scale_y_continuous(breaks = seq(0,5,by = 1), limits = c(0,5), expand = c(0,0))

Ниже приведено изображение вывода:

Вот изображение вывода

По сути, я хочу отобразить p-значение t-теста (в идеале это U-критерий Манна-Уитни) для каждого результата между условиями a и b.


person becbot    schedule 19.01.2021    source источник
comment
Я действительно не уверен, но я подозреваю, что проблема связана с comparisons, где предоставлены a и b, но ваша ось X - это variable, поэтому сравнения, которые он ищет, будут чем-то вроде ваших результатов или индексом (1 , 2 или 3 для исходов 1, 2 и 3). Попробуйте просто удалить comparisons... из stat_compare_means... и добавить label.y = 4.5, чтобы ваши результаты были видны. Кажется, это обеспечит подходящую группировку для сравнений...   -  person Ben    schedule 19.01.2021
comment
Спасибо за предложение! Я отредактировал код так, чтобы синтаксис stat_compare_means выглядел как ` stat_compare_means(aes(group=condition), label = p.signif, method=t.test, label.y = 4.5) + `, и он больше не отображает ошибку Computation failed in stat_signif(): missing value where TRUE/FALSE needed, но он все еще не показывает значения p.   -  person becbot    schedule 20.01.2021
comment
Показывает ли он NS для несущественного значения?   -  person Ben    schedule 20.01.2021
comment
Попробуйте p.format вместо p.signif   -  person Ben    schedule 20.01.2021
comment
ах да, я только что видел, что это так. Есть ли способ отобразить точные значения?   -  person becbot    schedule 20.01.2021
comment
это сработало! большое спасибо! :)   -  person becbot    schedule 20.01.2021