Adonis与ANOSIM检验究竟是什么?

做微生物16S测序的时候,公司的报告里经常会给到两种检验Adonis和ANOSIM,听过t.test、wilicox、anova各种检验,那么Adonis和ANOSIM检验是什么呢?

本文参考:
什么是ANOSIM分析?
Adonis和ANOSIM,安能辨我是雄雌

Adonis 多元方差分析

Adonis,多元方差分析,亦可称为非参数多元方差分析。其原理是利用距离矩阵(比如基于Bray-Curtis距离、Euclidean距离)对总方差进行分解,分析不同分组因素对样品差异的解释度,并使用置换检验对其统计学意义进行显著性分析

Adonis分析结果通常如下:

Index Df SumsOfSqs MeanSqs F.Model R2 Pr(>F)
GroupFactor 4 1.0899 0.27248 1.4862 0.14883 0.011
Residuals 34 6.2335 0.18334 0.85117
Total 38 7.3234 1.00000

其中,GroupFactor表示实验中的分组方法
Df表示自由度
SumsOfSqs表示总方差即离差平方和
MeanSqs表示均方差(SumsOfSeqs/Df)
F.Model表示检验值F
R2表示该分组方式对样品间差异的解释度,R2越大说明该分组方案对差异的解释度越高
Pr表示P值,小于0.05时显著说明本次检验的可信度高。

那么Adonis具体要如何使用呢?
在微生物的分析中我们通常把Adonis和PCA分析结合在一起。进行完PCA分析后,我们想要检验不同的分组之间究竟是否有差异,差异是否显著,这时候我们就可以用Adonis检验。如下图,虽然我们可以看到三组被分开了,但是这种分开真的显著吗?这种分组又能对样本的差异解释多少呢?那么右侧的Adonis检验就告诉了我们明确的答案,这种分组时显著的,R2=0.11。

Sylvain I A, Adams R I, Taylor J W. A different suite: The assemblage of distinct fungal communities in water-damaged units of a poorly-maintained public housing building[J]. PloS one, 2019, 14(3): e0213355.

在R中我们可以使用Vegan包中的函数adonis()adonis2()进行adonis检验。

adonis2(formula, data, permutations = 999, method = "bray",
    sqrt.dist = FALSE, add = FALSE, by = "terms",
    parallel = getOption("mc.cores"), ...)

adonis(formula, data, permutations = 999, method = "bray",
    strata = NULL, contr.unordered = "contr.sum",
    contr.ordered = "contr.poly", parallel = getOption("mc.cores"), ...)

ANOSIM 相似性分析

ANOSIM,相似性分析是一种非参数检验,用于检验高纬度数据间的相似性,比较组间和组内差异的大小,从而判断分组是否有意义,其可以用于检验两组的组间和组内差异,也可以用于多组。

ANOSIM的原理如下,以最基本的两个组为例:
现在一共有6个样本,根据我们的实验方案将其分为两组Group1和Group2,每组含有3个样本。

1、首先我们基于组内样本间的距离计算组内的相似性。

Within Groups Dissimilarities

2、然后我们基于组间样本的距离计算组间的相似性。

Between Groups Dissimilarities

结合组内和组间,得到:

Result

然后我们根据公式计算R值:

其中,
r0= mean rank of between group dissimilarities 即组间差异性秩的平均值
rw= mean rank of within group dissimilarities 即组内差异性秩的平均值
n=the number of samples 即样本总数量

因此根据公式可以知道,R的取值范围为[-1,1]:
当R趋向于1时,说明组间差异大于组内差异
当R=0时,说明组间没有差异,即分组无效,不同分组之间没有差异。
当R趋向于-1时,说明组间差异小于组内差异。

当R大于0时,我们还要进一步检验这种差异是否显著具有可信度,ANOSIM中对其的检验方法也是使用Permutation Test即置换检验。

置换检验:1、对原始样本进行随机分组,分为实验组和对照组
2、计算随机分组的Ri值,并和R比较
3、重复1000次
4、计算p=Ri大于R的百分比,从而计算P值

在我们做完PCoA、NMDS等降维分析的时候,我们也会遇到一同样的问题,数据看起来是分开的,但是不同的组之间差异真的显著吗?这个时候也可以选择ANOSIM进行检验。

R中Vegan包也提供了ANOSIM检验。下面用R中自带的鸢尾花数据集(iris)做一个示范:

library(vegan)
library(ggplot2)
#Delete Species Infor
dat<-subset(iris,select = -Species)
#Calculate Distance
iris.dist<-vegdist(dat)
#MDS analysis
m<-monoMDS(iris.dist)
MDS<-as.data.frame(m$points)
#Gain group information
MDS$group<-iris$Species
#Plot
p<-ggplot(MDS,aes(MDS1,MDS2,col=group,shape=group))+
  geom_point()+
  theme_bw()+
  theme(legend.title=element_blank())

从上图我们可以直观地看出,组间差异大于组内差异,三组样本明显可以分开。
那么进一步我们用ANOSIM检验来验证我们从图中得到的结论。

#ANOSIM
anosim_result<-anosim(dat,iris$Species,permutations = 999)
summary(anosim_result)
plot(anosim_result, col = c('#FFD700','#FF7F00','#EE2C2C','#D02090'))

从上图可以直观看到组间差异大于组内差异,R=0.858,接近于1,P值为0.001,小于0.05,说明该不同的分组之间差异明显,该分组是有意义的。

推荐阅读更多精彩内容