Navigation:  Analysis of variance and covariance >


Previous pageReturn to chapter overviewNext page

In each of the ANOVA procedures described so far there has been a single response variables measured, such as crop yield, tensile strength or bacteria count. In reality many studies will wish to measure more than one response variable when expensive or time-consuming experiments are conducted. Multivariate ANOVA, or MANOVA, is a mechanism for performing analysis of such multivariate response data. Of course, in such cases a simple solution is to compute standard ANOVA analyses for each of the response variables separately, but the MANOVA approach allows the response variables to be grouped and analyzed as one multivariate response, in addition to looking at the individual responses separately. Procedures such as manova() in R and manova1() in MATLab perform this function.

Example: Plastic film manufacture

The summary.manova help facility in R provides a worked example based on a plastic film production problem. This example is shown below, together with the multivariate ANOVA table. There are two factors, listed as RATE and ADDITIVE in the production test (each with two levels, Low and High) and a total of 20 runs. There are 3 response variables, tear, gloss and opacity, which describe measured characteristics of the resultant film. Y is defined as the combined response variable and then the manova() procedure is executed with Y as the dependent variable and RATE and ADDITIVE as the factors. Output for the individual response variables can be obtained using the summary.aov() function, as shown, which produces the standard ANOVA tables for each response variable (and this is available because manova() actually calls aov() to perform its operations). However, the additional summary() function provides a multivariate analysis of variance (with no error term), and assesses the significance of the factors and their interaction via a new ANOVA table, as shown.

# Example on producing plastic film from Krzanowski (1998, p. 381, [KRZ1])

tear <- c(6.5, 6.2, 5.8, 6.5, 6.5, 6.9, 7.2, 6.9, 6.1, 6.3, 6.7, 6.6, 7.2, 7.1, 6.8, 7.1, 7.0, 7.2, 7.5, 7.6)

gloss <- c(9.5, 9.9, 9.6, 9.6, 9.2, 9.1, 10.0, 9.9, 9.5, 9.4, 9.1, 9.3, 8.3, 8.4, 8.5, 9.2, 8.8, 9.7, 10.1, 9.2)

opacity <- c(4.4, 6.4, 3.0, 4.1, 0.8, 5.7, 2.0, 3.9, 1.9, 5.7, 2.8, 4.1, 3.8, 1.6, 3.4, 8.4, 5.2, 6.9, 2.7, 1.9)

Y <- cbind(tear, gloss, opacity)

rate <- factor(gl(2,10), labels=c("Low", "High"))

additive <- factor(gl(2, 5, length=20), labels=c("Low", "High"))

fit <- manova(Y ~ rate * additive)

summary.aov(fit)           # univariate ANOVA tables

summary(fit)               # same F statistics as single-df terms




Degrees of freedom numerator

Degrees of freedom denominator

Approximate F-test


Between rate






Between additive












Notice that the ANOVA table contains rows for the two factors and their interaction, the latter not being significant whereas the two main factors are both significant (below the 5% level). This is an estimate for the combined responses, based on the Pillai-Bartlett (PB) statistic, whereas for the individual responses only tear and gloss are significant whilst opacity is not (the PB statistic is based on the trace of the multivariate matrix used in the analysis for which the diagonal is essentially the sums of squares used in univariate ANOVA). Alternative statistics (notably Wilks' Lambda) are provided in R and several other packages, as there is no single definitive way of determining the significance of the multivariate model.


[KRZ1] Krzanowski W J (1988) Principles of Multivariate Analysis. A User's Perspective. Oxford UP