Learn R Programming

VGAM (version 1.1-12)

model.matrixvlm: 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, label.it = TRUE, ...)

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.

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.indexth 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.

label.it

Logical. Label the row and columns with character names? If FALSE, time and memory might be saved if the big model matrix is very large. The argument is only used when type = "vlm".

...

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).

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, trim.constraints, add1.vglm, drop1.vglm, step4vglm.

Examples

Run this code
# (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

Run the code above in your browser using DataLab