Last data update: 2014.03.03

R: Compute and plot oneway analysis of covariance
 ancova R Documentation

## Compute and plot oneway analysis of covariance

### Description

Compute and plot oneway analysis of covariance. The result object is an `ancova` object which consists of an ordinary `aov` object with an additional `trellis` attribute. The `trellis` attribute is a `trellis` object consisting of a series of plots of `y ~ x`. The left set of panels is conditioned on the levels of the factor `groups`. The right panel is a superpose of all the groups.

### Usage

```ancova(formula, data.in = NULL, ...,
x, groups, transpose = FALSE,
display.plot.command = FALSE,
superpose.level.name = "superpose",
ignore.groups = FALSE, ignore.groups.name = "ignore.groups",
blocks, blocks.pch = letters[seq(levels(blocks))],
layout, between, main,
pch=trellis.par.get()\$superpose.symbol\$pch)

panel.ancova(x, y, subscripts, groups,
transpose = FALSE, ...,
coef, contrasts, classes,
ignore.groups, blocks, blocks.pch, blocks.cex, pch)

## The following are ancova methods for generic functions.
## S3 method for class 'ancova'
anova(object, ...)

## S3 method for class 'ancova'
predict(object, ...)

## S3 method for class 'ancova'
print(x, ...) ## prints the anova(x) and the trellis attribute

## S3 method for class 'ancova'
model.frame(formula, ...)

## S3 method for class 'ancova'
summary(object, ...)

## S3 method for class 'ancova'
plot(x, y, ...) ## standard lm plot.  y is always ignored.

## S3 method for class 'ancova'
coef(object, ...)

```

### Arguments

 `formula` A formula specifying the model. `data.in` 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. `...` Arguments to be passed to `aov`, such as `subset` or `na.action`. `x` Covariate in `ancova`, needed for plotting when the formula does not include `x`. `"aov"` object in `print.ancova`, to match the argument of the `print` generic function. Variable to plotted in `"panel.ancova"`. `groups` Factor. Needed for plotting when the formula does not include `groups` after the conditioning bar `"|"`. `transpose` S-Plus: The axes in each panel of the plot are transposed. The analysis is identical, just the axes displaying it have been interchanged. R: no effect. `display.plot.command` The default setting is usually what the user wants. The alternate value `TRUE` prints on the console the command that draws the graph. This is strictly for debugging the `ancova` command. `superpose.level.name` Name used in strip label for superposed panel. `ignore.groups` When `TRUE`, an additional panel showing all groups together with a common regression line is displayed. `ignore.groups.name` Name used in strip label for `ignore.groups` panel. `pch` Plotting character for groups. `blocks` Additional factor used to label points in the panels. `blocks.pch` Alternate set of labels used when a `blocks` factor is specified. `blocks.cex` Alternate set of `cex` used when a `blocks` factor is specified. `layout` The layout of multiple panels. The default is a single row. See details. `between` Space between the panels for the individual group levels and the superpose panel including all groups. `main` Character with a main header title to be done on the top of each page. `y,subscripts` In `"panel.ancova"`, see `panel.xyplot`. `object` An `"aov"`

object. The functions using this argument are methods for the similarly named generic functions.

 `coef, contrasts, classes` Internal variables used to communicate between `ancova` and `panel.ancova`. They keep track of the constant or different slopes and intercepts in each panel of the plot.

### Details

The `ancova` function does two things. It passes its arguments directly to the `aov` function and returns the entire `aov` object. It also rearranges the data and formula in its argument and passes that to the `xyplot` function. The `trellis` attribute is a `trellis` object consisting of a series of plots of `y ~ x`. The left set of panels is conditioned on the levels of the factor `groups`. The right panel is a superpose of all the groups.

### Value

The result object is an `ancova` object which consists of an ordinary `aov` object with an additional `trellis` attribute. The default print method is to print both the `anova` of the object and the `trellis` attribute.

### Author(s)

Richard M. Heiberger <rmh@temple.edu>

### References

Heiberger, Richard M. and Holland, Burt (2004b). Statistical Analysis and Data Display: An Intermediate Course with Examples in S-Plus, R, and SAS. Springer Texts in Statistics. Springer. ISBN 0-387-40270-5.

`ancova-class` `aov` `xyplot`. See `ancovaplot` for a newer set of functions that keep the graph and the `aov` object separate.

### Examples

```data(hotdog)

## y ~ x                     ## constant line across all groups
ancova(Sodium ~ Calories,     data=hotdog, groups=Type)

## y ~ a                     ## different horizontal line in each group
ancova(Sodium ~            Type, data=hotdog, x=Calories)

## This is the usual usage
## y ~ x + a  or  y ~ a + x  ## constant slope, different intercepts
ancova(Sodium ~ Calories + Type, data=hotdog)
ancova(Sodium ~ Type + Calories, data=hotdog)

## y ~ x * a  or  y ~ a * x  ## different slopes, and different intercepts
ancova(Sodium ~ Calories * Type, data=hotdog)
ancova(Sodium ~ Type * Calories, data=hotdog)

## y ~ a * x ## save the object and print the trellis graph
hotdog.ancova <- ancova(Sodium ~ Type * Calories, data=hotdog)
attr(hotdog.ancova, "trellis")

## label points in the panels by the value of the block factor
data(apple)
ancova(yield ~ treat + pre, data=apple, blocks=block)

##      demo("ancova")
## for a composite graph illustrating the four models listed above.
```

### Results

```
R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> library(HH)

Attaching package: 'TH.data'

The following object is masked from 'package:MASS':

geyser

> png(filename="/home/ddbj/snapshot/RGM3/R_CC/result/HH/ancova.Rd_%03d_medium.png", width=480, height=480)
> ### Name: ancova
> ### Title: Compute and plot oneway analysis of covariance
> ### Aliases: ancova 'analysis of covariance' covariance anova.ancova
> ###   predict.ancova print.ancova model.frame.ancova summary.ancova
> ###   plot.ancova coef.ancova panel.ancova
> ### Keywords: hplot dplot models regression
>
> ### ** Examples
>
> data(hotdog)
>
> ## y ~ x                     ## constant line across all groups
> ancova(Sodium ~ Calories,     data=hotdog, groups=Type)
Analysis of Variance Table

Response: Sodium
Df Sum Sq Mean Sq F value    Pr(>F)
Calories   1 106270  106270  14.515 0.0003693 ***
Residuals 52 380718    7321
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
>
> ## y ~ a                     ## different horizontal line in each group
> ancova(Sodium ~            Type, data=hotdog, x=Calories)
Analysis of Variance Table

Response: Sodium
Df Sum Sq Mean Sq F value Pr(>F)
Type       2  31739 15869.4  1.7778 0.1793
Residuals 51 455249  8926.4
>
> ## This is the usual usage
> ## y ~ x + a  or  y ~ a + x  ## constant slope, different intercepts
> ancova(Sodium ~ Calories + Type, data=hotdog)
Analysis of Variance Table

Response: Sodium
Df Sum Sq Mean Sq F value    Pr(>F)
Calories   1 106270  106270  34.654 3.281e-07 ***
Type       2 227386  113693  37.074 1.336e-10 ***
Residuals 50 153331    3067
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> ancova(Sodium ~ Type + Calories, data=hotdog)
Analysis of Variance Table

Response: Sodium
Df Sum Sq Mean Sq F value    Pr(>F)
Type       2  31739   15869  5.1749  0.009065 **
Calories   1 301917  301917 98.4526 2.089e-13 ***
Residuals 50 153331    3067
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
>
> ## y ~ x * a  or  y ~ a * x  ## different slopes, and different intercepts
> ancova(Sodium ~ Calories * Type, data=hotdog)
Analysis of Variance Table

Response: Sodium
Df Sum Sq Mean Sq F value    Pr(>F)
Calories       1 106270  106270 35.6885 2.747e-07 ***
Type           2 227386  113693 38.1815 1.195e-10 ***
Calories:Type  2  10402    5201  1.7466    0.1853
Residuals     48 142930    2978
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> ancova(Sodium ~ Type * Calories, data=hotdog)
Analysis of Variance Table

Response: Sodium
Df Sum Sq Mean Sq  F value    Pr(>F)
Type           2  31739   15869   5.3294  0.008124 **
Calories       1 301917  301917 101.3927 2.019e-13 ***
Type:Calories  2  10402    5201   1.7466  0.185267
Residuals     48 142930    2978
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
>
> ## y ~ a * x ## save the object and print the trellis graph
> hotdog.ancova <- ancova(Sodium ~ Type * Calories, data=hotdog)
> attr(hotdog.ancova, "trellis")
>
>
> ## label points in the panels by the value of the block factor
> data(apple)
> ancova(yield ~ treat + pre, data=apple, blocks=block)
Analysis of Variance Table

Response: yield
Df Sum Sq Mean Sq F value    Pr(>F)
treat      5    750     150  0.1486    0.9777
pre        1  54142   54142 53.6893 1.181e-06 ***
Residuals 17  17143    1008
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
>