fit_model {mi} | R Documentation |
Wrappers To Fit a Model
Description
The methods are called by the mi
function to model a given
missing_variable
as a function of all the other
missing_variable
s and also their missingness pattern.
By overwriting these methods, users can change the way a
missing_variable
is modeled for the purposes of imputing
its missing values. See also the table in missing_variable
.
Usage
fit_model(y, data, ...)
Arguments
y |
An object that inherits from |
data |
|
... |
Additional arguments, not currently utilized |
Details
In mi
, each missing_variable
is modeled as a function of
all the other missing_variable
s plus their missingness pattern. The
fit_model
methods are typically short wrappers around a statistical model fitting
function and return the estimated model. The model is then passed to one of the
mi-methods
to impute the missing values of that missing_variable
.
Users can easily overwrite these methods to estimate a different model, such as wrapping
glm
instead of bayesglm
. See the source code for examples,
but the basic outline is to first extract the X
slot of the
missing_data.frame
, then drop some of its columns using the index
slot
of the missing_data.frame
, next pass the result along with the data
slot
of y
to a statistical fitting function, and finally returned the appropriately classed
result (along with the subset of X
used in the model).
Many of the optional arguments to a statistical fitting function can be specified using the
slots of y
(e.g. its family
slot) or the slots of data (e.g. its
weights
slot).
The exception is the method where y
is missing, which is used internally by
mi
, and should not be overwritten unless great care is taken to understand
its role.
Value
If y
is missing, then the modified missing_data.frame
passed to
data
is returned. Otherwise, the estimated model is returned as a classed
list object.
Author(s)
Ben Goodrich and Jonathan Kropko, for this version, based on earlier versions written by Yu-Sung Su, Masanao Yajima, Maria Grazia Pittau, Jennifer Hill, and Andrew Gelman.
See Also
missing_variable
, mi
, get_parameters
Examples
getMethod("fit_model", signature(y = "binary", data = "missing_data.frame"))
setMethod("fit_model", signature(y = "binary", data = "missing_data.frame"), def =
function(y, data, ...) {
to_drop <- data@index[[y@variable_name]]
X <- data@X[, -to_drop]
start <- NULL
# using glm.fit() instead of bayesglm.fit()
out <- glm.fit(X, y@data, weights = data@weights[[y@variable_name]], start = start,
family = y@family, Warning = FALSE, ...)
out$x <- X
class(out) <- c("glm", "lm") # not "bayesglm" class anymore
return(out)
})
## Not run:
if(!exists("imputations", env = .GlobalEnv)) {
imputations <- mi:::imputations # cached from example("mi-package")
}
imputations <- mi(imputations) # will use new fit_model() method for binary variables
## End(Not run)