EVAL_DEFAULT <- FALSE knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = EVAL_DEFAULT )
library(modsem)
As of version 1.0.13, the modsem function supports the estimation of higher order interaction effects.
A general implementation is however only available with the LMS approach. Currently,
estimation of higher order interaction effects using the QML approach is not available,
and only partially available for the product indicator approaches (i.e., modsem_pi()).
In modsem there are two datasets which are variants of the Theory of Planned Behaviour (TPB) dataset.
The TPB_2SO contains two second order latent variables,
INT (intention) which is a second order latent variable of ATT (attitude) and SN (subjective norm),
and PBC (perceived behavioural control) which is a second order latent variable of
PC (perceived control) and PB (perceived behaviour).
tpb_2so <- ' # First order latent variables ATT =~ att1 + att2 + att3 SN =~ sn1 + sn2 + sn3 PB =~ pb1 + pb2 + pb3 PC =~ pc1 + pc2 + pc3 BEH =~ b1 + b2 # Higher order latent variables INT =~ ATT + SN PBC =~ PC + PB # Structural model BEH ~ PBC + INT + INT:PBC ' est_lms_2so <- modsem(tpb_2so, data = TPB_2SO, method = "lms") summary(est_lms_2so)
In the TPB_1SO dataset, the INT latent variable is a second order latent variable of ATT, SN and PBC.
In this example, we will estimate the interaction effect between the INT (higher order latent variable) and PBC (first order latent variable).
tpb_1so <- ' # First order latent variables ATT =~ att1 + att2 + att3 SN =~ sn1 + sn2 + sn3 PBC =~ pbc1 + pbc2 + pbc3 BEH =~ b1 + b2 # Higher order latent variables INT =~ ATT + PBC + SN # Structural model BEH ~ PBC + INT + INT:PBC ' est_lms_1so <- modsem(tpb_1so, data = TPB_1SO, method = "lms", nodes = 32) summary(est_lms_1so)
As of yet, the modsem package does not support using the interaction operator : between two higher order latent variables,
when using one of the product indicator approaches (i.e., using modsem_pi()).
However, you can still attempt to estimate the interaction effect between two higher order latent variables by specifying the interaction term in
models using the product indicator approaches.
WARNING: Please note that the literature on higher order interactions in product indicator approaches is virtually non-existant, and you will likely need to experiment with different approaches to find one that works. As well as experiment with adding constraints to the model.
Here we see the same example as for the LMS approach, where ther is an interaction effect between two higher order latent variables.
tpb_2so <- ' # First order latent variables ATT =~ att1 + att2 + att3 SN =~ sn1 + sn2 + sn3 PB =~ pb1 + pb2 + pb3 PC =~ pc1 + pc2 + pc3 BEH =~ b1 + b2 # Higher order latent variables INT =~ ATT + SN PBC =~ PC + PB # Higher order interaction INTxPBC =~ ATT:PC + ATT:PB + SN:PC + SN:PB # Structural model BEH ~ PBC + INT + INTxPBC ' est_ca <- modsem(tpb_2so, data = TPB_2SO, method = "ca") summary(est_ca) est_dblcent <- modsem(tpb_2so, data = TPB_2SO, method = "dblcent") summary(est_dblcent)
Here we see the same example as for the LMS approach, where ther is an interaction effect between a higher order latent variable, and a first order latent variable.
tpb_1so <- ' # First order latent variables ATT =~ att1 + att2 + att3 SN =~ sn1 + sn2 + sn3 PBC =~ pbc1 + pbc2 + pbc3 BEH =~ b1 + b2 # Higher order latent variables INT =~ ATT + PBC + SN # Higher order interaction INTxPBC =~ ATT:PBC + SN:PBC + PBC:PBC # Structural model BEH ~ PBC + INT + INTxPBC ' est_ca <- modsem(tpb_1so, data = TPB_1SO, method = "ca") summary(est_ca) est_dblcent <- modsem(tpb_1so, data = TPB_1SO, method = "dblcent") summary(est_dblcent)
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.