The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
modsem

modsem is
an R-package for estimating interaction (i.e., moderation)
effects between latent variables in structural equation models (SEMs).
See https://www.modsem.org for a tutorial.
modsem is available on CRAN and
GitHub, and can be installed as follows:
# From CRAN
install.packages("modsem")
# Latest version from GitHub
install.packages("devtools")
devtools::install_github("kss2k/modsem", build_vignettes = TRUE)Note: The package needs to be compiled from source
on macOS (if installing via GitHub) and
Linux. If you have issues installing the package on
macOS, you might need to install the gfortran
compiler. A C++ compiler is also required, but should be
installed by default on most systems. See the R for macOs page
for more information.
If you’re using Windows, consider installing OpenBLAS in R for Windows
for better perfmance. If you’re using a Linux distribution,
consider installing the ropenblas
package
There are a number of approaches for estimating interaction effects
in SEM. In modsem(), the method = "method"
argument allows you to choose which to use. Different approaches can be
categorized into two groups: Product Indicator (PI) and Distribution
Analytic (DA) approaches.
"ca" = constrained approach (Algina & Moulder,
2001)
"uca" = unconstrained approach (Marsh, 2004)"rca" = residual centering approach (Little et al.,
2006)"dblcent" = double centering approach (Marsh., 2013)
"pind" = basic product indicator approach (not
recommended)"lms" = The Latent Moderated Structural equations (LMS)
approach, see the vignette"qml" = The Quasi Maximum Likelihood (QML) approach,
see the vignette"mplus" = Mplus
Mplus, if it is installedlibrary(modsem)
m1 <- '
# Outer Model
X =~ x1 + x2 +x3
Y =~ y1 + y2 + y3
Z =~ z1 + z2 + z3
# Inner model
Y ~ X + Z + X:Z
'
# Double centering approach
est1_dca <- modsem(m1, oneInt)
summary(est1_dca)
# Constrained approach
est1_ca <- modsem(m1, oneInt, method = "ca")
summary(est1_ca)
# QML approach
est1_qml <- modsem(m1, oneInt, method = "qml")
summary(est1_qml, standardized = TRUE)
# LMS approach
est1_lms <- modsem(m1, oneInt, method = "lms")
summary(est1_lms)tpb <- "
# Outer Model (Based on Hagger et al., 2007)
ATT =~ att1 + att2 + att3 + att4 + att5
SN =~ sn1 + sn2
PBC =~ pbc1 + pbc2 + pbc3
INT =~ int1 + int2 + int3
BEH =~ b1 + b2
# Inner Model (Based on Steinmetz et al., 2011)
INT ~ ATT + SN + PBC
BEH ~ INT + PBC
BEH ~ PBC:INT
"
# double centering approach
est_tpb_dca <- modsem(tpb, data = TPB, method = "dblcent")
summary(est_tpb_dca)
# Constrained approach using Wrigths path tracing rules for generating
# the appropriate constraints
est_tpb_ca <- modsem(tpb, data = TPB, method = "ca")
summary(est_tpb_ca)
# LMS approach
est_tpb_lms <- modsem(tpb, data = TPB, method = "lms")
summary(est_tpb_lms, standardized = TRUE)
# QML approach
est_tpb_qml <- modsem(tpb, data = TPB, method = "qml")
summary(est_tpb_qml, standardized = TRUE)est2 <- modsem('y1 ~ x1 + z1 + x1:z1', data = oneInt, method = "dblcent")
summary(est2)m3 <- '
# Outer Model
X =~ x1 + x2 +x3
Y =~ y1 + y2 + y3
# Inner model
Y ~ X + z1 + X:z1
'
est3 <- modsem(m3, oneInt, method = "dblcent",
res.cov.method = "none") # res.cov.method = "simple" will lead
# to an unidentifiable model. Instead we
# constrain them to zero
summary(est3)These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.