(Version 0.2.4, updated on 2024-10-04, release history)
Functions for estimating indirect effects, conditional indirect effects, and conditional effects in a model with moderation, mediation, and/or moderated mediation fitted by structural equation modelling (SEM) or estimated by multiple regression. The package was introduced in:
Compute an unstandardized or standardized indirect effect or conditional indirect effect in a path model.
Form the confidence interval for this effect.
Nonparametric bootstrapping is fully supported,
while Monte Carlo is supported for models
fitted by lavaan::sem()
.
Multigroup models fitted by lavaan::sem()
are also supported in 0.1.14.2 and later versions.
Details can be found in
this article.
No need to define any parameters or similar
code when
fitting a model in lavaan::sem()
. Just focus on fitting
the model first. After a model has
been selected, users can compute the effect for nearly any path, from
nearly any variable, to nearly any other variables, conditional on
nearly any moderators,
and at any levels of the moderators.
(See vignette("manymome")
for details.) This is particularly
convenient for multigroup models fitted by lavaan::sem()
,
which are supported in 0.1.14.2 and later versions
(see this guide,
for an illustration).
Supports structural equation models fitted by lavaan::sem()
or by
path models fitted by regression using lm()
, although the
focus of this package is on structural equation models.
The interface of the main functions are nearly the same for
both approaches.
No limit on the number of predictors, mediators, and
outcome variables, other than those by lavaan::sem()
and lm()
.
For multigroup models fitted by lavaan::sem()
,
there is no inherent limit on the number of groups,
other than the limit due to `lavaan::sem(), if any
(supported in 0.1.14.2 and later versions).
Can estimate standardized indirect effects and standardized conditional indirect effects without the need to standardize the variables. The bootstrap and Monte Carlo confidence intervals for standardized effects correctly take into account the sampling variation of the standardizers (the standard deviations of the predictor and the outcome variable) by recomputing them in each bootstrap sample or replication.
Supports datasets with missing data
through lavaan::sem()
with full information maximum likelihood (fiml
).
In version 0.1.9.8 or later, it also supports missing data handled
by multiple imputation if the models are fitted by semTools::sem.mi()
or semTools::runMI()
(see vignette("do_mc_lavaan_mi")
).
Supports numeric and
categorical moderators. It has a function (factor2var()
) for the easy
creation of dummy variables in lavaan::sem()
, and can also capitalize on
the native support of categorical moderators in lm()
.
Bootstrapping, which can be time consuming, can
be conducted just once. The main functions for computing indirect effects
and conditional indirect effects can be called as many times as needed without redoing
bootstrapping because they can reuse pregenerated bootstrap
estimates (see vignette("manymome")
and vignette("do_boot")
).
Supports indirect effects among
latent variables for models fitted by lavaan::sem()
(see
vignette("med_lav")
).
For multigroup models fitted by lavaan::sem()
, it supports
comparing the direct or indirect effects along any path
between any two groups. That is, it uses the grouping variable
as a moderator (illustrated here;
supported in 0.1.14.2 and later versions).
Despite the aforementioned advantages, the current version of
manymome
has the following limitations:
Does not (officially) support
categorical x
-variables with more
than two categories. Note that most
functions will work with dichotomous
x
-variables, and the effect of x
is simply the difference in predicted
y
between the two levels if coded as
0 and 1 (or any coding with a
difference of 1, e.g., 1 and 2).
Does not support multilevel models (although lavaan
does).
For bootstrapping, only supports nonparametric bootstrapping, and supports only percentile and bias-corrected confidence interval. Does not support other bootstrapping methods such parametric bootstrapping.
Only supports OLS estimation when lm()
is used.
We would add more to this list (suggestions are welcomed by
adding GitHub issues) so that users (and we) know when
other tools should be used instead of manymome
, or whether
we can address these limitations in manymome
in the future.
A good starting point is the Get-Started article (vignette("manymome")
).
There are also articles (vignettes) on
special topics, such as how to use mod_levels()
to set
the levels of the moderators. More will be added.
For more information on this package, please visit its GitHub page:
https://sfcheung.github.io/manymome/
The stable version at CRAN can be installed by install.packages()
:
install.packages("manymome")
The latest developmental-but-stable version at GitHub can be installed by remotes::install_github()
:
remotes::install_github("sfcheung/manymome")
We developed the package stdmod
in 2021 for moderated regression. We included a function
(stdmod::stdmod_lavaan()
)
for standardized moderation effect in path models fitted
by lavaan::sem()
. However, in practice, path models nearly
always included indirect effects and so moderated mediation
is common in path models. Moreover, stdmod
is intended for
moderated regression, not for structural equation modeling. We
thought perhaps we could develop a more general tool for
models fitted by structural equation modelling based on
the interface we used in stdmod::stdmod_lavaan()
. In our own
projects, we also need to estimate indirect effects in models
frequently. Large sample sizes with missing data are also
common to us, for which bootstrapping is slow even with parallel
processing. Therefore, we developed manymome
to address these
needs.
If you have any suggestions and found any bugs or limitations, please feel feel to open a GitHub issue. Thanks.
https://github.com/sfcheung/manymome/issues
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.