PERMANOVA multivariate spread among groups is not similar to variance homogeneity ANOVA
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)
Solution 1:
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.