组间的PERMANOVA多元分布与方差同质性ANOVA不同

Lep*_*ult 1 r multivariate-testing vegan manova

我尝试了解组之间的PERMANOVA假设multivariate spread类似于中的方差同质性univariate ANOVA,为此,我制作了R代码,但找不到此结果,为什么?

我的代码:

library(vegan)

# Four similar populations:
spdf <- matrix(NA, 60, 4, dimnames =
               list(1:60, c("sp1", "sp2", "sp3", "sp4")))
spdf <- as.data.frame(spdf)
eff <- sort(rep(1:6, 10))
spdf$sp1 = eff + rnorm(60, 0, 0.25)
spdf$sp2 = eff + rnorm(60, 0, 0.25)
spdf$sp3 = eff + rnorm(60, 0, 0.25)
spdf$sp4 = eff + rnorm(60, 0, 0.25)

#3 Treatment 

treat <- gl(3, 20, labels = paste("t", 1:3, sep=""))

# distance matrix

envdist <- vegdist(spdf, method="euclidean")

# when computing  beta-dispersion in anova we have no group differences
# but in adonis is different

anova(betadisper(envdist, treat))
adonis(spdf~treat)
Run Code Online (Sandbox Code Playgroud)

Rei*_*son 7

您似乎在这里混淆了很多事情。PERMANOVA是具有基于置换的测试的多元方差分析。PERMANOVA测试组质心之间的差异-换句话说,它比较多元均值。它确实假设方差是同质的。为了检查组之间在质心方面的任何差异是否不是由方差差异引起的,我们可以使用betadisper()在R.中实现的多元离散方法,adonis()并且betadisper()在做非常不同的事情:

  • adonis() 进行了PERMANOVA之类的分析,
  • betadisper() 给出了多元利差分析。

因此,我们可以得出的结论是,这两种方法正确地检测出均值差异(adonis()显示出明显的treat效果)

> adonis(spdf~treat)

Call:
adonis(formula = spdf ~ treat) 

Permutation: free
Number of permutations: 999

Terms added sequentially (first to last)

          Df SumsOfSqs MeanSqs F.Model      R2 Pr(>F)    
treat      2    3.5326 1.76628  113.66 0.79952  0.001 ***
Residuals 57    0.8858 0.01554         0.20048           
Total     59    4.4184                 1.00000           
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Run Code Online (Sandbox Code Playgroud)

并且betadisper()正确地(您所有的小组都具有相同的分散)无法拒绝齐次多元分散的零假设

> anova(betadisper(envdist, treat))
Analysis of Variance Table

Response: Distances
          Df Sum Sq  Mean Sq F value Pr(>F)
Groups     2 0.1521 0.076041  1.1099 0.3366
Residuals 57 3.9050 0.068509
Run Code Online (Sandbox Code Playgroud)

这完全符合您模拟数据的方式。