# S3 method for mlm
anova(object, …,
test = c("Pillai", "Wilks", "Hotelling-Lawley", "Roy",
"Spherical"),
Sigma = diag(nrow = p), T = Thin.row(proj(M) - proj(X)),
M = diag(nrow = p), X = ~0,
idata = data.frame(index = seq_len(p)), tol = 1e-7)
"mlm"
."mlm"
.test == "Spherical"
). Covariance
matrix assumed proportional to Sigma
.M
and
X
.qr
."anova"
inheriting from class "data.frame"
anova.mlm
method uses either a multivariate test statistic for
the summary table, or a test based on sphericity assumptions (i.e.
that the covariance is proportional to a given matrix). For the multivariate test, Wilks' statistic is most popular in the
literature, but the default Pillai--Bartlett statistic is
recommended by Hand and Taylor (1987). See
summary.manova
for further details. For the "Spherical"
test, proportionality is usually with the
identity matrix but a different matrix can be specified using Sigma
).
Corrections for asphericity known as the Greenhouse--Geisser,
respectively Huynh--Feldt, epsilons are given and adjusted T
can be given directly or specified as
the difference between two projections onto the spaces spanned by
M
and X
, which in turn can be given as matrices or as
model formulas with respect to idata
(the tests will be
invariant to parametrization of the quotient space M/X
). As with anova.lm
, all test statistics use the SSD matrix from
the largest model considered as the (generalized) denominator. Contrary to other anova
methods, the intercept is not excluded
from the display in the single-model case. When contrast
transformations are involved, it often makes good sense to test for a
zero intercept.summary.manova
require(graphics)
utils::example(SSD) # Brings in the mlmfit and reacttime objects
mlmfit0 <- update(mlmfit, ~0)
### Traditional tests of intrasubj. contrasts
## Using MANOVA techniques on contrasts:
anova(mlmfit, mlmfit0, X = ~1)
## Assuming sphericity
anova(mlmfit, mlmfit0, X = ~1, test = "Spherical")
### tests using intra-subject 3x2 design
idata <- data.frame(deg = gl(3, 1, 6, labels = c(0, 4, 8)),
noise = gl(2, 3, 6, labels = c("A", "P")))
anova(mlmfit, mlmfit0, X = ~ deg + noise,
idata = idata, test = "Spherical")
anova(mlmfit, mlmfit0, M = ~ deg + noise, X = ~ noise,
idata = idata, test = "Spherical" )
anova(mlmfit, mlmfit0, M = ~ deg + noise, X = ~ deg,
idata = idata, test = "Spherical" )
f <- factor(rep(1:2, 5)) # bogus, just for illustration
mlmfit2 <- update(mlmfit, ~f)
anova(mlmfit2, mlmfit, mlmfit0, X = ~1, test = "Spherical")
anova(mlmfit2, X = ~1, test = "Spherical")
# one-model form, eqiv. to previous
### There seems to be a strong interaction in these data
plot(colMeans(reacttime))
Run the code above in your browser using DataLab