---
title: "methods"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{methods}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
EVAL_DEFAULT <- FALSE
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  eval = EVAL_DEFAULT
)
```

```{r setup}
library(modsem)
```
There are a number of approaches for estimating interaction effects in SEM. 
In `modsem()`, the `method = "method"` argument allows you to choose which to use.
Different approaches can be categorized into two groups: 
Product Indicator (PI) and Distribution Analytic (DA) approaches.

## Product Indicator (PI) Approaches:
- `"ca"` = constrained approach (Algina & Moulder, 2001)
    - Note that constraints can become quite complicated for complex models, 
      particularly when there is an interaction including enodgenous variables.
      The method can therefore be quite slow. 
- `"uca"` = unconstrained approach (Marsh, 2004)
- `"rca"` = residual centering approach (Little et al., 2006)
- `"dblcent"` = double centering approach (Marsh., 2013)
  - default 
- `"pind"` = basic product indicator approach (not recommended)

## Distribution Analytic (DA) Approaches
- `"lms"` = The Latent Moderated Structural equations (LMS) approach, see the [vignette](https://modsem.org/articles/lms_qml.html)
- `"qml"` = The Quasi Maximum Likelihood (QML) approach, see the [vignette](https://modsem.org/articles/lms_qml.html)
- `"mplus"` 
  - estimates model through Mplus, if it is installed

```{r, eval = FALSE}

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

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

# Product Indicator Approaches
modsem(m1, data = oneInt, method = "ca")
modsem(m1, data = oneInt, method = "uca")
modsem(m1, data = oneInt, method = "rca")
modsem(m1, data = oneInt, method = "dblcent")

# Distribution Analytic Approaches
modsem(m1, data = oneInt, method = "mplus")
modsem(m1, data = oneInt, method = "lms")
modsem(m1, data = oneInt, method = "qml")
```
