引言
虽然通过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分析(具体参考之前的文章)
#数据处理及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包中的adosim函数进行adosim分析
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)")
MRPP分析
MRPP <- mrpp(otu.distance,df$group,permutations = 999)
MRPP
Adonis分析
Adonis <- adonis2(otu.distance~group,data=df,
distance = "bray",
permutations = 999)
Adonis