Advanced Statistics - Biology 6030

Bowling Green State University, Fall 2019

Multivariate Analysis of Variance

Multivariate Analysis of Variance (MANOVA) tests whether population means on a set of dependent variables are derived from the same underlying population across categorical levels of one or more independent variables. It is used to see main and interaction effects of categorical variables on multiple dependent interval variables.

With equality of population means for dependent groups also means any linear combinations should be equal for all groups - both of these are evaluated in MANOVA. Correlations between depedent variables indicate partial redundance of information and results obtained will pertain to an overlap of concepts to be explained.




How this is done

Univariate F-Tests obtain the ratio of variance explained by the model over the error variance. In multivariate Analysis of variance these single variance terms are replaced by a Model Variance-Covariance Matrix over an Error Variance Covariance Matrix.

In R you first need to import datafile "BodyMeasures.txt", define n to represent the sample size, and group your response variables into a set using cbind.

> bodyMeasures <- read.table("/BodyMeasures.txt", header=TRUE, sep=",", na.strings="NA", dec=".")
> n<-length(bodyMeasures$Sex)
> bodyMeasures$Ys <- with(bodyMeasures,cbind(Mass,Fore,Bicep,Chest,Neck,Shoulder,Waist,Height,Calf,Thigh,Head))

Perform a MANOVA, report Pillai's trace, and include univariate tests on each measure

> fit_manova <- manova(Ys ~ Sex, data = bodyMeasures)
> summary(fit_manova)
> summary.aov(fit_manova)

Obtain the Matrix of error sums of squares and crossproducts (E) and the Matrix of model sums of squares and crossproducts (H) and report them

> E <- (n-1)*cov(fit_manova$residuals)
> E
> H <- (n-1)*cov(fit_manova$fitted.values)
> H

You can obtain for the Eigenvalues after solving H for E and the Eigenvectors via lda (which requires library MASS).

> roots <- eigen(H%*%solve(E))
> roots$values
> library(MASS)
> fit_lda <- lda(bodyMeasures$Ys,bodyMeasures$Sex)
> fit_lda

You can get a canonical centroid plot of this ananlysis using procedure cca (which requires library vegan).

> install.packages("vegan")
> library(vegan)
> cca.1 <- cca(bodyMeasures[,-1] ~ bodyMeasures$Sex)
> cca1.plot <- plot(cca.1)

last modified: 2/28/13
This material is copyrighted and MAY NOT be used for commercial purposes, 2001-2019 lobsterman.
[ Advanced Statistics Course page | About BIO 6030 | Announcements ]
[ Course syllabus | Exams & Grading | Glossary | Evaluations | Links ]