Construct the Design Matrix of a VLM Object
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"
).
model.matrixvlm(object, type = c("vlm", "lm", "lm2", "bothlmlm2"), linpred.index = NULL, ...)
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 |
linpred.index |
Vector of integers.
The index for a linear/additive predictor,
it must have values from the set |
... |
further arguments passed to or from other methods.
These include |
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
).
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.
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.
# (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
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.