contrasts {stats} | R Documentation |

## Get and Set Contrast Matrices

### Description

Set and view the contrasts associated with a factor.

### Usage

```
contrasts(x, contrasts = TRUE, sparse = FALSE)
contrasts(x, how.many = NULL) <- value
```

### Arguments

`x` |
a factor or a logical variable. |

`contrasts` |
logical. See ‘Details’. |

`sparse` |
logical indicating if the result should be sparse
(of class |

`how.many` |
integer number indicating how many contrasts should be
made. Defaults to one
less than the number of levels of |

`value` |
either a numeric matrix (or a sparse or dense matrix of a
class extending |

### Details

If contrasts are not set for a factor the default functions from
`options("contrasts")`

are used.

A logical vector `x`

is converted into a two-level factor with
levels `c(FALSE, TRUE)`

(regardless of which levels occur in the
variable).

The argument `contrasts`

is ignored if `x`

has a matrix
`contrasts`

attribute set. Otherwise if `contrasts = TRUE`

it is passed to a contrasts function such as
`contr.treatment`

and if `contrasts = FALSE`

an identity matrix is returned. Suitable functions have a first
argument which is the character vector of levels, a named argument
`contrasts`

(always called with `contrasts = TRUE`

) and
optionally a logical argument `sparse`

.

If `value`

supplies more than `how.many`

contrasts, the
first `how.many`

are used. If too few are supplied, a suitable
contrast matrix is created by extending `value`

after ensuring
its columns are contrasts (orthogonal to the constant term) and not
collinear.

### References

Chambers, J. M. and Hastie, T. J. (1992)
*Statistical models.*
Chapter 2 of *Statistical Models in S*
eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.

### See Also

`C`

,
`contr.helmert`

,
`contr.poly`

,
`contr.sum`

,
`contr.treatment`

;
`glm`

,
`aov`

,
`lm`

.

### Examples

```
utils::example(factor)
fff <- ff[, drop = TRUE] # reduce to 5 levels.
contrasts(fff) # treatment contrasts by default
contrasts(C(fff, sum))
contrasts(fff, contrasts = FALSE) # the 5x5 identity matrix
contrasts(fff) <- contr.sum(5); contrasts(fff) # set sum contrasts
contrasts(fff, 2) <- contr.sum(5); contrasts(fff) # set 2 contrasts
# supply 2 contrasts, compute 2 more to make full set of 4.
contrasts(fff) <- contr.sum(5)[, 1:2]; contrasts(fff)
## using sparse contrasts: % useful, once model.matrix() works with these :
ffs <- fff
contrasts(ffs) <- contr.sum(5, sparse = TRUE)[, 1:2]; contrasts(ffs)
stopifnot(all.equal(ffs, fff))
contrasts(ffs) <- contr.sum(5, sparse = TRUE); contrasts(ffs)
```

*stats*version 4.4.1 Index]