The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
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[@]dogado.de.
library(modsem)
modsem
introduces a new feature to the
lavaan
syntax—the semicolon operator (:
). The
semicolon operator works the same way as in the lm()
function. To specify an interaction effect between two variables, you
join them by Var1:Var2
.
Models can be estimated using one of the product indicator approaches
("ca"
, "rca"
, "dblcent"
,
"pind"
) or by using the latent moderated structural
equations approach ("lms"
) or the quasi maximum likelihood
approach ("qml"
). The product indicator approaches are
estimated via lavaan
, while the lms
and
qml
approaches are estimated via modsem
itself.
Here is a simple example of how to specify an interaction effect
between two latent variables in lavaan
.
<- '
m1 # Outer Model
X =~ x1 + x2 + x3
Y =~ y1 + y2 + y3
Z =~ z1 + z2 + z3
# Inner Model
Y ~ X + Z + X:Z
'
<- modsem(m1, oneInt)
est1 summary(est1)
By default, the model is estimated using the "dblcent"
method. If you want to use another method, you can change it using the
method
argument.
<- modsem(m1, oneInt, method = "lms")
est1 summary(est1)
modsem
allows you to estimate interactions between not
only latent variables but also observed variables. Below, we first run a
regression with only observed variables, where there is an interaction
between x1
and z2
, and then run an equivalent
model using modsem()
.
<- lm(y1 ~ x1*z1, oneInt)
reg1 summary(reg1)
modsem
When you have interactions between observed variables, it is
generally recommended to use method = "pind"
. Interaction
effects with observed variables are not supported by the
LMS
and QML
approaches. In some cases, you can
define a latent variable with a single indicator to estimate the
interaction effect between two observed variables in the
LMS
and QML
approaches, but this is generally
not recommended.
# Using "pind" as the method (see Chapter 3)
<- modsem('y1 ~ x1 + z1 + x1:z1', data = oneInt, method = "pind")
est2 summary(est2)
modsem
also allows you to estimate interaction effects
between latent and observed variables. To do so, simply join a latent
and an observed variable with a colon (e.g.,
'latent:observer'
). As with interactions between observed
variables, it is generally recommended to use
method = "pind"
for estimating the effect between latent
and observed variables.
<- '
m3 # Outer Model
X =~ x1 + x2 + x3
Y =~ y1 + y2 + y3
# Inner Model
Y ~ X + z1 + X:z1
'
<- modsem(m3, oneInt, method = "pind")
est3 summary(est3)
Quadratic effects are essentially a special case of interaction
effects. Thus, modsem
can also be used to estimate
quadratic effects.
<- '
m4 # Outer Model
X =~ x1 + x2 + x3
Y =~ y1 + y2 + y3
Z =~ z1 + z2 + z3
# Inner Model
Y ~ X + Z + Z:X + X:X
'
<- modsem(m4, oneInt, method = "qml")
est4 summary(est4)
Here is a more complex example using the theory of planned behavior (TPB) model.
<- '
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 + INT:PBC
'
# The double-centering approach
<- modsem(tpb, TPB)
est_tpb
# Using the LMS approach
<- modsem(tpb, TPB, method = "lms")
est_tpb_lms summary(est_tpb_lms)
Here is an example that includes two quadratic effects and one
interaction effect, using the jordan
dataset. The dataset
is a subset of the PISA 2006 dataset.
<- '
m2 ENJ =~ enjoy1 + enjoy2 + enjoy3 + enjoy4 + enjoy5
CAREER =~ career1 + career2 + career3 + career4
SC =~ academic1 + academic2 + academic3 + academic4 + academic5 + academic6
CAREER ~ ENJ + SC + ENJ:ENJ + SC:SC + ENJ:SC
'
<- modsem(m2, data = jordan)
est_jordan <- modsem(m2, data = jordan, method = "qml")
est_jordan_qml summary(est_jordan_qml)
Note: Other approaches also work but may be quite
slow depending on the number of interaction effects, particularly for
the LMS
and constrained approaches.
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.
Health stats visible at Monitor.