你的adonis用对了吗?不同因素的顺序竟然对结果有很大影响

前情回顾

方差分析基本概念:方差分析中的“元”和“因素”是什么?

PERMANOVA原理解释:这个统计检验可用于判断PCA/PCoA等的分群效果是否显著!

实战1:画一个带统计检验的PCoA分析结果

配对检验:画一个带统计检验的PcOA分析结果 (再进一步,配对比较)

新问题来了?

假如我们关注不同的管理风格 (Management)和土壤厚度 (A1)对物种组成是否有显著影响?,应该怎么检验呢?

library(vegan)
# 数据的解释和准备见前面的推文
data(dune)
data(dune.env)

A1在前,Moisture在后。这个情况下,A1Moisture都与群体结构有显著关系。A1可以解释16.8%的总体差异,Moisture解释27.6%的总体差异。

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

## 
## Call:
## adonis(formula = dune ~ A1 + Moisture, data = dune.env, permutations = 9999) 
## 
## Permutation: free
## Number of permutations: 9999
## 
## Terms added sequentially (first to last)
## 
##           Df SumsOfSqs MeanSqs F.Model      R2 Pr(>F)    
## A1         1    0.7230 0.72295  4.5393 0.16817 0.0003 ***
## Moisture   3    1.1871 0.39569  2.4845 0.27613 0.0061 ** 
## Residuals 15    2.3890 0.15927         0.55571           
## Total     19    4.2990                 1.00000           
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Moisture在前,A1在后。这个情况下,只有Moisture与群体结构有显著关系。Moisture可以解释40.2%的总体差异,A1解释0.04%的总体差异。

For adonis and sequential tests in general, the order of terms should be meaningful. If it is not meaningful, the tests are hardly meaningful.

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

## 
## Call:
## adonis(formula = dune ~ Moisture + A1, data = dune.env, permutations = 9999) 
## 
## Permutation: free
## Number of permutations: 9999
## 
## Terms added sequentially (first to last)
## 
##           Df SumsOfSqs MeanSqs F.Model      R2 Pr(>F)    
## Moisture   3    1.7282 0.57606  3.6169 0.40199 0.0002 ***
## A1         1    0.1819 0.18186  1.1419 0.04230 0.3181    
## Residuals 15    2.3890 0.15927         0.55571           
## Total     19    4.2990                 1.00000           
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

输出结果中Terms added sequentially (first to last)这一句话很关键,表明环境因子的顺序对结果是有影响的,尤其是环境因子之间存在相关性时。

As there is some linear dependency, which ones goes into the model first determines how much variation is left to be explained by the second of the pair of covariates.

这时可以使用dbrda (基于距离的冗余分析),或者通过adonis2计算边缘概率 (by="margin")。

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

## Permutation test for adonis under reduced model
## Marginal effects of terms
## Permutation: free
## Number of permutations: 9999
## 
## adonis2(formula = dune ~ Moisture + A1, data = dune.env, permutations = 9999, by = "margin")
##          Df SumOfSqs      R2      F Pr(>F)   
## Moisture  3   1.1871 0.27613 2.4845 0.0052 **
## A1        1   0.1819 0.04230 1.1419 0.3228   
## Residual 15   2.3890 0.55571                 
## Total    19   4.2990 1.00000                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

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

## Permutation test for adonis under reduced model
## Marginal effects of terms
## Permutation: free
## Number of permutations: 9999
## 
## adonis2(formula = dune ~ A1 + Moisture, data = dune.env, permutations = 9999, by = "margin")
##          Df SumOfSqs      R2      F Pr(>F)   
## A1        1   0.1819 0.04230 1.1419 0.3257   
## Moisture  3   1.1871 0.27613 2.4845 0.0066 **
## Residual 15   2.3890 0.55571                 
## Total    19   4.2990 1.00000                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

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

## Permutation test for dbrda under reduced model
## Marginal effects of terms
## Permutation: free
## Number of permutations: 999
## 
## Model: dbrda(formula = dune ~ A1 + Moisture, data = dune.env, distance = "bray")
##          Df SumOfSqs      F Pr(>F)   
## A1        1  0.18186 1.1419  0.329   
## Moisture  3  1.18708 2.4845  0.009 **
## Residual 15  2.38899                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

在控制A1的情况下,Moisture对菌群的影响是显著的。反之,在控制Moisture的情况下,A1对菌群的影响是不显著的。

adonis和adonis2的区别

vegan包提供了两个函数adonisadonis2来进行PERMANOVA分析,这两个函数有什么区别呢?

  • adonis函数对提供的变量执行的是序贯检验 (sequential test)。也就是说变量的顺序会对结果有影响(尤其是变量之间存在相关时)。系统会先评估第一个变量解释的差异比例,再评估后续变量解释的剩余总体差异的比例。后面会有一个例子展示差异。这等同于adonis2使用参数by="terms" (默认参数)。这通常被称为I型误差平方和 (Type I sums of squares),此时,

    • 对于模型Y ~ A + B来讲,变量A的误差平方和为SS(A)

      变量B的误差平方和是在给定A的基础上的平方和SS(B|A) = SS(A, B) - SS(A)

    • 对于模型Y ~ B + A来讲,变量B的误差平方和为SS(B)

      变量A的误差平方和是在给定B的基础上的平方和SS(A|B) = SS(A, B) - SS(B)

  • 如果你希望变量的顺序不影响结果,那么需要使用adonis2,并且设置参数by="margin"。这时计算显著性时会考虑公式中其它所有变量,而不只是当前变量前面的那些变量。这通常被称为II型误差平方和 (Type II sums of squares),此时

    • 对于模型Y ~ A + B来讲,变量A的误差平方和为SS(A|B) = SS(A, B) - SS(B)

      变量B的误差平方和SS(B|A) = SS(A, B) - SS(A)

    • 对于模型Y ~ B + A来讲,变量A的误差平方和为SS(A|B) = SS(A, B) - SS(B)

      变量B的误差平方和SS(B|A) = SS(A, B) - SS(A)

  • 或者你想看整体模型是否显著,也需要使用adonis2,并且设置参数by="null"

Order does not matter when by="margin" because the significance is tested against a model that includes all other variables not just the ones preceding it in the formula. It seems that strata is now deprecated in favor of defining blocks in the permutations argument now (see adonis help). Anyway, these arguments allow you to specify how to restrict which rows can be exchanged during the permutation procedure used to calculate p values.

adonis performs a sequential test of terms。adonis2 can perform sequential, marginal and overall tests. Function adonis2 also allows using additive constants or squareroot of dissimilarities to avoid negative eigenvalues,but both functions can handle semimetric indices (such as Bray-Curtis) that produce negative eigenvalues. Functionadonis2 can be much slower than adonis, in particular with several terms.

参考

  1. https://www.scribbr.com/frequently-asked-questions/one-way-vs-two-way-anova/

  2. MANOVA的前提假设 https://www.real-statistics.com/multivariate-statistics/multivariate-analysis-of-variance-manova/manova-assumptions/  https://www.statology.org/manova-assumptions/

  3. https://statistics.laerd.com/statistical-guides/one-way-anova-statistical-guide.php

  4. https://www.yunbios.net/h-nd-570.html

  5. https://mp.weixin.qq.com/s/v_k4Yhe9rBWM9y9A3P3wQw

  6. https://mp.weixin.qq.com/s?__biz=MzUzMjA4Njc1MA==&mid=2247484678&idx=1&sn=f95418a311e639704e9848545efc7fd7&scene=21#wechat_redirect

  7. https://chrischizinski.github.io/rstats/vegan-ggplot2/

  8. https://chrischizinski.github.io/rstats/adonis/

  9. https://chrischizinski.github.io/rstats/ordisurf/

  10. https://www.rdocumentation.org/packages/vegan/versions/1.11-0/topics/adonis

  11. https://www.jianshu.com/p/dfa689f7cafd

  12. https://stats.stackexchange.com/questions/312302/adonis-in-vegan-order-of-variables-non-nested-with-one-degree-of-freedom-for

  13. https://stats.stackexchange.com/questions/188519/adonis-in-vegan-order-of-variables-or-use-of-strata?noredirect=1

  14. https://github.com/vegandevs/vegan/issues/229

  15. https://stats.stackexchange.com/questions/476256/adonis-vs-adonis2

  16. 清晰解释Type I, Type II, Type III https://mcfromnz.wordpress.com/2011/03/02/anova-type-iiiiii-ss-explained/

  17. 清晰解释Type I, Type II, Type III https://stats.stackexchange.com/questions/60362/choice-between-type-i-type-ii-or-type-iii-anova

  18. https://thebiobucket.blogspot.com/2011/08/two-way-permanova-adonis-with-custom.html#more

  19. adonis的前提条件 https://thebiobucket.blogspot.com/2011/04/assumptions-for-permanova-with-adonis.html#more

  20. 作者的论文 https://static1.squarespace.com/static/580e3c475016e191c523a0e2/t/5813ba8b5016e1a5b61f454a/1477687949842/Anderson_et_al-2013-ANOSIM+vs.+PERMANOVA.pdf

往期精品(点击图片直达文字对应教程)

a946b560b7ec016bfbac6e27c08c0dc6.png

6218ec44d796a921ff7e837166948195.png

b2be5f46d296fd37d4bb1534d6d18ed5.png

85b0d53f07b1520ce26ee903d06aa9a5.png

084502890d51476bb95752e6c072807c.png

6550ee81c50fd5f246ba5ff4f5f99d02.png

441db0d6bd8d4e4473fa6c0067a771ad.png

55ec019728bc8a08062ce80b49cbb97f.png

a2a256797b082f74f68ac66f8fafc0f6.png

d76997783b022cd9b812f6a3f7a8d832.png

cccfa53cf7262387eee1e89eb1418e68.png

0b9c9cc0f8f910708cc10aac94c37611.png

b51e048da1ba260fb40db3cbe7252ff0.png

b768b76da73b510f8f56ebe2512e57d4.png

9ccf0b47e76e5b09045c233f9a8a36c4.png

6f326dec7c5cc6a356505f5e025e18ba.png

e844f6ba3ad690fa45c1f6ae89a37625.png

1db1fef70e229ec0a44470e289f4c65a.png

e225b5b34bc16398160d793392923221.png

a3bcc89fe3cfc5db50cf453e174202d3.png

45f8e8ef1fb8474ba72e11bef7b93737.png

92d27f15ce9878520976d37714a0e03c.png

221de449beb071f829ff0c029968a249.png

9715dfbaeb9af29ebb44fa1a6bb19093.png

57da2bc668fca300798066c0903806cf.png

a17a14ff7f3de0a6def16b79e6ade5df.png

951b33d4268658467f439ae2a4067065.png

f6c14ad9be12294555cbccb98ad75da4.png

机器学习

后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集

9fedfb6e4b0e5cce58cea10d39d8a7dc.png

97948228cdd694a89aed56213c0e575f.png

e2aa84c8c0bca25e84150a8d8a0fc114.png

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

生信宝典

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

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

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

打赏作者

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

抵扣说明:

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

余额充值