% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/feature_cta.R
\name{assess_cta}
\alias{assess_cta}
\title{Confirmatory Tetrad Analysis for PLS-SEM (CTA-PLS)}
\usage{
assess_cta(
  seminr_model,
  constructs = NULL,
  nboot = 5000,
  seed = 123,
  alpha = 0.05,
  correction = "BH",
  borrow = TRUE
)
}
\arguments{
\item{seminr_model}{A PLS-SEM model estimated by [seminr::estimate_pls()].}

\item{constructs}{Character vector of construct names to test. If `NULL`
(default), all constructs in the model are tested.}

\item{nboot}{Number of bootstrap subsamples (default 5000).}

\item{seed}{Seed for reproducibility (default 123).}

\item{alpha}{Significance level (default 0.05).}

\item{correction}{Multiple testing correction method: `"BH"`
(Benjamini-Hochberg, default), `"bonferroni"`, or `"none"`.}

\item{borrow}{Logical. If `TRUE` (default), constructs with 2--3
indicators borrow indicators from structurally connected constructs
to reach the minimum of 4 needed for tetrad testing (Gudergan et al.,
2008, Table 1). If `FALSE`, constructs with fewer than 4 indicators
are skipped.}
}
\value{
An S3 object of class `cta_analysis` containing:
\describe{
  \item{construct_results}{Data frame summarising each construct: mode,
    number of indicators, tetrads tested, significant tetrads, and verdict.}
  \item{tetrad_details}{Named list of per-construct data frames with
    individual tetrad estimates, bootstrap CIs, and adjusted p-values.}
  \item{nboot}{Number of bootstrap subsamples used.}
  \item{alpha}{Significance level used.}
  \item{correction}{Multiple testing correction method used.}
  \item{skipped}{Character vector of constructs that were skipped.}
  \item{borrowing}{Named list of borrowing details for constructs that
    borrowed indicators (donor name, mode, and vanishing pattern).}
}
}
\description{
`assess_cta` tests whether each construct's measurement model is consistent
with a reflective (common factor) specification. Under a reflective model,
all vanishing tetrads equal zero. If any tetrad is significantly non-zero
(after multiple testing correction), the reflective specification is rejected.
}
\details{
**Minimum indicator requirement:** Without borrowing, constructs with fewer
than 4 indicators are skipped. With `borrow = TRUE` (default), constructs
with 2--3 indicators borrow from structurally adjacent constructs.
A minimum of 2 own indicators is always required.

**Borrowing rules** (Gudergan et al., 2008, Table 1): For a reflective
focal construct with 3 own indicators, 1 indicator is borrowed from an
adjacent reflective construct; all tetrads vanish under H0. For 2 own
indicators, 2 are borrowed from any adjacent construct; only the
tau_1342 tetrad vanishes. Formative focal constructs cannot be tested
via borrowing.

For HOC constructs, the lower-order constructs
(LOCs) serve as "indicators"; at least 4 LOCs are required.

**Interaction constructs** (moderation terms with `*` in the name) are
automatically excluded because their measurement specification is determined
by the interaction method, not the data.

**Multiple testing correction:** The number of tetrads grows combinatorially
with indicators. Benjamini-Hochberg (BH) correction is recommended as the
default (Cefis et al., 2025). Bonferroni is more conservative. With only
4 indicators (2 tetrads), correction has minimal impact.

**Sample size:** CTA-PLS requires adequate sample sizes for reliable results.
A warning is issued if N < 200.
}
\examples{
library(seminr)
library(seminrExtras)

# Specify measurement model
mobi_mm <- constructs(
  composite("Image",        multi_items("IMAG", 1:5)),
  composite("Expectation",  multi_items("CUEX", 1:3)),
  composite("Value",        multi_items("PERV", 1:2)),
  composite("Satisfaction", multi_items("CUSA", 1:3)),
  composite("Loyalty",      multi_items("CUSL", 1:3))
)

# Specify structural model
mobi_sm <- relationships(
  paths(from = "Image",       to = c("Expectation", "Satisfaction", "Loyalty")),
  paths(from = "Expectation", to = c("Value", "Satisfaction")),
  paths(from = "Value",       to = "Satisfaction"),
  paths(from = "Satisfaction", to = "Loyalty")
)

# Estimate the model
pls_model <- estimate_pls(data = mobi, measurement_model = mobi_mm,
                           structural_model = mobi_sm)

# Run CTA-PLS with borrowing (low nboot for example speed)
cta <- assess_cta(pls_model, nboot = 50, seed = 123)
print(cta)
summary(cta)

# Without borrowing -- only constructs with >= 4 indicators are tested
cta_no_borrow <- assess_cta(pls_model, nboot = 50, borrow = FALSE)

}
\references{
Gudergan, S. P., Ringle, C. M., Wende, S. & Will, A. (2008). Confirmatory
Tetrad Analysis in PLS Path Modeling. *Journal of Business Research*, 61(12),
1238-1249.

Cefis, M., Angelelli, M., Carpita, M. & Ciavolino, E. (2025). Confirmatory
Tetrad Analysis in PLS-SEM: A Multiple Testing Correction Perspective.
*Social Indicators Research* (advance online).
}
\seealso{
[congruence_test()] for congruence coefficient testing
}
