1

我试图理解组间的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)
4

1 回答 1

8

你似乎在这里混淆了很多东西。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

并且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

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

于 2016-02-16T16:39:41.223 回答