R: Construct the Design Matrix of a VLM Object

model.matrixvlm {VGAM} | R Documentation

## Construct the Design Matrix of a VLM Object

### Description

Creates a design matrix. Two types can be returned: a large one (class `"vlm"` or one that inherits from this such as `"vglm"`) or a small one (such as returned if it were of class `"lm"`).

### Usage

    model.matrixvlm(object, type = c("vlm", "lm", "lm2", "bothlmlm2"),
                    linpred.index = NULL, ...)

### Arguments

`object` | an object of a class that inherits from the vector linear model (VLM).
`type` | Type of design matrix returned. The first is the default. The value `"vlm"` is the VLM model matrix corresponding to the `formula` argument. The value `"lm"` is the LM model matrix corresponding to the `formula` argument. The value `"lm2"` is the second (LM) model matrix corresponding to the `form2` argument. The value `"bothlmlm2"` means both LM and VLM model matrices.
`linpred.index` | Vector of integers. The index for a linear/additive predictor, it must have values from the set `1:M`. Also, if `length(linpred.index) == 1` then `type = "lm"` must be assigned, whereas if `length(linpred.index) > 1` then `type = "vlm"` must be assigned, Then it returns a subset of the VLM matrix corresponding to the `linpred.index`th linear/additive predictor(s); this is a LM-type matrix when it is of unit length. Currently some attributes are returned, but these may change in value in the future because of ongoing development work.
`...` | further arguments passed to or from other methods. These include `data` (which is a data frame created with `model.framevlm`), `contrasts.arg`, and `xlev`. See `model.matrix` for more information.

### Details

This function creates a design matrix from `object`. This can be a small LM object or a big VLM object (default). The latter is constructed from the former and the constraint matrices.

This code implements smart prediction (see `smartpred`).

### Value

The design matrix for a regression model with the specified formula and data. If `type = "bothlmlm2"` then a list is returned with components `"X"` and `"Xm2"`.

Sometimes (especially if `x = TRUE` when calling `vglm`) the model matrix has attributes: `"assign"` (`"lm"`-type) and `"vassign"` (`"vlm"`-type) and `"orig.assign.lm"` (`"lm"`-type). These are used internally a lot for bookkeeping, especially regarding the columns of both types of model matrices. In particular, constraint matrices and variable selection relies on this information a lot. The `"orig.assign.lm"` is the ordinary `"assign"` attribute for `lm` and `glm` objects.

### References

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

### See Also

`model.matrix`, `model.framevlm`, `predictvglm`, `smartpred`, `constraints.vlm`, `add1.vglm`, `drop1.vglm`, `step4vglm`.

### Examples

    # (I) Illustrates smart prediction ,,,,,,,,,,,,,,,,,,,,,,,
    pneumo <- transform(pneumo, let = log(exposure.time))
    fit <- vglm(cbind(normal, mild, severe) ~
                sm.poly(c(sm.scale(let)), 2),
                multinomial, data = pneumo, trace = TRUE, x = FALSE)
    class(fit)
    fit@smart.prediction  # Data-dependent parameters
    fit@x # Not saved on the object
    model.matrix(fit)
    model.matrix(fit, linpred.index = 1, type = "lm")
    model.matrix(fit, linpred.index = 2, type = "lm")

    (Check1 <- head(model.matrix(fit, type = "lm")))
    (Check2 <- model.matrix(fit, data = head(pneumo), type = "lm"))
    all.equal(c(Check1), c(Check2))  # Should be TRUE

    q0 <- head(predict(fit))
    q1 <- head(predict(fit, newdata = pneumo))
    q2 <- predict(fit, newdata = head(pneumo))
    all.equal(q0, q1)  # Should be TRUE
    all.equal(q1, q2)  # Should be TRUE

    # (II) Attributes ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    fit2 <- vglm(cbind(normal, mild, severe) ~ let,  # x = TRUE
                 multinomial, data = pneumo, trace = TRUE)
    fit2@x  # "lm"-type; saved on the object; note the attributes
    model.matrix(fit2, type = "lm")  # Note the attributes
    model.matrix(fit2, type = "vlm")  # Note the attributes

[Package VGAM version 1.1-3 Index]