查看原文
其他

基于R语言的微生物群落组成分析—α多样性指数的正态分布检验及差异性标注()

王志山 科研后花园 2023-09-08

此前,小编已经给大家展示过如何使用R语言进行微生物群落的Alpha-多样性指数计算及简单的显著性标记,也给大家展示了如何使用字母标记法给数据进行差异性标注,感兴趣的小伙伴可以翻翻此前推文进行查看。今天,小编给大家展示的内容就是基于此前内容进行结合分析,为大家展示如何为Alpha-多样性指数进行正态分布检验及字母标记以显示其数据间的差异性


工作目录设置及R包加载

rm(list=ls())#clear Global Environmentsetwd('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、可视化

#定义labellabel<-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$groupgrou<- 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),]


#定义labellabel<-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),]#定义labellabel<-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),]#定义labellabel<-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”获取下载链接!

爱我请给我好看!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存