問題
在多重比較后如何用R代碼實(shí)現(xiàn)顯著性的自動(dòng)
標(biāo)記,?以下R包都具有該功能,,可自行百度檢索:ggsignif
package,、ggpubr
package,、ggstatsplot
package,、rcompanion
package
rcompanion
我比較熟悉rcompanion
package中的cldList()
功能進(jìn)行顯著性標(biāo)記,今天就先講講這個(gè),。
?cldlist
要注意的一點(diǎn)是:標(biāo)字母法,,一般應(yīng)該從均值或者中位數(shù)最大的一組開始標(biāo),而這個(gè)cldList()
并不是默認(rèn)對(duì)其排序,,因而在作圖前需自己排個(gè)序
示例
mpg {ggplot2}
,加載ggplot2之后就可直接調(diào)用(我并沒有仔細(xì)看其含義,,僅做示例??,感興趣的可自行查看幫助文檔,,本次選擇其中的連續(xù)變量hwy
和分類變量class
進(jìn)行演示)
ps:可按圖中所示進(jìn)行數(shù)據(jù)擺放,,每列為一個(gè)變量,行為樣本
- 篩選出所需數(shù)據(jù),,并修改列名為x和y,,先對(duì)整體進(jìn)行組間差異顯著性檢驗(yàn)
library(car)
library(rcompanion)#引入`cldList()`功能
library(FSA)#引入`dunnTest()`功能
dat <- mpg[,c("class","hwy")]
colnames(dat) <- c("x","y")
# 殘差正態(tài)性檢驗(yàn)
mod1 <- lm(y~x,data = dat)
shapiro.test(resid(mod1))
#方差齊性檢驗(yàn)
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),],#對(duì)數(shù)據(jù)進(jìn)行排序
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")#合并成一個(gè)數(shù)據(jù)框
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"))
其余方法,后續(xù)再寫吧??