EVAL_DEFAULT <- FALSE knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = TRUE )
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.
Note that the vals_z
argument (as well as the values of x
) are scaled by the
mean and standard deviation of the variables. Unless the rescale
argument is set to FALSE
.
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 " est1 <- modsem(m1, data = oneInt) plot_interaction(x = "X", z = "Z", y = "Y", vals_z = -3:3, 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 " est2 <- modsem(tpb, TPB, method = "lms") plot_interaction(x = "INT", z = "PBC", y = "BEH", 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 ' est1 <- modsem(m1, data = lavaan::HolzingerSwineford1939, method = "ca") plot_jn(x = "speed", z = "textual", y = "visual", model = est1, 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 " est2 <- modsem(tpb, TPB, method = "qml") plot_jn(x = "INT", z = "PBC", y = "BEH", model = est2, min_z = -1.5, max_z = -0.5)
The plot_surface()
function can be used to plot 3D surface plots 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 dependent variable. The function will plot the 3D surface plot for the interaction effect.
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 " est2 <- modsem(tpb, TPB, method = "qml") plot_surface(x = "INT", z = "PBC", y = "BEH", model = est2)
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.