model.matrix              package:base              R Documentation

Construct Design Matrices

Description:

     `model.matrix' creates a design matrix.

Usage:

     model.matrix   (object, ...)
     model.matrix(object, data = environment(object),
                  contrasts.arg = NULL, xlev = NULL, ...)

Arguments:

  object: an object of an appropriate class. For the default method, 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.

     ...: further arguments passed to or from other methods.

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

