View source: R/predict.glm_weightit.R
predict.glm_weightit | R Documentation |
glm_weightit
objectspredict()
generates predictions for models fit using glm_weightit()
, ordinal_weightit()
, multinom_weightit()
, or coxph_weightit()
. This page only details the predict()
methods after using glm_weightit()
, ordinal_weightit()
, or multinom_weightit()
. See survival::predict.coxph()
for predictions when fitting Cox proportional hazards models using coxph_weightit()
.
## S3 method for class 'glm_weightit'
predict(object, newdata = NULL, type = "response", na.action = na.pass, ...)
## S3 method for class 'ordinal_weightit'
predict(
object,
newdata = NULL,
type = "response",
na.action = na.pass,
values = NULL,
...
)
## S3 method for class 'multinom_weightit'
predict(
object,
newdata = NULL,
type = "response",
na.action = na.pass,
values = NULL,
...
)
object |
a |
newdata |
optionally, a data frame in which to look for variables with which to predict. If omitted, the fitted values applied to the original dataset are used. |
type |
the type of prediction desired. Allowable options include |
na.action |
function determining what should be done with missing values in |
... |
further arguments passed to or from other methods. |
values |
when |
For generalized linear models other than ordinal and multinomial models, see stats::predict.glm()
for more information on how predictions are computed and which arguments can be specified. Note that standard errors cannot be computed for the predictions using predict.glm_weightit()
.
For ordinal and multinomial models, setting type = "mean"
computes the expected value of the outcome for each unit; this corresponds to the sum of the values supplied in values
weighted by the predicted probability of those values. If values
is omitted, predict()
will attempt to convert the outcome levels to numeric values, and if this cannot be done, an error will be thrown. values
should be specified as a named vector, e.g., values = c(one = 1, two = 2, three = 3)
, where "one"
, "two"
, and "three"
are the original outcome levels and 1, 2, and 3 are the numeric values they correspond to. This method only makes sense to use if the outcome levels meaningfully correspond to numeric values.
For ordinal models, setting type = "link"
(also "lp"
) computes the linear predictor without including the thresholds. This can be interpreted as the prediction of the latent variable underlying the ordinal response. This cannot be used with multinomial models.
A numeric vector containing the desired predictions, except for the following circumstances when an ordinal or multinomial model was fit:
when type = "response"
, a numeric matrix with a row for each unit and a column for each level of the outcome with the predicted probability of the corresponding outcome in the cells
when type = "class"
, a factor with the model predicted class for each unit; for ordinal models, this will be an ordered factor.
stats::predict.glm()
for predictions from generalized linear models. glm_weightit()
for the fitting function. survival::predict.coxph()
for predictions from Cox proportional hazards models.
data("lalonde", package = "cobalt")
# Logistic regression model
fit1 <- glm_weightit(
re78 > 0 ~ treat * (age + educ + race + married +
re74 + re75),
data = lalonde, family = binomial, vcov = "none")
summary(predict(fit1))
# G-computation using predicted probabilities
p0 <- predict(fit1, type = "response",
newdata = transform(lalonde,
treat = 0))
p1 <- predict(fit1, type = "response",
newdata = transform(lalonde,
treat = 1))
mean(p1) - mean(p0)
# Multinomial logistic regression model
lalonde$re78_3 <- factor(findInterval(lalonde$re78,
c(0, 5e3, 1e4)),
labels = c("low", "med", "high"))
fit2 <- multinom_weightit(
re78_3 ~ treat * (age + educ + race + married +
re74 + re75),
data = lalonde, vcov = "none")
# Predicted probabilities
head(predict(fit2))
# Class assignment accuracy
mean(predict(fit2, type = "class") == lalonde$re78_3)
# G-computation using expected value of the outcome
values <- c("low" = 2500,
"med" = 7500,
"high" = 12500)
p0 <- predict(fit2, type = "mean", values = values,
newdata = transform(lalonde,
treat = 0))
p1 <- predict(fit2, type = "mean", values = values,
newdata = transform(lalonde,
treat = 1))
mean(p1) - mean(p0)
# Ordinal logistic regression
fit3 <- ordinal_weightit(
re78 ~ treat * (age + educ + race + married +
re74 + re75),
data = lalonde, vcov = "none")
# G-computation using expected value of the outcome;
# using original outcome values
p0 <- predict(fit3, type = "mean",
newdata = transform(lalonde,
treat = 0))
p1 <- predict(fit3, type = "mean",
newdata = transform(lalonde,
treat = 1))
mean(p1) - mean(p0)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.