lavaan.miThis is an R package whose primary purpose is to extend the
functionality of the R package lavaan. When incomplete data
have been multiply imputed, the lavaan.mi package allows
users to fit structural equation models as they would using the
lavaan package.
The development version can be installed from GitHub using the remotes
package:
remotes::install_github("TDJorgensen/lavaan.mi")
lavaan.mi to lavaanThe top 4 lines of the table below indicate the
lavaan.mi::lavaan.mi() function corresponds to the
lavaan::lavaan() function, as do the wrappers
cfa.mi(), sem.mi(), and
growth.mi(), all of which return an object of class
lavaan.mi.
lavaan Function |
lavaan.mi Function |
|---|---|
lavaan() |
lavaan.mi() |
cfa() |
cfa.mi() |
sem() |
sem.mi() |
growth() |
growth.mi() |
parameterEstimates() |
parameterEstimates.mi() |
standardizedSolution() |
standardizedSolution.mi() |
lavTestLRT() |
lavTestLRT.mi() |
lavTestWald() |
lavTestWald.mi() |
lavTestScore() |
lavTestScore.mi() |
modIndices() |
modIndices.mi() |
lavResiduals() |
lavResiduals.mi() |
The data= argument must be a list of
data.frames rather than a single data.frame,
and the specified lavaan::model.syntax will be applied to
each data.frame in the list.
lavaanListThe lavaan.mi class inherits from class
lavaanList (from the lavaan package),
extending it with a few additional and customized slots (see
class?lavaanList and class?lavaan.mi for
details).
It is not wise to use “lazy loading” (i.e., calling
lavaan.mi::lavaan.mi() without loading
library(lavaan.mi) explicitly) because R may have trouble
finding the correct methods in the package for applying generic
functions (e.g., summary) to lavaan.mi-class
objects. This occasionally happened in the semTools package
as well. When the correct methods are not found, then the generic
function will revert to the methods written for
lavaanList-class objects (e.g., summary() will
only have an est.ave column for the average estimate across
data sets). In most cases (e.g., fitted(),
anova(), residuals(), etc.), this will cause
an error because few methods have been written for
lavaanList-class objects.
Additional lavaan output can be obtained per imputation
using the FUN= argument, which is applied to a
lavaan-class object formed from the result of each
imputation (prior to its being stored more succinctly in a
lavaanList-class object). The last ?lavaan.mi
help-page example demonstrates how to obtain and extract additional
output.
lavaan and lavaan.mi objectsMany remaining methods written for lavaan-class objects
are also available for lavaan.mi-class objects (also see
class?lavaan.mi for a list and descriptions of
arguments):
show()summary()fitMeasures()anova(), which simply calls
lavTestLRT.mi()nobs()coef()vcov()fitted.values() and alias fitted()residuals() and alias resid(), which call
lavResiduals.mi()lavaan.mi to semToolsMany of the functions in the semTools package continue
to be available for lavaan.mi-class objects (e.g.,
semTools::compRelSEM() for model-based reliability), and
functions such as semTools::parcelAllocation() and
semTools::plausibleValues() are enhanced by allowing their
output to be analyzed using lavaan.mi().