

   CCoonnssttrruucctt ddeessiiggnn mmaattrriicceess

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

   AArrgguummeennttss::

    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' contain-
             ing `factor's.

       xlev: to be used as argument of `model.frame' if `data'
             has no `"terms"' attribute.

   DDeessccrriippttiioonn::

        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 impor-
        tant. If `contrasts' is specified it overrides the
        default factor coding for that variable.

   VVaalluuee::

        The design matrix for a regression model with the spec-
        ified formula and data.

   RReeffeerreenncceess::

        Chambers and Hastie: "Statistical Models in S".

   SSeeee AAllssoo::

        `model.frame', `terms'

   EExxaammpplleess::

        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

