Adonis与ANOSIM检验究竟是什么?

作者: jlyq617 | 来源:发表于2019-05-08 11:37 被阅读9次

    做微生物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','#9400D3'))
    

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

    相关文章

      网友评论

        本文标题:Adonis与ANOSIM检验究竟是什么?

        本文链接:https://www.haomeiwen.com/subject/gaopoqtx.html