---
title: "Demonstration of printGM()"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Demonstration of printGM()}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

## Demonstration of `printGM()`

### Using `printGM()` with `wsMed()`
The `wsMed()` function returns a list containing `sem_model`. `printGM()` can automatically extract and format the model equations.


``` r
library(wsMed)
result1 <- wsMed(
  data = example_data,
  M_C1 = c("A1","B1","C1"),
  M_C2 = c("A2","B2","C2"),
  Y_C1 = "D1",
  Y_C2 = "D2",
  form = "P",
  Na = "DE",
  standardized = FALSE,
  ci_method = "mc", R = 1000,
  seed = 123
)
printGM(result1)
```

```
## 
## Outcome Difference Model (Ydiff):
##  Ydiff ~ cp*1 + b1*M1diff + d1*M1avg + b2*M2diff + d2*M2avg + b3*M3diff + d3*M3avg 
## 
## Mediator Difference Model (Chained Mediator - M1diff):
## M1diff ~ a1*1 
## 
## Mediator Difference Model (Other Mediators):
## M2diff ~ a2*1
## M3diff ~ a3*1 
## 
## Indirect Effects:
## indirect_1 := a1 * b1
## indirect_2 := a2 * b2
## indirect_3 := a3 * b3 
## 
## Total Indirect Effect:
##  total_indirect := indirect_1 + indirect_2 + indirect_3 
## 
## Total Effect:
##  total_effect := cp + total_indirect
```

### Using printGM() with GenerateModel*()
If you already have preprocessed data, you can directly generate the SEM model syntax using GenerateModelPC() or other GenerateModel*() functions.


``` r
# Load necessary packages
library(wsMed)
# Load example data
data(example_data)

# Prepare data
prepared_data <- PrepareData(
  data = example_data,
  M_C1 = c("A1", "B1", "C1"),
  M_C2 = c("A2", "B2", "C2"),
  Y_C1 = "D1",
  Y_C2 = "D2"
)

# Generate Model
sem_model <- GenerateModelPC(prepared_data)

# print Model equations
printGM(sem_model)
```

```
## 
## Outcome Difference Model (Ydiff):
##  Ydiff ~ cp*1 + b1*M1diff + d1*M1avg + b2*M2diff + b3*M3diff + d2*M2avg + d3*M3avg 
## 
## Mediator Difference Model (Chained Mediator - M1diff):
## M1diff ~ a1*1 + b_2_1*M2diff + d_2_1*M2avg + b_3_1*M3diff + d_3_1*M3avg 
## 
## Mediator Difference Model (Other Mediators):
## M2diff ~ a2*1
## M3diff ~ a3*1 
## 
## Indirect Effects:
## indirect_1 := a1 * b1
## indirect_2 := a2 * b2
## indirect_2_1 := a2 * b_2_1 * b1
## indirect_3 := a3 * b3
## indirect_3_1 := a3 * b_3_1 * b1 
## 
## Total Indirect Effect:
##  total_indirect := indirect_1 + indirect_2 + indirect_2_1 + indirect_3 + indirect_3_1 
## 
## Total Effect:
##  total_effect := cp + total_indirect
```

`printGM()` displays the unstandardized model equations; requesting
standardized estimates does not rewrite the SEM syntax. For standardized
conditional estimates and plots, use `moderation_std` and
`plot_moderation_curve(..., standardized = TRUE)`, as shown in
[Standardized moderated mediation](StandardizedModeratedMediation.html).
