mauchly.test {stats}R Documentation

Mauchly's Test of Sphericity


Tests whether a Wishart-distributed covariance matrix (or transformation thereof) is proportional to a given matrix.


mauchly.test(object, Sigma = diag(nrow = p),
   T = Thin.row(proj(M) - proj(X)), M = diag(nrow = p), X = ~0,
   idata = data.frame(index = seq_len(p)), ...)


object object of class SSD or mlm.
Sigma matrix to be proportional to.
T transformation matrix. By default computed from M and X.
M formula or matrix describing the outer projection (see below).
X formula or matrix describing the inner projection (see below).
idata data frame describing intra-block design.
... arguments to be passed to or from other methods.


Mauchly's test test for whether a covariance matrix can be assumed to be proportional to a given matrix.

It is common to transform the observations prior to testing. This typically involves transformation to intra-block differences, but more complicated within-block designs can be encountered, making more elaborate transformations necessary. A transformation matrix 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).

The common use of this test is in repeated measurements designs, with X=~1. This is almost, but not quite the same as testing for compound symmetry in the untransformed covariance matrix.

This is a generic function with methods for classes "mlm" and "SSD".


An object of class "htest"


The p-value differs slightly from that of SAS because a second order term is included in the asymptotic approximation in R.


T. W. Anderson (1958). An Introduction to Multivariate Statistical Analysis. Wiley.

See Also

SSD, anova.mlm


example(SSD) # Brings in the mlmfit and reacttime objects

### traditional test of intrasubj. contrasts
mauchly.test(mlmfit, X=~1) 

### 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")))
mauchly.test(mlmfit, X = ~ deg + noise, idata = idata)
mauchly.test(mlmfit, M = ~ deg + noise, X = ~ noise, idata=idata)

[Package stats version 2.5.0 Index]