library(modsem)
Interaction effects can be plotted using the included
plot_interaction()
function. This function takes a fitted
model object and the names of the two variables that are interacting.
The function will plot the interaction effect of the two variables,
where:
The function will also plot the 95% confidence interval for the interaction effect.
Here is a simple example using the double-centering approach:
<- "
m1 # Outer Model
X =~ x1
X =~ x2 + x3
Z =~ z1 + z2 + z3
Y =~ y1 + y2 + y3
# Inner Model
Y ~ X + Z + X:Z
"
<- modsem(m1, data = oneInt)
est1 plot_interaction("X", "Z", "Y", "X:Z", vals_z = -3:3, range_y = c(-0.2, 0), model = est1)
Here is a different example using the lms
approach in
the theory of planned behavior 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
BEH ~ PBC:INT
"
<- modsem(tpb, TPB, method = "lms")
est2 #> Warning: It is recommended that you have at least 32 nodes for interaction
#> effects between exogenous and endogenous variables in the lms approach 'nodes =
#> 24'
plot_interaction(x = "INT", z = "PBC", y = "BEH", xz = "PBC:INT",
vals_z = c(-0.5, 0.5), model = est2)
The plot_jn()
function can be used to plot
Johnson-Neyman regions for a given interaction effect. This function
takes a fitted model object, the names of the two variables that are
interacting, and the name of the interaction effect. The function will
plot the Johnson-Neyman regions for the interaction effect.
The plot_jn()
function will also plot the 95% confidence
interval for the interaction effect.
x
is the name of the x-variable, z
is the
name of the z-variable, and y
is the name of the
y-variable. model
is the fitted model object. The argument
min_z
and max_z
are used to specify the range
of values for the moderating variable.
Here is an example using the ca
approach in the
Holzinger-Swineford (1939) dataset:
<- '
m1 visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9
visual ~ speed + textual + speed:textual
'
<- modsem(m1, data = lavaan::HolzingerSwineford1939, method = "ca")
est plot_jn(x = "speed", z = "textual", y = "visual", model = est, max_z = 6)
Here is another example using the qml
approach in the
theory of planned behavior 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
BEH ~ PBC:INT
"
<- modsem(tpb, TPB, method = "qml")
est2 plot_jn(x = "INT", z = "PBC", y = "BEH", model = est2,
min_z = -1.5, max_z = -0.5)
#> Warning: Truncating SD-range on the right and left!