aov {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, ...)
    se.aov(object, n, type = "means")

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