условное p-значение для множественных сравнений в ggplot

#r #ggplot2

#r #ggplot2

Вопрос:

Мне была запрошена следующая форма для отображения p-значений на графиках:

  • звездочки для определенных диапазонов p (*, **, ***, ***)
  • фактическое значение p (просто число) для 0.09> p> 0.05
  • нет p-значения для p > 0.09

Мне удалось заставить его работать для сравнения только двух групп, используя этот код:

 ggplot(ToothGrowth, aes(x=supp, y=len)) 
  geom_boxplot() 
  stat_compare_means(mapping=aes(x=supp, y=len, label = ifelse(p > 0.05 amp; p < 0.09, 
                                                               as.numeric(..p.format..), as.character(p.signif))), 
                     method="t.test", paired=FALSE,  
                     symnum.args=list(cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1),
                                      symbols = c("****", "***", "**", "*", "")))
 

рабочий график с простым сравнением

Теперь у меня есть несколько графиков с несколькими сравнениями. Там я использую comparisons = list(c(1,2), c(1,3), c(2,3))

К сожалению, описанное выше решение больше не работает, как только я добавляю аргумент сравнения.

 ggplot(ToothGrowth, aes(x=supp, y=len)) 
  geom_boxplot() 
  stat_compare_means(mapping=aes(x=supp, y=len, label = ifelse(p > 0.05 amp; p < 0.09, 
                                                               as.numeric(..p.format..), as.character(p.signif))), 
                     method="t.test", paired=FALSE, comparisons = list(c(1,2)),
                     symnum.args=list(cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1),
                                      symbols = c("****", "***", "**", "*", "")))
 

не работает график с аргументом сравнения

В идеале я также хотел бы удалять скобки всякий раз, когда p> 0.09.

Я ценю любую помощь, в противном случае мне нужно будет вручную вводить только те сравнения, которые соответствуют критериям.