## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----setup--------------------------------------------------------------------
library(semboottools)
library(lavaan)

## ----eval = FALSE-------------------------------------------------------------
# standardizedSolution_boot(object,
#                           level = .95,
#                           type = "std.all",
#                           boot_delta_ratio = FALSE,
#                           boot_ci_type = c("perc", "bc", "bca.simple"),
#                           save_boot_est_std = TRUE,
#                           boot_pvalue = TRUE,
#                           boot_pvalue_min_size = 1000,
#                           ...)

## -----------------------------------------------------------------------------
# Set seed for reproducibility
set.seed(1234)

# Generate data
n <- 1000
x <- runif(n) - 0.5
m <- 0.20 * x + rnorm(n)
y <- 0.17 * m + rnorm(n)
dat <- data.frame(x, y, m)

# Specify mediation model in lavaan syntax
mod <- '
  m ~ a * x
  y ~ b * m + cp * x
  ab := a * b
  total := a * b + cp
'

## -----------------------------------------------------------------------------
# `bootstrap` should use ≥2000 in real studies.
# `parallel` should be used unless fitting the model is fast.
# Set `ncpus` to a larger value or omit it in real studies.
# `iseed` is set to make the results reproducible.
fit <- sem(mod,
           data = dat,
           se = "boot",
           bootstrap = 500,
           parallel = "snow",
           ncpus = 2,
           iseed = 1248)
std_boot <- standardizedSolution_boot(fit)
print(std_boot)

## -----------------------------------------------------------------------------
# The function `store_boot` also does not require
# 'se = "boot"' when fitting the model.
# `R`, the number of bootstrap samples, should be ≥2000 in real studies.
# `parallel` should be used unless fitting the model is fast.
# Set `ncpus` to a larger value or omit it in real studies.
# `iseed` is set to make the results reproducible.
fit2 <- sem(mod,
            data = dat,
            fixed.x = FALSE)
fit2 <- store_boot(fit2,
                   R = 500,
                   parallel = "snow",
                   ncpus = 2,
                   iseed = 1248)
std_boot2 <- standardizedSolution_boot(fit2)
print(std_boot)

## ----eval = FALSE-------------------------------------------------------------
# # Change confidence level
# std_boot <- standardizedSolution_boot(fit,
#                                       level = 0.99)
# # Use bias-corrected bootstrap CIs
# std_boot <- standardizedSolution_boot(fit,
#                                       boot_ci_type = "bc")
# std_boot <- standardizedSolution_boot(fit,
#                                       boot_ci_type = "bca.simple")
# # Compute delta ratio
# std_boot <- standardizedSolution_boot(fit,
#                                       boot_delta_ratio = TRUE)
# # Do not save bootstrap estimates
# std_boot <- standardizedSolution_boot(fit,
#                                       save_boot_est_std = FALSE)
# # Turn off asymmetric bootstrap p-values
# std_boot <- standardizedSolution_boot(fit,
#                                       boot_pvalue = FALSE)
# # Combine options
# std_boot <- standardizedSolution_boot(fit,
#                                       boot_ci_type = "bc",
#                                       boot_delta_ratio = TRUE)

## ----eval = FALSE-------------------------------------------------------------
# 
# # Print standardized solution in friendly format
# print(std_boot,
#       output = "text")
# # Print with more decimal places (e.g., 5 decimal digits)
# print(std_boot,
#       nd = 5)
# # Print only bootstrap confidence intervals
# print(std_boot,
#       boot_ci_only = TRUE)
# # Print both unstandardized and standardized solution
# print(std_boot,
#       standardized_only = FALSE)
# # Combine options: more decimals + show both solutions
# print(std_boot,
#       nd = 4, standardized_only = FALSE)
# # Combine options: show only bootstrap CI, 5 decimal places
# print(std_boot,
#       boot_ci_only = TRUE,
#       nd = 5)

