

   FFiitt aann AAnnaallyyssiiss ooff VVaarriiaannccee MMooddeell

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

   AArrgguummeennttss::

    formula: A formula specifying the model.

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

   projections: Logical flag: should the projections 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'.

   DDeessccrriippttiioonn::

        This provides a wrapper to `lm' for fitting linear mod-
        els to balanced or unbalanced experimental designs. The
        call to `lm' sets `singular.ok' to `TRUE' to allow for
        aliased effects.

        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.

   VVaalluuee::

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

   AAuutthhoorr((ss))::

        B.D. Ripley

   SSeeee AAllssoo::

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

   EExxaammpplleess::

        ## 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

