其他
基于R语言的微生物群落组成分析—α多样性指数的正态分布检验及差异性标注()
此前,小编已经给大家展示过如何使用R语言进行微生物群落的Alpha-多样性指数计算及简单的显著性标记,也给大家展示了如何使用字母标记法给数据进行差异性标注,感兴趣的小伙伴可以翻翻此前推文进行查看。今天,小编给大家展示的内容就是基于此前内容进行结合分析,为大家展示如何为Alpha-多样性指数进行正态分布检验及字母标记以显示其数据间的差异性。
工作目录设置及R包加载
rm(list=ls())#clear Global Environment
setwd('D:\\test')
#加载R包
library(ggplot2)
library(ggthemes)
library(tidyverse)
library(agricolae)
library(car)
library(reshape2)
数据加载
这里我们使用的数据是基于此前推文相同代码计算的Alpha-多样性指数,具体计算方法这里不做阐述:
##导入数据
df <- read.table("index.txt",header = T, row.names = 1, check.names = F)
df$group <- factor(df$group,levels = c('19H011','19H012','19H013','19H014','19H015','19H017','19H018','19H019','19H022','19H024','19H029','19H032'))
head(df)
ACE指数的正态分布检验及差异性标注
1、检验数据是否符合正态分布
#是否符合正态分布#
qqPlot(lm(df$ACE ~ df$group, data=df),
simulate=TRUE, main="Q-Q Plot", lables=FALSE)
##正态检验
shapiro.test(df$ACE)
# Bartlett检验
bartlett.test(df$ACE ~ df$group, data=df)
# Levene检验,对原始数据的正态性不敏感
leveneTest(df$ACE ~ df$group, data=df)
#无论Bartlett检验还是Levene检验,两者的P值都大于0.05,,所以接受原假设:样本之间的方差是相同的,继续做方差分析
2、方差检验
model<-aov(ACE ~ group, data=df)
3、多重比较
out <- LSD.test(model,"group", p.adj="none")
grou<- group_by(df,group)
bar_data <- summarise(grou,sd(ACE,na.rm = T))#计算误差
#整理数据
bar_data2 <- merge(bar_data ,out$group,by.x="group",by.y = "row.names",all = F)#合并数据
bar_data2<-bar_data2[order(bar_data2$group),]
4、可视化
#定义label
label<-bar_data2$groups
#绘图
p1<-ggplot(df,aes(group,ACE,fill=group))+
stat_boxplot(geom = "errorbar", width=0.1)+
geom_boxplot(position="dodge")+
ggtitle("ACE")+
theme_wsj()+
guides(fill=guide_legend(title=NULL)) +
theme(legend.position = 'none',
axis.text.x = element_text(angle = 45,vjust = 1,hjust = 1))+
geom_text(data=bar_data2,aes(x=group,y=ACE+sd(ACE,na.rm=T)+20,label=label))+#添加字母标记
geom_jitter(alpha=0.8,width = 0.2,size=1)#添加抖动点
p1
Chao指数的正态分布检验及差异性标注
与ACE指数分析类似:
#是否符合正态分布#
qqPlot(lm(df$Chao ~ df$group, data=df),
simulate=TRUE, main="Q-Q Plot", lables=FALSE)
##正态检验
shapiro.test(df$Chao)
bartlett.test(df$Chao ~ df$group, data=df)
# Levene检验,对原始数据的正态性不敏感
leveneTest(df$Chao ~ df$group, data=df)
######方差检验
model<-aov(Chao ~ group, data=df)
#进行多重比较,不矫正P值
out <- LSD.test(model,"group", p.adj="none")#结果显示:标记字母法out$group
grou<- group_by(df,group)
bar_data <- summarise(grou,sd(Chao,na.rm = T))#计算误差
#整理数据
bar_data2 <- merge(bar_data ,out$group,by.x="group",by.y = "row.names",all = F)#合并数据
bar_data2<-bar_data2[order(bar_data2$group),]
#定义label
label<-bar_data2$groups
#绘图
p2<-ggplot(df,aes(group,Chao,fill=group))+
stat_boxplot(geom = "errorbar", width=0.1)+
geom_boxplot(position="dodge")+
ggtitle("Chao")+
theme_wsj()+
guides(fill=guide_legend(title=NULL)) +
theme(legend.position = 'none',
axis.text.x = element_text(angle = 45,vjust = 1,hjust = 1))+
geom_text(data=bar_data2,aes(x=group,y=Chao+sd(Chao,na.rm=T)+20,label=label))+#添加字母标记
geom_jitter(alpha=0.8,width = 0.2,size=1)#添加抖动点
p2
Shannon指数的正态分布检验及差异性标注
#是否符合正态分布
qqPlot(lm(df$Shannon ~ df$group, data=df),
simulate=TRUE, main="Q-Q Plot", lables=FALSE)
##正态检验
shapiro.test(df$Shannon)
bartlett.test(df$Shannon ~ df$group, data=df)
# Levene检验,对原始数据的正态性不敏感
leveneTest(df$Shannon ~ df$group, data=df)
######方差检验
model<-aov(Shannon ~ group, data=df)
#进行多重比较,不矫正P值
out <- LSD.test(model,"group", p.adj="none")
grou<- group_by(df,group)
bar_data <- summarise(grou,sd(Shannon,na.rm = T))#计算误差
#整理数据
bar_data2 <- merge(bar_data ,out$group,by.x="group",by.y = "row.names",all = F)#合并数据
bar_data2<-bar_data2[order(bar_data2$group),]
#定义label
label<-bar_data2$groups
#绘图
p3<-ggplot(df,aes(group,Shannon,fill=group))+
stat_boxplot(geom = "errorbar", width=0.1)+
geom_boxplot(position="dodge")+
ggtitle("Shannon")+
theme_wsj()+
guides(fill=guide_legend(title=NULL)) +
theme(legend.position = 'none',
axis.text.x = element_text(angle = 45,vjust = 1,hjust = 1))+
geom_text(data=bar_data2,aes(x=group,y=Shannon+0.3,label=label))+#添加字母标记
geom_jitter(alpha=0.8,width = 0.2,size=1)#添加抖动点
p3
Simpson指数的正态分布检验及差异性标注
#是否符合正态分布#
qqPlot(lm(df$Simpson ~ df$group, data=df),
simulate=TRUE, main="Q-Q Plot", lables=FALSE)
##正态检验
shapiro.test(df$Simpson)
bartlett.test(df$Simpson ~ df$group, data=df)
# Levene检验,对原始数据的正态性不敏感
leveneTest(df$Simpson ~ df$group, data=df)
####方差检验
model<-aov(Simpson ~ group, data=df)
#进行多重比较,不矫正P值
out <- LSD.test(model,"group", p.adj="none")
grou<- group_by(df,group)
bar_data <- summarise(grou,sd(Simpson,na.rm = T))#计算误差
#整理数据
bar_data2 <- merge(bar_data ,out$group,by.x="group",by.y = "row.names",all = F)#合并数据
bar_data2<-bar_data2[order(bar_data2$group),]
#定义label
label<-bar_data2$groups
#绘图
p4<-ggplot(df,aes(group,Simpson,fill=group))+
stat_boxplot(geom = "errorbar", width=0.1)+
geom_boxplot(position="dodge")+
ggtitle("Shannon")+
theme_wsj()+
guides(fill=guide_legend(title=NULL)) +
theme(legend.position = 'none',
axis.text.x = element_text(angle = 45,vjust = 1,hjust = 1))+
geom_text(data=bar_data2,aes(x=group,y=Simpson+0.05,label=label))+#添加字母标记
geom_jitter(alpha=0.8,width = 0.2,size=1)#添加抖动点
p4
拼图并进行图片美化
#拼图
library(patchwork)
(p1+p2)/(p3+p4)
AI调整后:
数据及源码获取:公众号后台回复关键词“2022-10-17”获取下载链接!
爱我请给我好看!