twostep: Estimate interaction effects in structural equation models...

View source: R/twostep.R

twostepR Documentation

Estimate interaction effects in structural equation models (SEMs) using a twostep procedure

Description

Estimate an interaction model using a twostep procedure. For the PI approaches, the lavaan::sam function is used to optimize the models, instead of lavaan::sem. Note that the product indicators are still used, and not the newly developed SAM approach to estimate latent interactions. For the DA approaches (LMS and QML) the measurement model is estimated using a CFA (lavaan::cfa). The structural model is estimated using modsem_da, where the estimates in the measurement model are fixed, based on the CFA estimates. Note that standard errors are uncorrected (i.e., naive), and do not account for the uncertainty in the CFA estimates. NOTE, this is an experimental feature!

Usage

twostep(model.syntax, data, method = "lms", ...)

Arguments

model.syntax

lavaan syntax

data

dataframe

method

method to use:

"dblcent"

double centering approach (passed to lavaan).

"ca"

constrained approach (passed to lavaan).

"rca"

residual centering approach (passed to lavaan).

"uca"

unconstrained approach (passed to lavaan).

"pind"

prod ind approach, with no constraints or centering (passed to lavaan).

"lms"

latent moderated structural equations (not passed to lavaan).

"qml"

quasi maximum likelihood estimation (not passed to lavaan).

"custom"

use parameters specified in the function call (passed to lavaan).

...

arguments passed to other functions depending on the method (see modsem_pi and modsem_da)

Value

modsem object with class modsem_pi or modsem_da.

Examples

library(modsem)
m1 <- '
  # Outer Model
  X =~ x1 + x2 +x3
  Y =~ y1 + y2 + y3
  Z =~ z1 + z2 + z3

  # Inner model
  Y ~ X + Z + X:Z
'

est_dblcent <- twostep(m1, oneInt, method = "dblcent")
summary(est_dblcent)

## Not run: 
est_lms <- twostep(m1, oneInt, method = "lms")
summary(est_lms)

est_qml <- twostep(m1, oneInt, method = "qml")
summary(est_qml)

## End(Not run)

tpb_uk <- "
# Outer Model (Based on Hagger et al., 2007)
 ATT =~ att3 + att2 + att1 + att4
 SN =~ sn4 + sn2 + sn3 + sn1
 PBC =~ pbc2 + pbc1 + pbc3 + pbc4
 INT =~ int2 + int1 + int3 + int4
 BEH =~ beh3 + beh2 + beh1 + beh4

# Inner Model (Based on Steinmetz et al., 2011)
 # Causal Relationsships
 INT ~ ATT + SN + PBC
 BEH ~ INT + PBC
 BEH ~ INT:PBC
"

uk_dblcent <- twostep(tpb_uk, TPB_UK, method = "dblcent")
summary(uk_dblcent)

## Not run: 
  uk_qml <- twostep(tpb_uk, TPB_UK, method = "qml")

  uk_lms <- twostep(tpb_uk, TPB_UK, method = "lms", nodes = 32, adaptive.quad = TRUE)
  summary(uk_lms)

## End(Not run)

modsem documentation built on Aug. 27, 2025, 9:08 a.m.