PERMANOVA multivariate spread among groups is not similar to variance homogeneity ANOVA

4.1k views Asked by At

I try to understand a PERMANOVA assumtption that is multivariate spread among groups is similar to variance homogeneity in univariate ANOVA, for this I make a R code and I don't find this results, why?

My code:

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)
1

There are 1 answers

1
Gavin Simpson On

You seem to be confusing a lot of things here. PERMANOVA is a multivariate ANOVA with permutation-based testing. PERMANOVA tests for differences between group centroids --- in other words it compares the multivariate means. It does assume homogeneity of variances. To check that any difference between groups in terms of their centroids is not being induced by differences in variances, we might use the multivariate dispersion method implemented in betadisper() in R. adonis() and betadisper() are doing very different things:

  • adonis() gives an analysis like PERMANOVA,
  • betadisper() gives an analysis of multivariate spread.

What we can conclude therefore is that the two methods correctly detect a difference in means (adonis() shows a significant treat effect)

> 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

and that betadisper() correctly (all your groups had the same dispersion) fails to reject the null hypothesis of homogeneous multivariate dispersions

> 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

This is all in accord with the way you simulated the data.