Fit an analysis of variance model by a call to `lm`

for each stratum.

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

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`

. See ‘Details’ about `weights`

.

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 `c("aovlist", "listof")`

. There are
`print`

and `summary`

methods available for these.

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 that 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.

Weights can be specified by a `weights`

argument, but should not
be used with an `Error`

term, and are incompletely supported
(e.g., not by `model.tables`

).

Chambers, J. M., Freeny, A and Heiberger, R. M. (1992)
*Analysis of variance; designed experiments.*
Chapter 5 of *Statistical Models in S*
eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.

`lm`

, `summary.aov`

,
`replications`

, `alias`

,
`proj`

, `model.tables`

, `TukeyHSD`

# NOT RUN { ## From Venables and Ripley (2002) p.165. ## Set orthogonal contrasts. op <- options(contrasts = c("contr.helmert", "contr.poly")) ( npk.aov <- aov(yield ~ block + N*P*K, npk) ) # } # NOT RUN { summary(npk.aov) # } # NOT RUN { coefficients(npk.aov) ## to show the effects of re-ordering terms contrast the two fits aov(yield ~ block + N * P + K, npk) aov(terms(yield ~ block + N * P + K, keep.order = TRUE), npk) ## as a test, not particularly sensible statistically npk.aovE <- aov(yield ~ N*P*K + Error(block), npk) npk.aovE summary(npk.aovE) options(op) # reset to previous # }