在多重比较后如何用R代码实现显著性的自动
标记?以下R包都具有该功能,可自行百度检索:ggsignif
package、ggpubr
package、ggstatsplot
package、rcompanion
package
我比较熟悉rcompanion
package中的cldList()
功能进行显著性标记,今天就先讲讲这个。
?cldlist
cldList()
并不是默认对其排序,因而在作图前需自己排个序mpg {ggplot2}
,加载ggplot2之后就可直接调用(我并没有仔细看其含义,仅做示例😂,感兴趣的可自行查看帮助文档,本次选择其中的连续变量hwy
和分类变量class
进行演示)
ps:可按图中所示进行数据摆放,每列为一个变量,行为样本
library(car)
library(rcompanion)#引入`cldList()`功能
library(FSA)#引入`dunnTest()`功能
dat <- mpg[,c("class","hwy")]
colnames(dat) <- c("x","y")
# 残差正态性检验
mod1 <- lm(y~x,data = dat)
shapiro.test(resid(mod1))
#方差齐性检验
leveneTest(y~x,data = dat)
不满足单因素方差分析的前提条件,选用
Kruskal-Wallis rank sum test
kruskal.test(y~x,data = dat)#差异显著
5.多重比较及可视化
#Dunn (1964) Kruskal-Wallis multiple comparison
#p-values adjusted with the Bonferroni method.
mc <- dunnTest(y~x,data =dat,method ="bonferroni")
#Compact letter display
cld <- cldList(P.adj~Comparison,
data = mc$res[order(mc$res$Z,decreasing = TRUE),],#对数据进行排序
threshold = 0.05 )
library(dplyr)#引入`top_n()`功能
m <- dat %>% group_by(x) %>% top_n(1,y)#获得每一组的最大值
cld <- merge(cld,m,by.x = "Group",by.y = "x")#合并成一个数据框
cld
#绘图
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()+
labs(x="class",y="hwy"))
其余方法,后续再写吧🤣
联系客服