aov                   package:base                   R Documentation

Fit an Analysis of Variance Model

Description:

     Fit an analysis of variance model by a call to `lm' for each
     stratum.

Usage:

     aov(formula, data = NULL, projections = FALSE, qr = TRUE,
         contrasts = NULL, ...)

Arguments:

 formula: A formula specifying the model.

    data: A data frame in which the variables specified in the formula
          will be found. If missing, the variables are searched for in
          the standard way.

projections: Logical flag: should the projections be returned?

      qr: Logical flag: should the QR decomposition be returned?

contrasts: A list of contrasts to be used for some of the factors in
          the formula. These are not used for any `Error' term, and
          supplying contrasts for factors only in the `Error' term will
          give a warning.

     ...: Arguments to be passed to `lm', such as `subset' or
          `na.action'.

Details:

     This provides a wrapper to `lm' for fitting linear models to
     balanced or unbalanced experimental designs.

     The main difference from `lm' is in the way `print', `summary' and
     so on handle the fit: this is expressed in the traditional
     language of the analysis of variance rather than of linear models.

     If the formula contains a single `Error' term, this is used to
     specify error strata, and appropriate models are fitted within
     each error stratum.

     The formula can specify multiple responses.

Value:

     An object of class `c("aov", "lm")' or for multiple responses of
     class `c("maov", "aov", "mlm", "lm")' or for multiple error strata
     of class `"aovlist"'.  There are `print' and `summary' methods
     available for these.

Author(s):

     B. D. Ripley

See Also:

     `lm', `alias', `proj', `model.tables'

Examples:

     ## From Venables and Ripley (1997) p.210.
     N <- c(0,1,0,1,1,1,0,0,0,1,1,0,1,1,0,0,1,0,1,0,1,1,0,0)
     P <- c(1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0)
     K <- c(1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,0)
     yield <- c(49.5,62.8,46.8,57.0,59.8,58.5,55.5,56.0,62.8,55.8,69.5,55.0,
                62.0,48.8,45.5,44.2,52.0,51.5,49.8,48.8,57.2,59.0,53.2,56.0)
     npk <- data.frame(block=gl(6,4), N=factor(N), P=factor(P),
                       K=factor(K), yield=yield)

     ( npk.aov <- aov(yield ~ block + N*P*K, npk) )
     summary(npk.aov)
     coefficients(npk.aov)

     ## as a test, not particularly sensible statistically
     op <- options(contrasts=c("contr.helmert", "contr.treatment"))
     npk.aovE <- aov(yield ~  N*P*K + Error(block), npk)
     npk.aovE
     summary(npk.aovE)
     options(op)# reset to previous

