我有一个包含几个变量的数据集,如下所示:
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()
在这一点上,我正在努力解决两件事:
有没有办法让条形图并排排列而不按组分面?看起来不错,但我希望它们是一个单独的情节,而不是 3 个并排的情节
如何在图表上注释事后测试的比较?我已经看到有几个函数允许执行单独的测试(例如
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 等进行比较。