子非鱼和熊

V1

2022/04/24阅读:18主题:橙心

显著性自动标记(1)

问题

多重比较后如何用R代码实现显著性的自动标记?

以下R包都具有该功能,可自行百度检索: ggsignifpackage、ggpubrpackage、ggstatsplotpackage和rcompanionpackage

rcompanion

我比较熟悉rcompanionpackage中的cldList()功能进行显著性标记,今天就先讲讲这个(大神请自动忽略🐶 )。

  • 查看帮助文档

?cldlist

要注意的一点是:标字母法,一般应该从均值或者中位数最大的一组开始标,而这个cldList()并不是默认对其排序,因而在作图前需自己排个序

示例

  1. 示例数据:

mpg {ggplot2},加载ggplot2之后就可直接调用(我并没有仔细看其含义,仅做示例😂,感兴趣的可自行查看帮助文档,本次选择其中的连续变量hwy和分类变量class进行演示)

  1. 数据具体情况
数据具体含义
数据具体含义
所选变量
所选变量

ps:可按图中所示进行数据摆放,每列为一个变量,行为样本

  1. 筛选出所需数据,并修改列名为xy,先对整体进行组间差异显著性检验
dat <- mpg[,c("class","hwy")]
colnames(dat) <- c("x","y")
str(dat)#查看数据类型
# 残差正态性检验
mod1 <- lm(y~x,data = dat)
shapiro.test(resid(mod1))
#方差齐性检验
library(car)#引入`leveneTest()`功能
leveneTest(y~x,data = dat)

不满足单因素方差分析的前提条件,选用Kruskal-Wallis rank sum test

kruskal.test(y~x,data = dat)#差异显著

5.多重比较及可视化

  • 多重比较
library(FSA)#引入`dunnTest()`功能
#Dunn (1964) Kruskal-Wallis multiple comparison
#p-values adjusted with the Bonferroni method.
mc <- dunnTest(y~x,data =dat,method ="bonferroni")
mc$res

可以先看下保存在mc中的多重比较结果


关键步骤: 为实现从组内平均值或中位数最大的组开始字母标记,只需将mc$res排序后至于cldList()中就可获得其对应的字母标记,在这里可直接根据两组均值差(即 Z 值)的大小进行降序排序,具体实现方法:mc$res[order(mc$res$Z,decreasing = TRUE),]


  • 获得显著性字母标记以及每组的最大值,用于后续作图
library(rcompanion)#引入`cldList()`功能
#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)#引入`scale_fill_jama()`功能,用于修改颜色
(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"))
正确的结果
正确的结果

展示一下错误的结果: 错误的结果

其余方法,后续再写吧🤣

分类:

其他

标签:

其他

作者介绍

子非鱼和熊
V1