【R生态】非参数多元检验(ADONIS、ANOSIM、PERMANOVA及MRPP等多元方差分析)

本文介绍了R语言中用于非参数多元检验的ADONIS、ANOSIM和MRPP方法,这些工具常用于微生物生态和环境科学中的数据分析,结合降维方法如PCA、PCoA等,帮助定量分析不同因素对样本差异的解释度。ADONIS是一种非参数的多因素方差分析,ANOSIM用于比较组间差异,而MRPP则评估组间和组内的差异。文章提供了R代码示例,并讨论了如何选择适用的检验方法。
摘要由CSDN通过智能技术生成
  • 💂 个人信息酷在前行
  • 👍 版权: 博文由【酷在前行】原创、需要转载请联系博主
  • 👀 如果博文对您有帮助,欢迎点赞、关注、收藏 + 订阅专栏
  • 🔖 本文收录于【R生态】,该专栏主要介绍R语言在微生态等领域的应用,如降维分析,物种与物种间及环境因子的关系,群落构建机制等等。请大家多多关注点赞和支持,共同进步~ 欢迎大家订阅!


      PCA、PCoA、NMDS、CCA及RDA分析,这些都属于降维分析,大家应该都比较熟悉了。此外,大家可能常在微生物生态及环境等领域的文章中看到ADONIS、ANOSIM、PERMANOVA、MRPP等分析(均为 多元非参数检验 ),大家可能对这几种分析还不太了解。通常这些方法与上述的降维分析相结合,前者能够获得定性的结论,而后者可以获得 定量 的结果。因此,借此与大家分享多元非参数检验,包括如何对其进行选择,及如何借助R语言实现这一过程。

🐣 一、非参数多元检验的简介及作用

   在微生物生态领域有一种分析被广泛应用,便是降维分析,例如有PCA、PCoA、NMDS、CCA、RDA等等。这些分析主要是基于距离矩阵来计算不同处理或者条件下样本组间物种组成的相似性和差异性。而前者都是定性的方法,正如先前的推文曼特尔分析(Mantel test),Mantel或者Partial Mantel可以与CCA联用,来定量判断微生物群落与环境变量两个矩阵的相关性。利用以下分析方法,主要包括ADONIS、ANOSIM、MRPP等来定量分析不同分组因素对样品差异的解释度,并通过置换检验进行显著性分析,判断是否具有统计学意义。

   ADONIS ,被称为 多元方差分析 ,亦称为PERMANOVA (Permutational multivariate analysis of variance,置换多元方差分析)或非参数多因素方差分析(nonparametric MANOVA),是一种 基于样品距离(默认为Bray-Curtis或者其余距离如Euclidean) 的非参数多元方差分析,是MANOVA的等同形式。它通过线性模型分析不同分组因素或环境因子(如土壤理化性质等)对样品差异的解释度,并使用置换检验进行显著性分析。

   ANOSIM (Analysis of similarities) ,通常被称为组间差别分析,是一种用于比较组间(两组或多组)的差异是否显著大于组内差异的非参数检验,从而判断分组是否有意义。默认利用 Bray-Curtis 算法计算两两样品间的距离,然后将所有距离从小到大进行排序, 先计算 R 值,再将样品进行置换。

   MRPP (Multiple Response Permutation Procedure) ,被称为多响应置换过程分析,通常也用于检验组间(两组或多组)的差异是否显著大于组内差异。与Anosim 分析类似,可利用半定量(如 Bray-Curtis)或定量距离矩阵(如 Euclidean)计算 A 值表示组间差异,使用置换检验对分组进行显著性分析。

🐤 二、R语言代码学习过程

   通过上面对几种方法的简要介绍后,相信大家已经有一个基本的了解,同时也清楚了MANOVA与ADONIS是同类分析。接下来,主要介绍它们如何在R语言中使用和运行:
重点:上面所描述的方法主要基于"vegan"R程序包。

  🍌 1、ADONIS分析

# ADONIS--------------------------------
library(vegan) # R包加载
?adonis() # 向help咨询函数的用法

在这里插入图片描述
我们发现是有两种函数可供选择的。进一步加载数据:

# 物种数据
data(dune)
head(dune)
# Achimill Agrostol Airaprae Alopgeni Anthodor Bellpere Bromhord Chenalbu Cirsarve Comapalu Eleopalu Elymrepe Empenigr Hyporadi
# 1        1        0        0        0        0        0        0        0        0        0        0        4        0        0
# 2        3        0        0        2        0        3        4        0        0        0        0        4        0        0
# 3        0        4        0        7        0        2        0        0        0        0        0        4        0        0
# 4        0        8        0        2        0        2        3        0        2        0        0        4        0        0
# 5        2        0        0        0        4        2        2        0        0        0        0        4        0        0
# 6        2        0        0        0        3        0        0        0        0        0        0        0        0        0
# Juncarti Juncbufo Lolipere Planlanc Poaprat Poatriv Ranuflam Rumeacet Sagiproc Salirepe Scorautu Trifprat Trifrepe Vicilath
# 1        0        0        7        0       4       2        0        0        0        0        0        0        0        0
# 2        0        0        5        0       4       7        0        0        0        0        5        0        5        0
# 3        0        0        6        0       5       6        0        0        0        0        2        0        2        0
# 4        0        0        5        0       4       5        0        0        5        0        2        0        1        0
# 5        0        0        2        5       2       6        0        5        0        0        3        2        2        0
# 6        0        0        6        5       3       4        0        6        0        0        3        5        5        0
# Bracruta Callcusp
# 1        0        0
# 2        0        0
# 3        2        0
# 4        2        0
# 5        2        0
# 6        6        0

# 环境变量数据
data(dune.env)
head(dune.env)
# A1 Moisture Management      Use Manure
# 1 2.8        1         SF Haypastu      4
# 2 3.5        1         BF Haypastu      2
# 3 4.3        2         SF Haypastu      4
# 4 4.2        2         SF Haypastu      4
# 5 6.3        1         HF Hayfield      2
# 6 4.3        1         HF Haypastu      2

使用两种函数查看差异:

adonis(dune~A1, data=dune.env, permutations = 999)
# ?adonis2
adonis2(dune~A1, data=dune.env, permutations = 999)

在这里插入图片描述
当利用adonis2函数跑同样模型时,能看到Terms added sequentially (first to last);这里与adonis不同,表明环境因子的顺序对结果存在影响,特别是环境因子之间存在相关性时。

进一步看adonis函数改变不同变量顺序的结果:

adonis(dune~A1+Moisture, data=dune.env, permutations = 999)
adonis(dune~Moisture+A1, data=dune.env, permutations = 999)

在这里插入图片描述
于是利用adonis针对Al和Moisture两个变量更改顺序:结果显示当Al在前时,其解释了总体差异的16.8%,而Moisture解释了27.6%; 当Al在后时,仅解释了总体差异的0.04%,而Moisture解释了40.2%。该结果也说明了不同环境变量之间本身是存在相关性,可以利用adonis2函数(by=“margin”)计算边缘概率。也就是控制某一变量,探究其他变量对物种群落的影响。

利用adonis2函数计算边缘概率进行检验:

adonis2(dune~Moisture+A1, data=dune.env, permutations=999, by="margin")
adonis2(dune~A1+Moisture, data=dune.env, permutations=999, by="margin")

在这里插入图片描述
在控制A1时,Moisture对物种群落的影响是显著的。反之,在控制Moisture时,A1不显著。

此外,我们还可以使用dbrda函数 (基于距离的冗余分析)来判断边缘概率:

by1 <- dbrda(dune~A1+Moisture, data = dune.env, dist = 'bray')
anova(by, by = 'margin')

by2 <- dbrda(dune~Moisture+A1, data = dune.env, dist = 'bray')
anova(by, by = 'margin')

在这里插入图片描述
结果显而易见,且方法不存在顺序问题。

  🥝 2、ANOSIM分析

# ANOSIM ----------
# 首先需要将数据转成dist格式
dune.dist <- vegdist(dune)
# 然后再利用anosim函数进行计算
dune.ano <- anosim(dune.dist, dune.env$Management, permutations = 999)
summary(dune.ano)

查看模型结果:
在这里插入图片描述
图中的ANOSIM statistic R为统计量,分布衡量的为零模型的分布,Upper quantiles of permutations就是通过999次置换得到统计量的分位数。如果R>0,说明组内距离小于组间距离,即分组是有效的。从结果可以看到R=0.2579,大于零模型99%分位数0.241,因此p值为0.001,结果是显著的。

可以进一步提取距离的秩的分析结果,并进行绘制:

dune.ano$dis.rank
dune.ano$class.vec
plot(dune.ano)

在这里插入图片描述
在这里插入图片描述
从结果来看,可以看出NM分组效果较差,但总体来说分组是有效的。

  🍎 3、MRPP分析

# MRPP -----------------
dune.mrpp <- mrpp(dune, dune.env$Management, permutations = 999)
dune.mrpp
summary(dune.mrpp)

在这里插入图片描述
Significance of delta 即显著性p值,小于0.05说明存在显差异; Chance corrected within-group agreement A 即A值,如果A大于0说明组间差异大于组内差异,小于0说明组内差异大于组间差异;observe delta的值越小说明组内差异小,expect delta的值越大说明组间差异大。

# 进一步提取两个主要数据:A和P值
dune.mrpp$A
dune.mrpp$Pvalue

在这里插入图片描述
结果:我们得知BF、HF、NM、SF之间的物种群落结构在整体水平上是存在显著差异的。

🦅 三、ADONIS、ANOSIM、MRPP的比较和选择

那么有三种方法,我们作何选择呢?在什么情况下使用呢?由于方法选择上存在很多主观因素在里面,提供一些建议供大家参考。

1)对于真实的数据集,ADONIS通常(但并非总是)比其它方法更强大。与ANOSIM、 MRPP 不同, ADONIS 稳健性更高,既能够处理因子变量也能够处理连续的数值变量(等同回归模型)。由于ADONIS 为置换多因素方差分析,因此可以灵活使用方差分析,大大提高分析效果。

2)方法选择上,在微生物的分析中通常会把ADONIS和PCA分析结合在一起。通过PCA定性分析后,可以进一步检验不同的分组之间究竟是否存在显著,我们可以选择ADONIS检验。而在做完PCoA、NMDS等降维分析的时候,数据看起来是存在差异的,但是为了确定不同的组之间是否真的显著?可以选择ANOSIM检验。

3)此外,为了确定组间是否存在显著差异,可以同时使用ADONIS、ANOSIM、MRPP三种非参数多元检验,强调分析结果的准确性。

4)为什么ADONIS、ANOSIM、MRPP的结果不同?由于本身分析的东西不一样,所以得到结果不同是正常的。如果探究的因子变量影响很强,通常结果比较相似。如果因子变量影响较弱,结果的差异可能比较大可能产生差别。因此,结果不同表明因子变量的影响可能不是真的,或者效应很弱。另外,还需要比较各方法的统计量,即ADONIS的F值和ANOSIM的R值还有MRPP的A值。如果很低,即使各方法的P值都显著,也只能说明效应不为真或很弱。

参考链接:
1.https://cloud.tencent.com/developer/article/1855042

2.http://www.biofacebook.com/?p=1474

3.https://blog.csdn.net/qq_42458954/article/details/110390488

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷在前行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值