0

我有一个包含几个变量的数据集,如下所示:

    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) 和一个随机因子(物种,示例数据集中未显示)。

在拟合和检查模型后,我使用包 emmeans 计算了 ls 均值:

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

并进行了事后测试:

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()

这会产生这样的情节: 条形图

在这一点上,我正在努力解决两件事:

  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"))
    

但这将每个干扰(P,T,C)的 B 和 M(竞争对手)值汇集在一起​​​​。在这种情况下,我实际上想比较 P、T 和 C 中的 B 和 M。或者更好的是,我如何指定我想在哪些条之间显示事后的结果?例如,我想将 ATB 与 ETB 等进行比较。

4

0 回答 0