Skip to contents

Overview

This vignette demonstrates two ggplot2-based utilities for visualizing bootstrap estimates stored/returned by semboottools (Yang & Cheung, 2026):

  • gg_hist_qq_boot(): modular histogram/density with optional confidence intervals (CIs), mean/boot-mean lines, SD arrow, and a side-by-side QQ plot.
  • gg_scatter_boot(): a scatterplot matrix (via GGally) for multiple parameters’ bootstrap draws.

Compared to base plots, these functions are modern (ggplot2) and modular (optional layers), and can return the ggplot objects for further customization.

The following packages will be used:

library(semboottools)
library(lavaan)
#> This is lavaan 0.6-21
#> lavaan is FREE software! Please report any bugs.

Example

library(lavaan)

# Simulate data
set.seed(1234)
n <- 200
x <- runif(n) - 0.5
m <- 0.4 * x + rnorm(n)
y <- 0.3 * m + rnorm(n)
dat <- data.frame(x, m, y)

# Specify model
model <- '
  m ~ a * x
  y ~ b * m + cp * x
  ab := a * b
'

# Fit model
fit0 <- sem(model, data = dat, fixed.x = FALSE)

# Store bootstrap draws
# `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 <- store_boot(
  fit0,
  R = 500,
  iseed = 2345,
  parallel = "snow",
  ncpus = 2)

Basic Usage: Default Settings

Visualizing the bootstrap estimates for the unstandardized solution:

gg_hist_qq_boot(fit2,
                param = "ab",
                standardized = FALSE)
#> Warning: Removed 2 rows containing missing values or values outside the scale range
#> (`geom_bar()`).

gg_scatter_boot(fit2,
                param = c("ab", "a", "b"),
                standardized = FALSE)

Visualizing the bootstrap estimates for the standardized solution:

gg_hist_qq_boot(fit2,
                param = "ab",
                standardized = TRUE)
#> Warning: Removed 2 rows containing missing values or values outside the scale range
#> (`geom_bar()`).

gg_scatter_boot(fit2,
                param = c("ab", "a", "b"),
                standardized = TRUE)

Reference(s)

Yang, W., & Cheung, S. F. (2026). Forming bootstrap confidence intervals and examining bootstrap distributions of standardized coefficients in structural equation modelling: A simplified workflow using the R package semboottools. Behavior Research Methods, 58(2), 38. https://doi.org/10.3758/s13428-025-02911-z