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,
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 'x' and 'z'. If 'NULL', the interaction term is constructed as 'paste(x, z, sep = ":")' and adjusted for specific model classes. |
model |
A model object of class ''modsem_pi'‘, '’modsem_da'‘, '’modsem_mplus'‘, or '’lavaan''. The model should include paths for the predictors ('x', 'z', and 'xz') to the outcome ('y'). |
min_x |
Numeric. Minimum value of 'x' in z-scores. Default is -3. |
max_x |
Numeric. Maximum value of 'x' in z-scores. Default is 3. |
min_z |
Numeric. Minimum value of 'z' in z-scores. Default is -3. |
max_z |
Numeric. Maximum value of 'z' in z-scores. Default is 3. |
detail |
Numeric. Step size for the grid of 'x' and 'z' values, determining the resolution of the surface. Smaller values increase plot resolution. Default is '1e-2'. |
... |
Additional arguments passed to 'plotly::plot_ly'. |
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.
## Not run:
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_surface("X", "Z", "Y", model = est1)
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)
# Causal Relationsships
INT ~ ATT + SN + PBC
BEH ~ INT + PBC
# BEH ~ ATT:PBC
BEH ~ PBC:INT
# BEH ~ PBC:PBC
"
est2 <- modsem(tpb, TPB, method = "lms")
plot_surface(x = "INT", z = "PBC", y = "BEH", model = est1)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.