model.matrix {base} | R Documentation

## Construct Design Matrices

### Description

`model.matrix` creates a design matrix.

### Usage

    model.matrix   (object, ...)
    model.matrix.lm(object, ...)
    model.matrix.default(formula, data, contrasts.arg = NULL, xlev = NULL)

### Arguments

`formula` | a model formula or terms object.
`data` | a data frame created with `model.frame`.
`contrasts.arg` | A list, whose entries are contrasts suitable for input to the `contrasts` function and whose names are the names of columns of `data` containing `factor`s.
`xlev` | to be used as argument of `model.frame` if `data` has no `"terms"` attribute.
`x` | a model frame.

### Details

`model.matrix` creates a design matrix from the description given in `terms(formula)`, using the data in `data` which must contain columns with the same names as would be created by a call to `model.frame(formula)` or, more precisely, by evaluating `attr(terms(formula), "variables")`. There may be other columns and the order is not important. If `contrasts` is specified it overrides the default factor coding for that variable.

### Value

The design matrix for a regression model with the specified formula and data.

### References

Chambers, J. M. and Hastie, T. J. eds (1992) Statistical Models in S. Chapman & Hall, London.

### See Also

`model.frame`, `model.extract`, `terms`

### Examples

    data(trees)
    ff <- log(Volume) ~ log(Height) + log(Girth)
    str(m <- model.frame(ff, trees))
    mat <- model.matrix(ff, m)

    dd <- data.frame(a = gl(3,4), b = gl(4,1,12))# balanced 2-way
    options("contrasts")
    model.matrix(~ a + b, dd)
    model.matrix(~ a + b, dd, contrasts = list(a="contr.sum"))
    model.matrix(~ a + b, dd, contrasts = list(a="contr.sum", b="contr.poly"))
    m.orth <- model.matrix(~a+b, dd, contrasts = list(a="contr.helmert"))
    crossprod(m.orth)# m.orth is  ALMOST  orthogonal

[Package Contents]