EVAL_DEFAULT <- FALSE knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = EVAL_DEFAULT )
library(modsem)
By default, modsem()
creates product indicators for you based on the interaction specified in your model. Behind the scenes, modsem()
generates a total of 9 variables (product indicators) that are used as the indicators for your latent product.
m1 <- ' # Outer Model X =~ x1 + x2 + x3 Y =~ y1 + y2 + y3 Z =~ z1 + z2 + z3 # Inner model Y ~ X + Z + X:Z ' est1 <- modsem(m1, oneInt) cat(est1$syntax)
While this is often sufficient, you might want more control over how these indicators are created. In general, modsem()
offers two mechanisms for controlling the creation of product indicators:
1. By specifying the measurement model for your latent product yourself.
2. By using the mean()
and sum()
functions, collectively known as parceling operations.
By default, modsem()
creates all possible combinations of product indicators. However, another common approach is to match the indicators by order. For example, let's say you have an interaction between the latent variables X
and Z
: X =~ x1 + x2
and Z =~ z1 + z2
. By default, you would get XZ =~ x1z1 + x1z2 + x2z1 + x2z2
. If you prefer to use the matching approach, you would expect XZ =~ x1z1 + x2z2
instead. To achieve this, you can use the match = TRUE
argument.
m2 <- ' # Outer Model X =~ x1 + x2 Y =~ y1 + y2 Z =~ z1 + z2 # Inner model Y ~ X + Z + X:Z ' est2 <- modsem(m2, oneInt, match = TRUE) summary(est2)
If you want even more control, you can use the get_pi_syntax()
and get_pi_data()
functions to extract the modified syntax and data from modsem()
, allowing you to modify them as needed. This can be particularly useful in cases where you want to estimate a model using a feature in lavaan
that isn't available in modsem()
.
For example, the syntax for ordered and multigroup models (as of now) isn't as flexible in modsem()
as it is in lavaan
. You can modify the auto-generated syntax (along with the altered dataset) from modsem()
to suit your needs.
m3 <- ' # Outer Model X =~ x1 + x2 Y =~ y1 + y2 Z =~ z1 + z2 # Inner model Y ~ X + Z + X:Z ' syntax <- get_pi_syntax(m3) cat(syntax)
data <- get_pi_data(m3, oneInt) head(data)
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.