上篇(自动显著性标记(1))提到通过
rcompanion
package中的cldList()
功能进行显著性标记,但示例的多重比较是用的dunnTest()
,如果使用其他的多重比较方法呢,如何实现?
可以先看下上一篇推文中多重比较所获得的结果:
关键步骤:为实现从组内平均值或中位数最大的组开始字母标记,只需将mc$res
排序后至于cldList()
中就可获得其对应的字母标记,在这里可直接根据两组均值差(即 Z 值)的大小进行降序排序,具体实现方法:mc$res[order(mc$res$Z,decreasing = TRUE),]
再看一下cldList()
中所需的参数:
cldList(
formula = NULL,
data = NULL,
comparison = NULL,
p.value = NULL,
threshold = 0.05,
print.comp = FALSE,
remove.space = TRUE,
remove.equal = TRUE,
remove.zero = TRUE,
swap.colon = TRUE,
swap.vs = FALSE,
...
)
较为关键的参数就是formula
、data
、comparison
和threshold
其中尤其要注意comparison
的形式:
A vector of text describing comparisons, with each element in a form similar to "Treat.A - Treat.B = 0". Spaces and "=" and "0" are removed by default. It also changes ":" to "-", and so can use text in the form e.g. "Treat.A : Treat.B". (见帮助文档)
大概就是A-B = 0(或者 A:B=0、A:B、A-B)类似的形式都可以,会实现自动转换,如果是其他形式的需要提前自己整理
下面以TukeyHSD()
的多重比较结果为例进行展示:
TukeyHSD()
输出结果TukeyHSD(aov(y~x,data = dat))
comparison
形式与上文所提是一致的,只需稍加整理即可。#先将所需结果提取出来
mc <- TukeyHSD(aov(y~x,data = dat))[[1]] %>% data.frame()
行名就是我们所需的comparison
部分,因此,进一步添加分组变量
mc$Comparison <- rownames(mc)
字母标记
cld <- cldList(p.adj~Comparison,
data=mc[order(mc$diff,decreasing = TRUE),],
threshold = 0.05 ) ### Compact letter display
剩余步骤与上一篇推文就是一样的了,不再赘述,直接放代码了🏄
m <- dat %>% group_by(x) %>% top_n(1,y)#获得每一组的最大值
cld <- merge(cld,m,by.x = "Group",by.y = "x")#合并成一个数据框
#绘图
library(ggplot2)
library(ggsci)
(p <- ggplot(data = dat,aes(x=x,y=y))+
geom_boxplot(aes(fill=x),color="black")+#以箱形图展示,按分类变量x填充不同的颜色
geom_text(data=cld,
aes(x=Group,y=y*1.3,label=Letter),#让字母位置比每组最大值高1.3倍,避免重叠
size=5,color="red",fontface="bold")+
scale_fill_jama(alpha = 0.8)+#修改填充颜色
theme_bw()+theme(text = element_text(size = 18,face = "bold"))+
labs(x="class",y="hwy"))
所得箱形图为:
至于其他的多重比较或者多因素显著性标记的思路基本差不多,大家自己探索吧👾
新开公众号🎉🎉🎉,欢迎大家多多转发及提建议👻👻👻
联系客服