View source: R/plot_interaction.R
| plot_surface | R Documentation |
Generates a 3D surface plot to visualize the interaction effect of two variables (x and z)
on an outcome (y)
using parameter estimates from a supported model object (e.g., lavaan or modsem).
The function allows specifying ranges for x and z in standardized z-scores, which are then transformed
back to the original scale based on their means and standard deviations.
plot_surface(
x,
z,
y,
xz = NULL,
model,
min_x = -3,
max_x = 3,
min_z = -3,
max_z = 3,
standardized = FALSE,
detail = 0.01,
...
)
x |
A character string specifying the name of the first predictor variable. |
z |
A character string specifying the name of the second predictor variable. |
y |
A character string specifying the name of the outcome variable. |
xz |
Optional. A character string or vector specifying the interaction term between |
model |
A model object of class |
min_x |
Numeric. Minimum value of |
max_x |
Numeric. Maximum value of |
min_z |
Numeric. Minimum value of |
max_z |
Numeric. Maximum value of |
standardized |
Should coefficients be standardized beforehand? |
detail |
Numeric. Step size for the grid of |
... |
Additional arguments passed to |
The input min_x, max_x, min_z, and max_z define the range of x and z values in z-scores.
These are scaled by the standard deviations and shifted by the means of the respective variables, obtained
from the model parameter table. The resulting surface shows the predicted values of y over the grid of x and z.
The function supports models of class modsem (with subclasses modsem_pi, modsem_da, modsem_mplus) and lavaan.
For lavaan models, it is not designed for multigroup models, and a warning will be issued if multiple groups are detected.
A plotly surface plot object displaying the predicted values of y across the grid of x and z values.
The color bar shows the values of y.
The interaction term (xz) may need to be manually specified for some models. For non-lavaan models,
interaction terms may have their separator (:) removed based on circumstances.
m1 <- "
# Outer Model
X =~ x1 + x2 + x3
Z =~ z1 + z2 + z3
Y =~ y1 + y2 + y3
# Inner model
Y ~ X + Z + X:Z
"
est1 <- modsem(m1, data = oneInt)
plot_surface("X", "Z", "Y", model = est1)
## Not run:
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", nodes = 32)
plot_surface(x = "INT", z = "PBC", y = "BEH", model = est2)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.