---
title: "Parallel Bootstrapping with plssem"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Parallel Bootstrapping with plssem}
  %\VignetteEngine{knitr::rmarkdown}
  \usepackage[utf8]{inputenc}
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  eval = identical(Sys.getenv("IN_PKGDOWN"), "true")
)

library(plssem)
```

This vignette shows how to run bootstrap standard errors in parallel using
`boot.ncores` and `boot.parallel`.

## Example model (ordered indicators)

```{r syntax}
m <- '
  X =~ x1 + x2 + x3
  Z =~ z1 + z2 + z3
  Y =~ y1 + y2 + y3

  Y ~ X + Z + X:Z
'
```

## All platforms: multisession (`boot.parallel = "multisession"`)

Use `"multisession"` to run the bootstrap across multiple background R sessions
(works on Windows/macOS/Linux). `"snow"` is an alias for `"multisession"`.

```{r boot-windows, eval = FALSE}
fit_ms <- pls(
  m,
  data          = oneIntOrdered,
  ordered       = colnames(oneIntOrdered),
  bootstrap     = TRUE,
  boot.R        = 500,
  boot.ncores   = 2,
  boot.parallel = "multisession",
  boot.iseed    = 123
)
summary(fit_ms)
```

## Linux: forked processes (`boot.parallel = "multicore"`)

Use `"multicore"` on Linux (forking; not available on Windows).

```{r boot-linux, eval = FALSE}
fit_linux <- pls(
  m,
  data          = oneIntOrdered,
  ordered       = colnames(oneIntOrdered),
  bootstrap     = TRUE,
  boot.R        = 500,
  boot.ncores   = 2,
  boot.parallel = "multicore",
  boot.iseed    = 123
)
summary(fit_linux)
```
