Как я могу показать значимые сравнения из теста Tukey post-hoc на гистограмме ggplot2?

#r #ggplot2 #bar-chart #significance #lsmeans

#r #ggplot2 #гистограмма #значимость #lsmeans

Вопрос:

У меня есть набор данных с несколькими переменными, который выглядит следующим образом:

     Competitor Disturbance  Group     MT       CVt
1           M           P       A   17.416667  63.39274
2           M           P       A   11.055556  91.32450
3           M           C       N   13.928571  78.11438
4           B           C       N   13.500000  61.20542
5           B           T       E   12.700000  48.11819
6           B           T       E   27.250000  63.44356
  

Я составил GLMM (mMT1) с 3 предикторами (конкурент, нарушение и группа), один ответ (MT) и один случайный фактор (вид, не показан в примере набора данных).

После подгонки и проверки модели я вычислил средние значения ls с помощью пакета emmeans:

 ls_MT <- emmeans(mMT1, pairwise~Disturbance*Competitor*Group, type="response")
  

И выполнил post-hoc тест:

 post_MT  <- emmeans(mMT1, transform="response", component="cond",list(~Disturbance|Competitor|Group,~Competitor|Group|Disturbance,~Group|Disturbance|Competitor))
pairs(post_MT)
  

Наконец, я создал гистограмму с помощью ggplot2, основанную на средних значениях ls и se

 ggplot(ls_MT, aes(x=Disturbance, fill=Competitor, y=response)) 
  geom_bar(stat="identity",position=position_dodge()) 
  facet_grid(cols=vars(Group)) labs(y = "log10(MT)") 
  scale_color_manual(values=c("#2ca02c","#d62728")) 
  geom_errorbar(aes(ymin=ls_MT$lower, ymax=ls_MT$upper), width=.2,
                position=position_dodge(.9)) 
  theme_light()
  

Который создает такой график:
Гистограмма

На данный момент я борюсь с 2 вещами:

  1. Есть ли способ, чтобы гистограммы располагались рядом друг с другом без огранки по группам? Выглядит нормально, но я бы предпочел, чтобы они были одним графиком, а не 3 рядом

  2. Как я могу аннотировать на графике сравнения из пост-специального теста? Я видел, что несколько функций позволяют выполнять отдельные тесты (например stat_compare_means ) и отображать эти результаты, но я не могу найти решение для пост-специального теста Tukey. Другим решением может быть добавление

       geom_signif(map_signif_level = c(" * * * "=0.001, " * * "=0.01, "*"=0.05), comparisons = list(c("P","C"),c("P","T"),c("C","T"))
      

но это объединяет значения B и M (конкурента) для каждого нарушения (P, T, C). В этом случае я бы действительно хотел сравнить B и M в пределах каждого из P, T и C. Или, что еще лучше, как я могу указать, между какими столбцами я хотел бы показать результаты post-hoc? Например, я хотел бы сравнить A-T-B с E-T-B и т. Д.

Комментарии:

1. На ваш первый вопрос, почему бы вам просто не удалить вызов фасетирования из вашего ggplot? Также ваш ylab говорит, что это журнал, но, похоже, он не преобразован в журнал.

2. Спасибо за ответ. Если я удалю вызов фасетирования, то мои группы будут объединены вместе, и в итоге я получу 6 баров (каждый с 3 барами ошибок) вместо 18, как на графике, который я показал. Метка оси y неверна, спасибо, что указали на это