View source: R/multinom_weightit.R
| multinom_weightit | R Documentation |
multinom_weightit() fits a multinomial logistic regression model with a covariance matrix that accounts for estimation of weights, if supplied. By default, this function uses M-estimation to construct a robust covariance matrix using the estimating equations for the weighting model and the outcome model when available.
multinom_weightit(
formula,
data,
link = "logit",
weightit = NULL,
vcov = NULL,
cluster,
R = 500L,
offset,
start = NULL,
control = list(...),
x = FALSE,
y = TRUE,
contrasts = NULL,
fwb.args = list(),
br = FALSE,
...
)
formula |
an object of class |
data |
a data frame containing the variables in the model. If not found
in data, the variables are taken from |
link |
a string corresponding to the desired link function. Currently, only
|
weightit |
a |
vcov |
string; the method used to compute the variance of the estimated
parameters. Allowable options include |
cluster |
optional; for computing a cluster-robust variance matrix, a
variable indicating the clustering of observations, a list (or data frame)
thereof, or a one-sided formula specifying which variable(s) from the
fitted model should be used. Note the cluster-robust variance matrix uses a
correction for small samples, as is done in |
R |
the number of bootstrap replications when |
offset |
optional; a numeric vector containing the model offset. See
|
start |
optional starting values for the coefficients. |
control |
a list of parameters for controlling the fitting process. |
x, y |
logical values indicating whether the response vector and model matrix used in the fitting process should be returned as components of the returned value. |
contrasts |
an optional list defining contrasts for factor variables.
See |
fwb.args |
an optional list of further arguments to supply to
\pkgfunfwbfwb when |
br |
|
... |
arguments to be used to form the default control argument if it is not supplied directly. |
multinom_weightit() implements multinomial logistic regression using a
custom function in WeightIt that optionally computes a coefficient variance matrix that can be adjusted to
account for estimation of the weights if a weightit or weightitMSM object
is supplied to the weightit argument. This implementation is less robust to
failures than other multinomial logistic regression solvers and should be
used with caution. Unless br = TRUE, estimation of coefficients should align with that from
mlogit::mlogit() and mclogit::mblogit() but might differ from nnet::multinom() due to the relaxed convergence thresholds of the latter.
When no argument is supplied to
weightit or there is no "Mparts" attribute in the supplied object, the
default variance matrix returned will be the "HC0" sandwich variance matrix,
which is robust to misspecification of the outcome family (including
heteroscedasticity). Otherwise, the default variance matrix uses M-estimation
to additionally adjust for estimation of the weights. When possible, this
often yields smaller (and more accurate) standard errors. See the individual
methods pages to see whether and when an "Mparts" attribute is included in
the supplied object. To request that a variance matrix be computed that
doesn't account for estimation of the weights even when a compatible
weightit object is supplied, set vcov = "HC0", which treats the weights
as fixed.
Bootstrapping can also be used to compute the coefficient variance matrix;
when vcov = "BS" or vcov = "FWB", which implement the traditional
resampling-based and fractional weighted bootstrap, respectively, the entire
process of estimating the weights and fitting the outcome model is repeated
in bootstrap samples (if a weightit object is supplied). This accounts for
estimation of the weights and can be used with any weighting method. It is
important to set a seed using set.seed() to ensure replicability of the
results. The fractional weighted bootstrap is more reliable but requires the
weighting method to accept sampling weights (which most do, and you'll get an
error if it doesn't). Setting vcov = "FWB" and supplying fwb.args = list(wtype = "multinom")
also performs the resampling-based bootstrap but
with the additional features fwb provides (e.g., a progress bar and
parallelization).
When br = TRUE, the coefficients solve the bias-reducing adjusted score
equations of Firth (1993) instead of the score equations, which removes the
first-order term in the asymptotic bias of the estimates. Because the
multinomial logistic regression model uses the canonical link, the adjusted
score function is the gradient of the log-likelihood penalized by the Jeffreys
invariant prior, \log|F(\beta)|/2, where F(\beta) is the expected
information matrix (Kosmidis & Firth, 2011). Consequently, the estimates are
always finite and correspond to the maximum of a penalized likelihood.
Estimation should align with that from \pkgfunbrglm2brmultinom with its
default type = "AS_mean".
Weights are treated as multinomial totals, as they are by brglm2, which
makes the estimates invariant to whether the data are supplied as individual
units or as groups of identical units with weights equal to their counts. As
for br = TRUE in glm_weightit(), the reported variance matrix uses the
information matrix at the estimates rather than the Jacobian of the adjusted
score, i.e., the adjustment is treated as fixed; the two differ by a term that
vanishes asymptotically. M-estimation and bootstrapping can be used with
br = TRUE just as they can without it.
A multinom_weightit object.
Unless vcov = "none", the vcov component contains the covariance matrix
adjusted for the estimation of the weights if requested and a compatible
weightit object was supplied. The vcov_type component contains the type
of variance matrix requested. If cluster is supplied, it will be stored in
the "cluster" attribute of the output object, even if not used.
The model component of the output object (also the model.frame() output)
will include two extra columns when weightit is supplied: (weights)
containing the weights used in the model (the product of the estimated
weights and the sampling weights, if any) and (s.weights) containing the
sampling weights, which will be 1 if s.weights is not supplied in the
original weightit() call.
Firth, D. (1993). Bias reduction of maximum likelihood estimates. Biometrika, 80(1), 27–38. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1093/biomet/80.1.27")}
Kosmidis, I., & Firth, D. (2011). Multinomial logit bias reduction via the Poisson log-linear model. Biometrika, 98(3), 755–759. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1093/biomet/asr026")}
glm_weightit() for fitting generalized linear models that adjust for estimation of the weights.
ordinal_weightit() for fitting ordinal regression models that adjust for estimation of the weights.
coxph_weightit() for fitting Cox proportional hazards models that adjust for estimation of the weights.
mclogitmblogit for fitting multinomial regression models that do not account for estimation of the weights.
brglm2brmultinom for fitting bias-reduced multinomial regression models that do not account for estimation of the weights.
data("lalonde", package = "cobalt")
# Logistic regression ATT weights
w.out <- weightit(treat ~ age + educ + married + re74,
data = lalonde, method = "glm",
estimand = "ATT")
# Multinomial logistic regression outcome model
# that adjusts for estimation of weights
lalonde$re78_3 <- factor(findInterval(lalonde$re78,
c(0, 5e3, 1e4)))
fit <- multinom_weightit(re78_3 ~ treat,
data = lalonde,
weightit = w.out)
summary(fit)
# Same model using mean bias reduction
fit_br <- multinom_weightit(re78_3 ~ treat,
data = lalonde,
weightit = w.out,
br = TRUE)
summary(fit_br)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.