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, …)
an object of a class that inherits from the vector linear model (VLM).
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.
Single integer.
The index for a linear/additive predictor,
it must have a value from the set 1:M
,
and type = "lm"
must be assigned.
Then it returns a subset of the VLM matrix corresponding to
the linpred.index
th linear/additive predictor;
this is a LM-type matrix.
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.
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"
.
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
).
Yee, T. W. and Hastie, T. J. (2003) Reduced-rank vector generalized linear models. Statistical Modelling, 3, 15--41.
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.
# NOT RUN {
# Illustrates smart prediction
pneumo <- transform(pneumo, let = log(exposure.time))
fit <- vglm(cbind(normal, mild, severe) ~ poly(c(scale(let)), 2),
multinomial, data = pneumo, trace = TRUE, x = FALSE)
class(fit)
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))
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
# }
Run the code above in your browser using DataLab