R统计绘图-多变量单因素非参数差异检验及添加显著性标记图

该博客介绍了如何在R中进行单因素非参数差异检验,包括Kruskal-Wallis检验和Dunn test多重比较,并展示了如何使用rcompanion包添加显著性字母标记。通过实例展示了数据准备、差异检验过程以及结果的图形化展示,包括柱形图和箱型图。最后提供了相关代码和数据资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 数据准备

数据包括36个样本,4个处理,7个环境因子,研究目的是为了比较处理间每个环境因子是否存在差异。

# 1.1 设置工作路径
setwd("D:\\EnvStat\\stat")
getwd()#获取工作路径

# 1.2 导入数据
env = read.csv("env.csv",header = TRUE,row.names = 1,stringsAsFactors = FALSE)
dim(env)
head(env) # 第一列为分组信息,2-8列为环境因子数据

图1|环境因子及分组信息表,env.csv。行为样品名称,列为环境因子名称和分组信息,共有7个环境变量,1个分组信息。

二、 组间差异检验

2.1 单因素非参数差异检验-Kruskal-Wallis rank sum test

library(rstatix)
library(dplyr)
# 批量对7个环境因子进行kruskal-Wallis检验
for (i in 2:8){
  assign(paste(names(env[i]),"kw",sep="."),kruskal.test(env[,i],as.factor(env[,1])))
  
} # assign()将kruskal.test()的运行结果赋予指定变量名
kw = mget(paste(names(env[2:8]),"kw",sep=".")) # mget()提取变量值到kw对象
kw # 列表对象

# 将结果输出到本地
capture.output(kw,file = "kw.list.txt",append = FALSE)

图2|Kruskal-Wallis检验结果。kw列表中包含7个环境因子的kruskal-wallis检验结果。

2.2 多重比较

R统计-多变量单因素参数、非参数检验及多重比较R统计-多变量双因素参数、非参数检验及多重比较文章中都写过多重比较方法,这里就不详述了。这里使用FSA包的dunnTest函数进行Dunn test多重比较。

library(FSA)
# 批量对7个环境因子进行Dunn test多重比较
for (i in 2:8){
assign(paste(names(env[i]),"Dunn",sep = "."), dunnTest(env[,i], as.factor(env[,1]),
              method="bh")$res); # p值校正选择bh方法。
}
dunn = mget(paste(names(env[2:8]),"Dunn",sep = "."))
dunn$TN.Dunn

# 将结果输出到本地
capture.output(dunn,file = "dunn.list.txt",append = FALSE)

图3|Dunn test多重比较检验结果。dunn列表中包含7个环境因子的检验结果。

2.3 添加显著性字母标记

每个环境因子,包含4个处理,所以使用不同字母表示处理间的显著差异。同一环境因子具有相同字母处理间差异不显著。使用rcompanion包的cldList根据多重比较检验结果自动设置字符标记。

library(rcompanion)
# 字符标记,rcompanion包的cldList可以根据多重比较检验结果自动设置字符标记
for (i in 1:7){
assign(paste(names(dunn[i]),"mark",sep="."),
       cldList(P.adj ~ Comparison,
        data = dunn[[i]],
        threshold = 0.05)) # 设置显著性差异p值的阈值
}
dunn_mark = mget(p
### 创建显示统计显著性的分组条形 要在R语言中创建带有显著性标记的分组条形,可以利用`ggplot2`包的强大绘图功能,并结合其他辅助包如`ggsignif`来标注显著性。以下是具体实现方法: #### 所需软件包安装与加载 首先确保已安装并载入必要的库: ```r install.packages(c("ggplot2", "ggsignif")) library(ggplot2) library(ggsignif) ``` #### 数据准备 构建一个简单的数据框作为例子,该数据框包含两个因子变量(Group, Subgroup)和一个连续型响应变量(Value),这有助于理解如何处理实际研究中的多维分类数据。 ```r set.seed(123) # 设置随机种子以便结果可重复 df <- data.frame( Group = factor(rep(c('G1', 'G2'), each=8)), Subgroup = rep(factor(paste0('S', 1:4)), times=4), Value = c(rnorm(n=8, mean=5), rnorm(n=8, mean=7)) ) head(df) # 查看前几行数据结构 ``` #### 绘制基础分组表 使用`ggplot()`初始化形对象,并通过指定aes映射参数定义各维度对应关系;接着调用`geom_bar(stat="identity")`绘制直方柱体部分。 ```r base_plot <- ggplot(data=df, aes(x=Subgroup, y=Value, fill=Group)) + geom_bar(position='dodge', stat="identity") print(base_plot) ``` #### 添加显著性测试及其注解 为了评估两组间是否存在统计学意义上的差异,可以在同一张表上加入成对比的结果。这里采用`t.test()`执行独立样本T检验,并借助于`stat_compare_means()`自动完成P值计算及格式化输出。最后运用`geom_signif()`向选定区域添加星号或其他形式的重要程度指示符。 ```r final_plot <- base_plot + stat_compare_means(aes(label=p.signif), method="t.test", comparisons=list(c("G1", "G2")), label.y=nrow(unique(df$Value))+1)+ geom_signif(comparisons=list(c("G1", "G2")), map_signif_level=TRUE, textsize=3.5, vjust=-0.2) print(final_plot)[^1] ``` 此代码片段展示了完整的流程:从环境配置到最终呈现一张既美观又富含信息量的分组条形,其中包括了基于实验设计所得到的具体统计数据支持下的结论表达。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EcoEvoPhylo

值得点赞吗?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值