查看原文
其他

基于R语言的微生物群落组成多样性分析—β多样性之组间差异性检验

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


引言

      虽然通过PCoA或者NMDS等分析手段可以展示各组样本的微生物组成差异及组间差异,但是,这只是初步进行展示,仅此还无法准确判断组间差异大小及显著性。因此,我们还需要通过其他方式进行进一步检验。而Anosim(analysis ofsimilarities,相似性分析)MRPP(Multiple ResponsePermutation Procedure,多元响应置换分析)Adonis(PERMANOVA,置换多元方差分析)三种分析方式可以达到检验组间差异是否大于组内差异的目的。下面,小编就使用R语言带大家实操一下:


正文—代码

PCoA分析



1、设置工作目录

rm(list=ls())setwd('D:\\桌面\\β-diversity分析\\Anosim&MRPP&Adonis')

2、安装、加载所需包

#安装所需R包install.packages("vegan")install.packages("ggplot2")install.packages("ggprism")#加载包library(vegan)#计算距离时需要的包library(ggplot2)library(ggprism)

3、PCoA分析(具体参考之前文章)

基于R语言的微生物群落组成多样性分析—β多样性之PCoA分析

#数据处理及PCoA分析otu_raw <- read.table(file="otu.txt",sep="\t",header=T,check.names=FALSE ,row.names=1)otu <- t(otu_raw)otu.distance <- vegdist(otu)PCoA <- cmdscale (otu.distance,eig=TRUE)pc12 <- PCoA$points[,1:2]pc <- round(PCoA$eig/sum(PCoA$eig)*100,digits=2)#解释度pc12 <- as.data.frame(pc12)pc12$samples <- row.names(pc12)group <- read.table("group.txt", sep='\t', header=T)colnames(group) <- c("samples","group")df <- merge(pc12,group,by="samples")head(df)#绘图ggplot(df,aes(x=V1, y=V2,color=group,shape=group))+#指定数据、X轴、Y轴 geom_point(size=3)+  theme_bw()





       根据上面初步得到的PCoA图可以清楚看到三组样品的分散程度很大,这初步可以说明组间差异是大于组内差异的,然后我们使用vegan包中的Anosim函数MRPP函数Adonis函数进行进一步组间差异分析。

Anosim分析



#使用vegan包中的anosim函数进行anosim分析df_anosim <- anosim(otu.distance,df$group,permutations = 999)#数据也可以是原始otu数据#df_anosim <- anosim(otu,df$group,permutations = 999)#整理出作图数据df1<-data.frame( x=df_anosim$class.vec, y=df_anosim$dis.rank)#绘图ggplot(df1,aes(x=x,y=y))+ stat_boxplot(geom = "errorbar", width=0.1,size=0.8)+#添加误差线,注意位置,放到最后则这条先不会被箱体覆盖 geom_boxplot(aes(fill=x), outlier.colour="white",size=0.5)+ theme(panel.background =element_blank(), axis.line=element_line(), legend.position="none",plot.title = element_text(size=14))+  scale_fill_manual(values=c("#1597A5","#FFC24B","#FEB3AE","red"))+ #指定颜色 ggtitle("Bray-Curtis Anosim")+ theme_prism(palette = "candy_bright", base_fontface = "plain", base_family = "serif", base_size = 14, base_line_size = 0.8, axis_text_angle = 45)+ theme(legend.position = 'none')+ labs(x = paste("R=",df_anosim$statistic,", ","p=", df_anosim$signif), y = "Rank of Distance (Bray_Curtis)")

R=0.38>0,p=0.009, 说明组间差异显著大于组内差异。





MRPP分析



MRPP <- mrpp(otu.distance,df$group,permutations = 999)MRPP

    通过查看其中的A值Pvalue值即可





Adonis分析



Adonis <- adonis2(otu.distance~group,data=df,       distance = "bray",       permutations = 999)Adonis

      通过查看其中的R^2值及P值检验分组是否合理,其中R^2在0-1之间,越大则代表分组指标对差异的稀释度越高。





欢迎大家点赞、转发并点亮在看,让更多朋友看到!!!

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

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