0.1 Computer Requirements
Metis is a free open-source desktop environment for Partial Least Squares Structural Equation Modeling (PLS-SEM) available natively for Windows and macOS. As a transparent, local alternative to software like SmartPLS, ADANCO, or WarpPLS, Metis runs all statistical calculations locally on your machine. The setup below is a good starting point:
| What to check | Recommended starting point |
|---|---|
| Operating system | Windows 10 or Windows 11 (64-bit) or macOS (Intel or Apple Silicon) |
| Computer speed | 1.6 GHz dual-core or better; 2 GHz+ is recommended |
| Memory (RAM) | 4 GB minimum; 8 GB is better for larger datasets |
| Storage space | Leave room for the installer, the app, your workspaces, and any local R packages. Download sizes are listed below. |
| Internet | Needed to download metis and, for Lite, to install missing packages. The analysis itself runs locally. |
| R (Lite only) | R 4.0 or later, already installed system-wide |
0.2 Choosing Your Installer
Metis comes in two desktop installers (Bundle and Lite). Both provide the exact same full PLS-SEM application and visual workflow. The difference is whether Metis brings its own self-contained R calculation runtime or connects to an existing R installation on your computer. Downloads are direct from the Download page with zero account registration.
0.2.1 Download Sizes
Use this table to compare the current installer download sizes across Windows and macOS.
0.2.2 Bundle or Lite?
metis Bundle
Recommended for most users
- Includes the calculation support metis needs
- Best choice if you do not already use R
- Keeps metis separate from any R setup on your computer
- Good for students, first-time users, and shared computers
- Larger download because it carries more of the setup with it
metis Lite
For users with R already installed
- Smaller download
- Uses the R version already installed on your computer
- Checks the required packages during setup
- Good for researchers and analysts who already work in R
- Does not include R
- If R or packages are missing, metis shows the next step clearly
0.2.3 Comparison at a Glance
| Feature | Bundle | Lite |
|---|---|---|
| Includes the calculation tools metis needs | Yes | No, uses your installed R |
| Needs R installed before metis | No | Yes (R 4.0+) |
| Package setup | Handled by the app | Checked on first launch |
| Separate from your own R setup | Yes | No, shared |
| Good if you have never used R | Yes | No |
| Download size | Windows: about 283 MB; macOS: about 464 MB | Windows: about 78 MB; macOS: about 130 MB |
| Recommended for | Most users | Existing R users |
0.3 First Launch
The first launch is a short setup check. Bundle users should be ready after the included calculation tools are prepared. Lite users will see metis look for R and check the packages needed for analysis.
- Whether R is available, if you installed Lite.
- Whether the analysis packages are ready.
- Whether metis can save your workspace and launch normally.
If R is missing, metis shows the R setup screen. If packages are missing, it shows what is missing and gives you one command you can copy. Your data is not uploaded during setup or analysis.
Methods, algorithms, statistical calculations and implementation flow
Purpose. This document explains what Metis calculates, which R functions it calls, where Metis adds its own logic, how results are derived, and what the current implementation does not do. It is intended for researchers, reviewers, lecturers, students, methodologists and developers who want enough detail to audit or reproduce a Metis analysis.
Metis is an open-source visual desktop application for Partial Least Squares Structural Equation Modelling (PLS-SEM). Its statistical backend is local R code exposed to the desktop application through Plumber. The core estimation engine is SEMinR, while seminrExtras provides several advanced procedures such as CVPAT, IPMA, NCA and cIPMA. Metis also implements a number of adapters and extensions where the upstream packages do not directly provide the exact workflow required by the application.
The statistical literature cited below could be read together with the source code when a method is being used in a publication.
The main software-method reference for SEMinR is Ray, Danks and Calero Valdez (2021). For broader guidance on the use and reporting of PLS-SEM, see Hair et al. (2019).
1. How to read this documentation
1.1 Provenance labels
| Label | Meaning |
|---|---|
| SEMinR-native | The value is taken directly from a fitted SEMinR object or a SEMinR summary/function. |
| seminrExtras-native | The value is produced directly by a seminrExtras analysis function. |
| Metis-calculated | Metis calculates the value from SEMinR objects, predictions, scores or raw data. |
| Metis-orchestrated | Metis controls repeated estimation/resampling but uses SEMinR to fit each model. |
A value being Metis-calculated does not mean it is a new statistical method. It means that the formula is implemented in Metis instead of being returned directly by an upstream package. Where Metis implements an extension, the relevant methodological source and the exact source-level behaviour are stated.
1.2 Current source scope
The current backend identifies SEMinR as its statistical engine. At the time of this documentation update, CRAN lists SEMinR 2.5.0 (25 May 2026), and seminrExtras is used as the supplementary analysis package.
1.3 Important distinction: methodology versus software parity
Metis is designed to follow established PLS-SEM methodology, but numerical equality with another program is not guaranteed simply because two programs use the same visible settings. Resampling, random-number generators, fold allocation, missing-data handling and implementation details can produce small numerical differences.
2. Statistical architecture and execution flow
2.2 Analysis provenance map
| Analysis/output | Main backend authority | Metis role |
|---|---|---|
| PLS-SEM estimation | seminr::estimate_pls() |
Model construction, settings resolution, result extraction |
| Standard reflective composite | seminr::composite(..., mode_A) |
Visual specification translated to SEMinR |
| Formative composite | seminr::composite(..., mode_B) |
Visual specification translated to SEMinR |
| PLSc/common-factor specification | seminr::reflective() |
Metis selects reflective specification for consistent PLS |
| Path coefficients | SEMinR | Extracted from model$path_coef |
| Reliability / AVE / HTMT / cross-loadings | SEMinR | Normalised for display |
| Bootstrap, ordinary models | seminr::bootstrap_model() |
Applies selected Percentile, BC or BCa intervals for supported tables and response normalisation |
| Embedded two-stage HOC bootstrap | SEMinR re-estimation inside a Metis resampling loop | Metis-orchestrated two-stage resampling |
| Repeated-indicator HOC | SEMinR estimation on a Metis-built repeated-indicator model | Metis builds direction-aware HOC–LOC paths |
| Disjoint two-stage HOC | SEMinR higher-composite/two-stage machinery | Metis selects the route |
| Moderation interaction term | seminr::interaction_term(..., method = two_stage) |
Ensures unique interaction and required main effect |
| Isolated moderation ΔR² / f² | SEMinR model fits + Metis comparison | Metis-calculated diagnostic |
| PLSpredict PLS/LM predictions | seminr::predict_pls() |
Metis aligns and summarises outputs |
| PLSpredict IA benchmark | SEMinR folds reconstructed by Metis | Metis-calculated training-fold mean benchmark |
| Q²predict | SEMinR prediction residuals + Metis IA residuals | Metis-calculated |
| CVPAT LV | seminrExtras::assess_cvpat() |
Normalisation only |
| CVPAT MV | SEMinR case-wise prediction losses + seminrExtras bootstrap logic | Metis extension |
| IPMA | seminrExtras::assess_ipma() |
Normalisation and result filtering |
| NCA | seminrExtras::assess_nca() |
Normalisation; custom chart data and classifications |
| cIPMA | seminrExtras::assess_cipma() |
Normalisation and integrated NCA reuse |
| MICOM | Metis MICOM implementation + repeated seminr::rerun() |
Custom three-step implementation |
| MGA | SEMinR group fits/bootstrap + Metis comparison tests | Metis-orchestrated |
| Model-fit diagnostics | SEMinR scores/loadings + Metis matrix reconstruction | Metis-calculated |
| Post-hoc power | semPower::semPower.postHoc() |
Input preparation and reporting |
| Tark | Existing saved results | Reporting only; no new statistical estimation |
2.3 End-to-end research workflow
The current public workflow can be read as the following technical chain:
Install Metis
↓
Create/open .metisws workspace
↓
Import CSV/XLS/XLSX dataset
↓
Inspect headers, numeric values and missing cells
↓
Draw measurement and structural model
↓
Choose PLS/HOC
↓
Run PLS-SEM
↓
Run follow-up inference/prediction/advanced analysis as required
├── Bootstrap
├── PLSpredict + optional CVPAT
├── IPMA / NCA / cIPMA
├── MICOM
└── MGA
↓
Inspect settings + execution log + tables/charts
↓
Save results
↓
Export tables/HTML/R reproduction code or assemble Tark report
This order is methodological rather than merely navigational. For example, advanced IPMA/NCA/cIPMA are follow-up analyses of a fitted PLS model; MICOM is relevant before substantive multi-group interpretation; and PLSpredict evaluates out-of-sample prediction rather than replacing ordinary measurement/structural-model assessment.
2.4 Calculation progress and the optional Metis Game
While an analysis is running, Metis displays a calculation modal with the current phase, progress feedback and controls to hide or stop the calculation. The calculation continues independently of the interface shown inside that modal.
Metis can also show a small 2048-style puzzle during the wait. The Metis Game setting is off by default. To turn it on, open Preferences, find Metis Game under the general settings and enable it. The puzzle appears only in the calculating modal, and its interface state is separate from the analysis request.
3. Data input, preprocessing and missing values
3.1 Supported analysis data
The current backend reads CSV/TXT and Excel (.xlsx, .xls) data. Before estimation, Metis validates that the dataset is tabular, contains rows and columns.
Metis analyses run locally. Dataset paths are restricted to trusted Metis/workspace locations.
3.2 Missing-value markers
When a dataset is imported, Metis lets the user identify the representation used for missing observations. The preset choices are Empty cells / NA, -99, -999, 999, -1 and None (all valid). A researcher can also enter a custom marker and save it for reuse.
The selected custom missing-value marker is stored with the dataset and is used by the import preview and Data View missing-value navigator to count, locate and highlight matching cells. None (all valid) disables marker-based missing-cell detection for that dataset.
3.3 Missing-data treatments
Mean replacement — SEMinR-native
Mean replacement maps to seminr::mean_replacement. Missing observations are replaced according to SEMinR’s mean-replacement procedure before model estimation.
Listwise deletion — Metis wrapper around R complete cases
Listwise deletion removes rows failing stats::complete.cases() for the data supplied to the estimation path.
Median replacement — Metis-calculated
For each numeric column with missing values, Metis computes the finite column median and substitutes that value for missing cases.
After the selected missing-data treatment is applied, the current R estimation contract uses NA as its statistical missing-value sentinel.
3.4 Missing-value discovery in Data View
The Data View missing-value navigator is not a statistical imputation method. It identifies cells matching supported missing markers, moves the virtualised grid to each location and highlights the row/column intersection. Navigation does not silently replace values but helps you to identify the missing values paths.
4. Model specification
The model canvas toolbar includes a user-friendly construct shape drawing tool. Use its drop-up menu or shape selector to display constructs as Circle, Oval or Rectangle representations without changing the statistical model.
4.1 Structural paths
Each directed arrow on the model canvas is translated to a SEMinR structural relationship. For a path from construct \(X\) to construct \(Y\), Metis eventually generates the equivalent of:
seminr::paths(from = "X", to = "Y")and combines paths through seminr::relationships().
4.2 Reflective/composite Mode A measurement
For standard PLS, a regular reflective construct in the visual interface is represented in SEMinR as a Mode A composite:
seminr::composite(name, items, weights = seminr::mode_A)In SEMinR, Mode A outer-weight updates are based on correlations between indicators and the current construct score. Conceptually, for indicator matrix \(X_j\) and current construct score \(\hat\eta\), the next Mode A weight vector is proportional to the indicator–construct correlations:
\[ \mathbf{w}_A \propto \operatorname{cor}(\mathbf{X}_j,\hat\eta). \]
The term “reflective” in the Metis canvas therefore describes the conceptual measurement direction presented to the researcher, while standard PLS computation uses SEMinR’s Mode A composite representation. This distinction matters when comparing standard PLS with PLSc.
4.3 Formative/composite Mode B measurement
A formative construct is represented by:
seminr::composite(name, items, weights = seminr::mode_B)SEMinR’s Mode B update is regression-like. For standardized indicator block \(X\), the weight vector is proportional to:
\[ \mathbf{w}_B = \mathbf{R}_{XX}^{-1}\mathbf{r}_{X\eta}, \]
where \(\mathbf{R}_{XX}\) is the indicator correlation matrix and \(\mathbf{r}_{X\eta}\) is the vector of correlations between indicators and the current construct score.
For formative specifications, indicator collinearity and the relevance/significance of outer weights are generally more important than internal-consistency measures intended for reflective constructs.
4.4 Single-item constructs
For a single-item construct, Metis uses SEMinR’s single_item() specification inside the appropriate composite/reflective wrapper. Reliability metrics returned by SEMinR for single-item constructs may be fixed to 1 by the package’s reliability functions; this is a computational convention and should not be interpreted as empirical proof of perfect reliability.
4.5 Consistent PLS (PLSc)
When the user selects Consistent PLS (PLSc), Metis represents reflective/common-factor constructs with seminr::reflective() rather than Mode A composite(). SEMinR then applies its consistent PLS treatment to reflective factor models. PLSc was developed to correct consistency problems that arise when common-factor models are estimated with traditional PLS path modelling; see Dijkstra and Henseler (2015).
Formative constructs remain Mode B composites because PLSc correction is not a formative-measurement operation.
4.6 Temporary model copies
From a model’s context menu in Workspace Home, Temporary Copy opens an in-memory experimental copy. The copy can be edited and analysed without changing the source model or writing the temporary model to the workspace.
Temporary copies do not autosave, and ordinary Save is disabled. Save As promotes the copy to a permanent model. Analysis results remain transient until Save Results is selected; Metis then asks for the permanent model destination and saves the linked result. Returning home removes the temporary session without a discard prompt.
5. PLS-SEM algorithm settings
5.1 Inner weighting
Metis exposes path, factor and centroid labels in the preferences interface.
Path weighting — applied
The normal default is seminr::path_weighting. SEMinR uses the current relationships among construct scores and the specified structural directions to create inner proxies before the outer weights are updated.
Factor weighting — applied
When the Factor option is requested, the current backend resolves SEMinR’s path_factorial implementation.
Centroid weighting — applied
Centroid weighting is implemented as a distinct Metis inner-weighting estimator. For connected constructs, the inner weight uses only the sign of the current construct-score correlation:
\[ e_{ji}=\operatorname{sign}\left(\operatorname{cor}(Y_j,Y_i)\right). \]
The current backend implements the Lohmöller centroid rule as:
path_centroid <- function(smMatrix, construct_scores, dependant, paths_matrix) {
adj <- paths_matrix + t(paths_matrix)
sign(stats::cor(construct_scores, construct_scores)) * adj
}In resolve_pls_estimation_settings(payload), Centroid weighting resolves to path_centroid; it no longer falls back to path weighting. The three available schemes are therefore distinct: path weighting accounts for structural direction, factor weighting uses connected construct-score correlations, and centroid weighting uses only their signs.
5.2 Initial outer weights
The Preferences interface exposes uniform, Lohmöller and random initial-weight labels. The current SEMinR estimation call used by Metis does not expose a public initial-weight argument. Metis therefore records the requested value but uses SEMinR’s default initialisation.
5.3 Maximum iterations
The maximum iteration count is passed to seminr::estimate_pls() as maxIt.
5.4 Stop criterion
The UI displays thresholds such as 1e-7. SEMinR expresses its convergence criterion as a power-of-ten integer, so Metis converts:
1e-7 → 7
1e-8 → 8
before passing the value as stopCriterion.
5.5 Syntax assessment
If requested, assess_syntax is passed to SEMinR. It affects SEMinR’s syntax checking rather than the statistical definition of a correctly specified model.
5.6 What seminr::estimate_pls() actually does
Metis does not contain a separate hidden PLS estimator for ordinary PLS-SEM. After Metis has translated the visual model into SEMinR measurement and structural objects, the ordinary estimation route calls seminr::estimate_pls(). The current SEMinR implementation preprocesses the model, prepares HOCs/interactions where applicable and then calls seminr::simplePLS() for the iterative PLS estimation. The general PLS-PM algorithm follows the iterative component-score logic described in the PLS literature (e.g., Tenenhaus et al., 2005); the details below document the current SEMinR source implementation used by Metis.
5.6.1 Select and standardise the manifest variables
SEMinR first applies the selected missing-value function, resolves the measurement/structural specifications and constructs any required interaction/HOC representation. simplePLS() then standardises the manifest variables. Let the standardised manifest data matrix be \(\mathbf X\).
SEMinR stores the original item means and standard deviations because they are later needed by prediction routines.
5.6.2 Initialise outer weights
For every indicator-to-construct measurement relation, the current simplePLS() source initialises the corresponding outer weight to 1; all non-relations are zero. If \(\mathbf W^{(0)}\) is the starting outer-weight matrix, this is a unit-weight start constrained by the measurement model.
This source behaviour explains an important Metis boundary: although the Preferences interface can store labels for alternative initialisation choices, the current backend ultimately uses SEMinR’s built-in unit-weight initialisation because estimate_pls() does not expose a public initial-weight argument.
5.6.3 Form preliminary construct scores
At iteration \(t\), construct scores are obtained from the standardised indicators and current outer weights:
\[ \mathbf Y^{(t)} = \mathbf X\mathbf W^{(t)}. \]
SEMinR standardises the columns of \(\mathbf Y^{(t)}\) before calculating the inner weights.
5.6.4 Calculate inner weights
For the factorial/factor scheme, SEMinR uses construct-score correlations restricted to relationships present in the structural model. If \(\mathbf P\) denotes the current structural-path incidence/estimate matrix and \(\mathbf R_Y=\operatorname{cor}(\mathbf Y)\), the current source is equivalent to:
\[ \mathbf E_{factor}=\mathbf R_Y\odot(\mathbf P+\mathbf P'), \]
where \(\odot\) is element-wise multiplication.
For the default path weighting scheme, SEMinR first uses construct-score correlations for outgoing relations. For each endogenous construct \(Y_j\), its incoming inner weights are then replaced by the multiple-regression coefficients obtained from its antecedent construct scores. With antecedent-score matrix \(\mathbf X_j\) and target score \(\mathbf y_j\):
\[ \hat{\boldsymbol\beta}_j = (\mathbf X_j'\mathbf X_j)^{-1}\mathbf X_j'\mathbf y_j. \]
This is why path weighting is sensitive to the direction of the specified structural paths, whereas the factor scheme is based on symmetric score correlations over connected constructs.
For the centroid scheme, Metis restricts the construct-score correlation matrix to connected constructs and retains only the correlation sign:
\[ \mathbf E_{centroid}=\operatorname{sign}(\mathbf R_Y)\odot(\mathbf P+\mathbf P'). \]
5.6.5 Form the inner proxy scores
SEMinR multiplies the standardised construct-score matrix by the inner-weight matrix:
\[ \mathbf Z^{(t)}=\mathbf Y^{(t)}\mathbf E^{(t)}, \]
and standardises the resulting inner proxy scores before updating the measurement weights.
5.6.6 Update outer weights by measurement mode
For a Mode A construct, current SEMinR calculates the covariance between its standardised indicators and current inner proxy score:
\[ \mathbf w_A^{(t+1)} = \operatorname{cov}(\mathbf X_j,\mathbf z_j^{(t)}). \]
Because the inputs are standardised, this behaves as the usual correlation/covariance Mode A update.
For Mode B, current SEMinR uses:
\[ \mathbf w_B^{(t+1)} = \mathbf R_{XX}^{-1}\mathbf r_{Xz}, \]
where \(\mathbf R_{XX}\) is the indicator correlation matrix and \(\mathbf r_{Xz}\) contains correlations between the indicators and current inner proxy score.
5.6.7 Standardise the outer weights
SEMinR scales each construct’s updated outer-weight vector so that the weighted composite has unit standard deviation. In matrix form, if
\[ \mathbf Y^*=\mathbf X\mathbf W, \]
then each construct column of \(\mathbf W\) is divided by the standard deviation of the corresponding \(\mathbf Y^*\) column.
5.6.8 Test convergence
The current convergence statistic is the sum of absolute changes in all outer weights:
\[ \Delta_w^{(t)} = \sum_{j,k}\left|w_{jk}^{(t+1)}-w_{jk}^{(t)}\right|. \]
The iteration stops when:
\[ \Delta_w^{(t)} < 10^{-c}, \]
where \(c\) is SEMinR’s stopCriterion. Thus the Metis display 1e-7 is passed as stopCriterion = 7. If convergence is not achieved first, iteration is bounded by maxIt.
The fitted SEMinR object records both the number of iterations and final weightDiff; Metis exposes the iteration count but SEMinR does not provide a full per-iteration convergence history in the normal returned object.
5.6.9 Recalculate final construct scores and outer loadings
After convergence, SEMinR recalculates final construct scores from the standardised manifest data and final outer weights. It calculates outer loadings from the covariance between standardised indicators and final construct scores, restricted to the indicator–construct relations in the measurement model.
For interaction constructs, SEMinR applies its interaction-score standard-deviation adjustment before recalculating final outer loadings, following the interaction treatment documented in Henseler and Chin (2010).
5.6.10 Estimate final structural paths
For each endogenous construct, SEMinR estimates the structural path coefficients by ordinary least squares on the final construct scores. If \(\mathbf X_j\) contains the final antecedent scores and \(\mathbf y_j\) the final score of endogenous construct \(j\):
\[ \hat{\boldsymbol\beta}_j = (\mathbf X_j'\mathbf X_j)^{-1}\mathbf X_j'\mathbf y_j. \]
The estimated coefficients are stored in model$path_coef. SEMinR then calculates in-sample model metrics including \(R^2\).
5.6.11 Apply PLSc consistency correction when required
After simplePLS() returns, estimate_pls() calls SEMinR’s consistency-correction step. Constructs specified with reflective() are therefore treated through the package’s PLSc route, while ordinary composite(..., mode_A) constructs remain standard PLS composites. This is the computational point at which Metis’s Standard PLS and Consistent PLS (PLSc) choices diverge for reflective/common-factor specifications (Dijkstra & Henseler, 2015).
5.6.12 PLS estimation flow in one diagram
Metis visual model
↓
build SEMinR measurement + structural specifications
↓
apply missing-data treatment
↓
standardise manifest variables
↓
initialise measurement weights = 1 on specified relations
↓
XW → standardised construct scores
↓
inner weighting
├── path weighting: correlations + incoming OLS betas
├── factor weighting: connected construct correlations
└── centroid weighting: signs of connected construct correlations
↓
inner proxy scores → standardise
↓
update outer weights
├── Mode A: indicator–proxy covariance
└── Mode B: regression/correlation inverse
↓
standardise outer weights
↓
check Σ|new weight − old weight| < 10^-c
├── no → iterate
└── yes
↓
final construct scores + outer loadings
↓
OLS structural path coefficients + R²
↓
PLSc correction where `reflective()` was specified
↓
SEMinR model object → Metis result extraction
6. Measurement model results
Evaluation of reflective (Mode A) and formative (Mode B) measurement models follows standard PLS-SEM assessment protocols (Hair et al., 2019). Reflective constructs are assessed across four pillars: indicator reliability (outer loadings \(\ge 0.708\)), internal consistency reliability (Cronbach’s alpha \(\alpha \ge 0.70\), composite reliability \(\rho_A \ge 0.70, \rho_C \ge 0.70\)), convergent validity (Average Variance Extracted \(\text{AVE} \ge 0.50\)), and discriminant validity (Heterotrait-Monotrait ratio \(\text{HTMT} < 0.85/0.90\), Fornell-Larcker criterion, and cross-loadings). Formative constructs are assessed via outer weights, significance testing, and indicator collinearity (variance inflation factor \(\text{VIF} < 3.3/5.0\)). Most measurement-quality values in Metis are SEMinR-native, serialised directly from fitted model objects into structured tables.
6.1 Outer loadings
Outer loadings are obtained from the SEMinR estimated model/summary. A loading represents the association between an indicator and its construct score in the estimated measurement representation.
For standard reporting, a high loading means that a large share of the indicator’s variance is associated with its construct. A commonly cited practical benchmark is approximately 0.708 because \(0.708^2\approx0.50\), but thresholds should be applied in context rather than as automatic deletion rules (Hair et al., 2019).
6.2 Outer weights
Outer weights are SEMinR-native. They define the contribution of each indicator to the composite score. Their role is especially central for formative/composite Mode B specifications.
Bootstrap inference should be used when the research question requires testing whether a weight is statistically distinguishable from zero.
6.3 Cronbach’s alpha
SEMinR calculates Cronbach’s alpha from the indicator correlation matrix. For \(k\) indicators with correlation matrix \(\mathbf R\), the current package implementation is equivalent to:
\[ \alpha = \frac{k}{k-1} \left( 1-\frac{\operatorname{tr}(\mathbf R)}{\sum_{i=1}^k\sum_{j=1}^k R_{ij}} \right). \]
Because \(\operatorname{tr}(\mathbf R)=k\) for a correlation matrix, this is a standardized-alpha calculation. SEMinR sets the value to 1 for single-item constructs.
6.4 Composite reliability \(\rho_C\)
For standardized outer loadings \(\lambda_j\), SEMinR computes Dillon–Goldstein/composite reliability as:
\[ \rho_C = \frac{\left(\sum_j \lambda_j\right)^2} {\left(\sum_j \lambda_j\right)^2 + \sum_j(1-\lambda_j^2)}. \]
Single-item constructs are returned as 1 by the package.
6.5 Average variance extracted (AVE)
SEMinR computes:
\[ AVE = \frac{1}{m}\sum_{j=1}^{m}\lambda_j^2. \]
The classic convergent-validity discussion originates with Fornell and Larcker (1981). An AVE of 0.50 is often used as a descriptive benchmark because it indicates that the construct accounts for at least half of the variance of its indicators on average.
6.6 Dijkstra–Henseler’s \(\rho_A\)
SEMinR calculates \(\rho_A\) using the estimated outer weights and empirical indicator covariance structure, following the consistent PLS reliability framework of Dijkstra and Henseler (2015).
For a construct weight vector \(\mathbf w\), standardized indicator covariance matrix \(\mathbf S\) with its diagonal removed, and \(\mathbf A_{off}=\mathbf w\mathbf w'\) with the diagonal removed, the current SEMinR source computes the matrix expression:
\[ \rho_A = (\mathbf w'\mathbf w)^2 \left[ \frac{\mathbf w'\mathbf S\mathbf w} {\mathbf w'\mathbf A_{off}\mathbf w} \right]. \]
SEMinR assigns \(\rho_A=1\) for formative constructs, single-item constructs and interaction constructs. This should be understood as package behaviour rather than evidence that a formative block possesses internal consistency.
6.7 Fornell–Larcker criterion
The Fornell–Larcker table is taken from SEMinR. The conventional comparison places \(\sqrt{AVE}\) on the diagonal and inter-construct correlations off the diagonal. Under the classical rule, a construct’s square root of AVE should exceed its correlations with other constructs (Fornell and Larcker, 1981).
Because discriminant-validity assessment has advanced beyond relying solely on Fornell–Larcker, Metis also reports HTMT where available.
6.8 HTMT
HTMT values are SEMinR-native. The heterotrait–monotrait ratio compares average correlations across constructs with correlations among indicators of the same constructs. In simplified form for constructs \(a\) and \(b\):
\[ HTMT_{ab} = \frac{ \text{mean}(|r_{ij}|: i\in a,j\in b) } { \sqrt{ \text{mean}(|r_{ii'}|: i\neq i', i,i'\in a) \text{mean}(|r_{jj'}|: j\neq j', j,j'\in b) } }. \]
HTMT was introduced as a more sensitive discriminant-validity criterion by Henseler, Ringle and Sarstedt (2015). Values below 0.85 or 0.90 are common reference points, but the appropriate criterion depends on conceptual similarity and the chosen inference approach.
6.9 Cross-loadings
Cross-loadings are obtained from the SEMinR summary. Metis displays the matrix but does not use a separate custom cross-loading estimator.
6.10 VIF
Preferred route — SEMinR-native
For inner-model collinearity, Metis first attempts seminr::vif_antecedents(model). Outer VIF values are taken from SEMinR validity output where available.
The standard VIF identity is:
\[ VIF_j=\frac{1}{1-R_j^2}, \]
where \(R_j^2\) is obtained by regressing predictor \(j\) on the remaining predictors.
Fallback route — Metis-calculated
If usable antecedent-VIF output is unavailable, Metis can calculate a fallback. It regresses each predictor representation on the remaining predictor representations and applies the formula above. Depending on the available object, the fallback may use construct scores or a data-derived construct representation.
Because this fallback is not the normal SEMinR vif_antecedents() route, the provenance should be reported as Metis-calculated fallback if it is used.
7. Structural model statistics
Structural model evaluation assesses the hypothesized inner relationships between latent constructs. Key metrics include standardized path coefficients (\(\beta\)) and their statistical significance (\(t\)-statistics and \(p\)-values), direct, indirect, and total mediation effects, the coefficient of determination (\(R^2\) and adjusted \(R^2\)), Cohen’s effect size (\(f^2\)), and antecedent collinearity diagnostics (\(\text{VIF} < 3.3/5.0\)) (Hair et al., 2019).
7.1 Path coefficients
Path coefficients are SEMinR-native, extracted from model$path_coef. After construct scores have been estimated, each endogenous construct is modelled as a linear function of its specified antecedents.
For endogenous construct \(\eta_j\):
\[ \eta_j = \sum_{h\in A_j}\beta_{hj}\eta_h + \zeta_j, \]
where \(A_j\) is the set of antecedents, \(\beta_{hj}\) are path coefficients and \(\zeta_j\) is the residual term.
7.2 Coefficient of determination \(R^2\)
Metis normally reports the value supplied through the SEMinR summary. The standard identity is:
\[ R^2 = 1-\frac{\sum_i(y_i-\hat y_i)^2}{\sum_i(y_i-\bar y)^2}. \]
The value describes the proportion of variance in an endogenous construct score explained by its antecedents in the fitted model. It is an explanatory/in-sample criterion and should not be treated as a substitute for out-of-sample predictive assessment.
7.3 Adjusted \(R^2\)
If SEMinR exposes adjusted \(R^2\), Metis reports it. If not, Metis can calculate:
\[ R^2_{adj}=1-(1-R^2)\frac{n-1}{n-k-1}, \]
where \(n\) is the number of observations and \(k\) is the number of unique incoming predictors of the endogenous construct.
7.4 Effect size \(f^2\)
Normal f² output comes from the SEMinR summary. The standard effect-size definition is:
\[ f^2=\frac{R^2_{included}-R^2_{excluded}}{1-R^2_{included}}. \]
The Metis backend contains a defensive wrapper around SEMinR’s fSquared function. If SEMinR throws an indexing error for a problematic interaction-model configuration, the wrapper returns NA rather than crashing the whole summary. An NA should therefore be interpreted as unavailable, not as a zero effect.
7.5 Direct, indirect and total effects
Let \(\mathbf B\) be the path-coefficient matrix of an acyclic structural model. SEMinR obtains total effects from path products across all admissible chains. In matrix notation:
\[ \mathbf T=\mathbf B+\mathbf B^2+\mathbf B^3+\cdots, \]
with the series terminating in an acyclic finite model when higher powers contain no additional paths.
Total indirect effects are:
\[ \mathbf T_{indirect}=\mathbf T-\mathbf B. \]
Specific indirect effects correspond to particular mediated chains such as:
\[ X\rightarrow M\rightarrow Y, \qquad IE_{XMY}=\beta_{XM}\beta_{MY}. \]
For mediation inference, Metis relies on bootstrap distributions. A useful methodological reference is Nitzl, Roldán and Cepeda (2016).
7.6 Information criteria
Metis returns SEMinR’s information-theoretic criteria (it_criteria) when available. The current SEMinR implementation calculates an error sum of squares for each endogenous construct:
\[ SS_{err,k}=(1-R_k^2)\operatorname{Var}(\eta_k)(N-1), \]
then:
\[ AIC_k = 2(p_k+1)+N\log\left(\frac{SS_{err,k}}{N}\right), \]
\[ BIC_k = N\log\left(\frac{SS_{err,k}}{N}\right)+(p_k+1)\log(N), \]
where \(p_k\) is the number of antecedents of construct \(k\). These are the current SEMinR package formulas used by the backend, which is more precise than assuming a generic likelihood-based implementation from another SEM package.
8. Model-fit diagnostics in Metis
8.1 Provenance warning
The current model-fit block in Metis is Metis-calculated from SEMinR scores, loadings and path coefficients. It is not a direct call to a SEMinR, SmartPLS or cSEM fit function. These values should therefore be described as Metis fit diagnostics rather than assumed to be bit-for-bit equivalents of another software package’s fit output.
General discussion of approximate fit in PLS/composite modelling can be found in Henseler, Hubona and Ray (2016). Conventional CB-SEM cut-offs should not be transferred mechanically to PLS-SEM diagnostics.
8.2 Observed indicator correlation matrix
Metis first computes the observed correlation matrix \(\mathbf R\) from the manifest indicators, using pairwise-complete observations.
8.3 Saturated construct correlation matrix
For the saturated representation, Metis computes correlations among SEMinR construct scores:
\[ \mathbf \Phi_{sat}=\operatorname{cor}(\hat\eta). \]
8.4 Estimated construct correlation matrix
For the estimated structural representation, Metis uses the path coefficient matrix \(\mathbf B\), observed exogenous construct correlations and residual variances derived from \(1-R^2\).
A residual covariance/variance matrix \(\mathbf\Psi\) is formed such that:
- exogenous construct covariance entries are taken from observed construct-score correlations;
- each endogenous construct receives residual variance approximately \(\max(1-R^2,10^{-8})\).
Metis then constructs:
\[ \mathbf A=(\mathbf I-\mathbf B')^{-1}, \]
\[ \mathbf\Sigma_{construct}=\mathbf A\mathbf\Psi\mathbf A'. \]
This covariance matrix is converted to a correlation matrix.
8.5 Implied indicator correlation matrix
Using SEMinR’s outer-loading matrix \(\mathbf\Lambda\), Metis constructs:
\[ \hat{\mathbf R}=\mathbf\Lambda\mathbf\Phi\mathbf\Lambda', \]
then fixes the diagonal to 1 and sanitises the matrix to a valid correlation range.
8.6 SRMR
For residual matrix:
\[ \mathbf E=\mathbf R-\hat{\mathbf R}, \]
Metis takes the lower triangle including the diagonal and computes:
\[ SRMR_{Metis}=\sqrt{\operatorname{mean}(E_{ij}^2)}. \]
This is a Metis reconstruction using its selected residual elements.
8.7 \(d_{ULS}\)
Metis computes:
\[ d_{ULS}=\sum E_{ij}^2 \]
for the same lower-triangular residual vector.
8.8 NFI
A null implied matrix equal to the identity is used. If \(d_{ULS,null}>0\), Metis calculates:
\[ NFI_{Metis}=1-\frac{d_{ULS}}{d_{ULS,null}}. \]
8.9 \(d_G\)
Observed and implied correlation matrices are repaired to positive-definite correlation matrices where required using Matrix::nearPD(). Metis then obtains positive eigenvalues \(\lambda_q\) of:
\[ \hat{\mathbf R}^{-1}\mathbf R \]
and computes:
\[ d_G=\sqrt{\sum_q[\log(\lambda_q)]^2}. \]
8.10 Which fit block is displayed?
Metis calculates saturated and estimated versions where possible. The current Results View presents one value per metric and prefers the saturated block when available, while the estimated block is retained in the backend response for possible future expansion.
9. Bootstrapping
Bootstrapping is a non-parametric statistical resampling procedure used in PLS-SEM to determine empirical standard errors, \(t\)-values, \(p\)-values, and confidence intervals for structural path coefficients, indirect mediation effects, and indicator loadings. Metis supports both Percentile intervals and Bias-Corrected and Accelerated (BCa) confidence intervals. For research and journal publishing, methodological standards recommend setting 5,000 to 10,000 bootstrap resamples (Streukens and Leroi-Werelds, 2016; Hair et al., 2019).
9.1 Ordinary SEMinR bootstrap
For ordinary models, Repeated Indicators HOCs and Disjoint Two-stage HOCs, Metis calls:
seminr::bootstrap_model(
seminr_model = model,
nboot = nboot,
cores = resolved_cores
)The bootstrap model is summarised by SEMinR at the requested confidence level. Metis returns path coefficients, total effects, indirect effects, outer loadings, outer weights and available HTMT confidence intervals.
9.2 Number of subsamples
The route default is currently 500 if no request value is supplied. The user can request more subject to configured resource ceilings.
9.3 Percentile intervals
For a bootstrap distribution \(\theta_1^*,\ldots,\theta_B^*\) and significance level \(\alpha\), a percentile interval uses empirical quantiles:
\[ CI_{perc}= \left[ Q_{\alpha/2}(\theta^*), Q_{1-\alpha/2}(\theta^*) \right]. \]
9.4 Bias-corrected (BC) interval
The BC interval measures median bias in the bootstrap distribution relative to the original estimate. Metis calculates:
\[ \hat z_0=\Phi^{-1}\left(\frac{\#\{\theta^*<\hat\theta\}}{B}\right), \]
then uses:
\[ p_L=\Phi(2\hat z_0+z_L), \qquad p_U=\Phi(2\hat z_0+z_U), \]
and reports the corresponding empirical bootstrap quantiles.
9.5 Bias-corrected and accelerated (BCa) interval
Metis now implements a full Bias-Corrected and Accelerated (BCa) interval. In addition to the bias-correction parameter \(\hat z_0\), it calculates the acceleration parameter \(a\) through non-parametric leave-one-out jackknife estimation:
\[ \hat\theta_{(i)}=\text{PLS estimate with observation }i\text{ removed}, \]
\[ \bar\theta_{(\cdot)}=\frac{1}{n}\sum_{i=1}^{n}\hat\theta_{(i)}, \]
\[ a=\frac{\sum_{i=1}^{n}\left(\bar\theta_{(\cdot)}-\hat\theta_{(i)}\right)^3}{6\left[\sum_{i=1}^{n}\left(\bar\theta_{(\cdot)}-\hat\theta_{(i)}\right)^2\right]^{3/2}}. \]
The adjusted BCa probabilities are:
\[ p_L=\Phi\left(\hat z_0+\frac{\hat z_0+z_L}{1-a(\hat z_0+z_L)}\right), \]
\[ p_U=\Phi\left(\hat z_0+\frac{\hat z_0+z_U}{1-a(\hat z_0+z_U)}\right). \]
When \(a=0\), the BCa interval simplifies to the BC interval. This ordinary-model route adds the selected interval to paths, loadings, weights and total effects. Embedded two-stage HOC bootstrap retains its custom percentile and BC interval route.
9.6 Current sign-change boundary
PLS-SEM bootstrap scores can be sign-indeterminate across resamples. The current backend contains a construct-labelled correction branch that compares original and bootstrap outgoing path-coefficient vectors and flips relevant path rows or columns when their signs oppose. It does not correlate original and bootstrap construct scores.
The visible individual-level setting does not yet have a distinct backend branch. Researchers should therefore not report individual-level sign correction as applied in the current release.
9.7 Current bootstrap execution route
For ordinary models, the selected Percentile, BC or BCa confidence-interval type reaches the post-processing route. For BCa, Metis computes jackknife acceleration matrices for paths, loadings, weights and total effects and applies the adjusted intervals to the corresponding tables.
The visible resampling option is not consumed by this route. The current desktop fields for tails and sign changes also do not match the field names read by the execution branch, so those visible selections should not be reported as applied without confirming the execution payload. The t-statistic interval choice is not a distinct implemented interval route.
10. Higher-order constructs (HOCs)
Metis supports three HOC estimation routes. The methodological foundation for repeated-indicator and two-stage approaches is discussed by Becker, Klein and Wetzels (2012) and Sarstedt et al. (2019).
10.1 HOC terminology
- HOC — higher-order construct.
- LOC — lower-order construct/dimension.
- Repeated indicators — the HOC is assigned the leaf manifest indicators of its LOCs.
- Embedded two-stage — Stage 1 obtains scores from a repeated-indicator hierarchical model; Stage 2 uses those scores in a new model.
- Disjoint two-stage — uses SEMinR’s higher-composite/two-stage route.
10.2 Repeated Indicators — Metis-built, SEMinR-estimated
For each HOC, Metis recursively collects all leaf indicators belonging to its LOC dimensions. The HOC is then represented as a SEMinR composite using:
- Mode A when the HOC is reflective;
- Mode B when the HOC is formative.
Metis preserves the original nomological structural paths and adds direction-aware HOC–LOC paths:
Reflective HOC: HOC → LOC
Formative HOC: LOC → HOC
This allows the hierarchical relation itself to be represented during estimation rather than reducing the HOC to a detached score-only construct.
10.3 Embedded Two-stage — Metis-orchestrated
Embedded estimation is a distinct Metis workflow.
Stage 1
Metis builds a genuine repeated-indicator hierarchical model containing:
- the original nomological paths;
- the original interactions where applicable;
- the direction-aware HOC–LOC paths.
SEMinR estimates the Stage-1 model. Metis then takes SEMinR’s construct_scores unchanged. It does not reconstruct LOC scores manually from HOC outer weights.
Stage 2
For each HOC, its Stage-1 LOC scores become the HOC’s indicators. Ordinary non-HOC constructs become single-item score constructs based on their Stage-1 construct-score columns.
LOCs that would otherwise be orphaned are removed from Stage 2. A LOC is retained separately when the original model gives it an independent structural or interaction role.
The original nomological structural relationships are then estimated on the Stage-1 score data.
10.4 Disjoint Two-stage — SEMinR route
Metis calls SEMinR’s higher-composite/two-stage representation for the Disjoint route.
10.5 Embedded HOC bootstrap
A two-stage score model must not hold the Stage-1 scores fixed during resampling if the goal is to propagate Stage-1 estimation uncertainty. Therefore, Embedded bootstrap in Metis operates as:
for each bootstrap resample b:
resample original observations with replacement
rerun Embedded Stage 1
extract new Stage-1 scores
rerun Embedded Stage 2
save paths, loadings, weights and derived effects
Metis then constructs bootstrap distributions for direct paths, total effects, total indirect effects, specific indirect effects, loadings and weights.
For an observed parameter \(\hat\theta\) and bootstrap values \(\theta_b^*\), Metis reports the bootstrap mean and standard deviation. Its custom embedded t statistic is:
\[ t=\frac{\hat\theta}{SD(\theta^*)}. \]
The custom two-sided bootstrap p-value is:
\[ p=2\min\left[P(\theta^*\le0),P(\theta^*>0)\right]. \]
Percentile and Metis BC intervals are also returned.
10.6 Specific indirect paths and current limit boundary
The Embedded custom path enumerator can recognise long mediated chains beyond the ordinary SEMinR helper’s current cutoff. This does not mean that Metis globally removes all mediator-count limitations. Repeated Indicators and Disjoint bootstrap use SEMinR’s ordinary specific-effect helper and therefore inherit its current limitations.
10.7 HOC support matrix
| Procedure | Repeated Indicators | Embedded Two-stage | Disjoint Two-stage |
|---|---|---|---|
| PLS-SEM | Yes | Yes | Yes |
| Bootstrap | Yes, SEMinR | Yes, Metis two-stage resampling | Yes, SEMinR |
| PLSpredict | Yes, Metis alias workaround | No | No |
| MICOM | No in current Metis backend | No | No |
| MGA | Supported through method-aware group estimation | Supported with group-specific two-stage reruns | Supported |
11. Moderation and interaction effects
Moderation means that the effect of an antecedent \(X\) on outcome \(Y\) depends on a moderator \(M\). A standard structural representation is:
\[ Y=\beta_1X+\beta_2M+\beta_3(XM)+\varepsilon. \]
The interaction coefficient \(\beta_3\) is the moderation effect. PLS interaction approaches are reviewed by Henseler and Chin (2010).
11.1 Interaction construction
Metis currently creates interaction terms using:
seminr::interaction_term(
iv = X,
moderator = M,
method = seminr::two_stage
)The same IV×moderator pair is created only once even if it moderates more than one outcome. The corresponding interaction construct can then have multiple structural paths.
11.2 Moderator main effect
If the moderator → outcome main effect is missing, Metis adds it to the estimation payload. This protects SEMinR’s two-stage interaction estimation and also follows the hierarchical principle that the interaction should normally be interpreted with its component main effects represented.
11.3 Joint model
The Joint model is the actual structural model containing all selected interaction terms simultaneously. Its path coefficients, bootstrap confidence intervals and significance results are the inferential moderation results for that fitted model.
11.4 Isolated moderation diagnostic
Metis also provides an Isolated comparison mode as a diagnostic. It is not a substitute for the joint model’s coefficient inference.
For each interaction:
- Metis fits a baseline model with all interaction terms removed.
- It fits another model with only the focal interaction restored.
- It extracts \(R^2\) for the interaction’s outcome.
- It calculates:
\[ \Delta R^2=R^2_{with}-R^2_{without}, \]
\[ f^2_{interaction}=\frac{\Delta R^2}{1-R^2_{with}}. \]
Metis labels the diagnostic as:
- \(f^2\ge0.35\): large;
- \(0.15\le f^2<0.35\): medium;
- \(0.02\le f^2<0.15\): small;
- \(f^2<0.02\): negligible.
These labels are descriptive conventions. The joint interaction coefficient and its bootstrap inference remain the primary evidence for moderation.
11.5 Simple slopes and slope chart
The Results View includes interaction summaries, simple-slope tables and a slope plot. These are presentation/interpretation layers derived from the fitted interaction model. Researchers should report the underlying interaction coefficient and inferential interval together with any slope visualisation.
12. PLSpredict
PLSpredict is a \(k\)-fold cross-validation procedure used to assess the out-of-sample predictive power of a PLS-SEM model (Shmueli et al., 2019). Metis calculates out-of-sample prediction statistics including \(Q^2_{predict}\), Root Mean Squared Error (RMSE), and Mean Absolute Error (MAE) across manifest indicators, comparing PLS predictions against a naïve Linear Model (LM) benchmark to evaluate high, medium, or low predictive capability.
12.1 Core execution — SEMinR-native predictions
Metis calls:
seminr::predict_pls(
model = fitted_model,
technique = predict_DA_or_EA,
noFolds = folds_or_NULL_for_LOOCV,
reps = repetitions,
cores = NULL
)Before the call, Metis sets the requested prediction seed.
Current Metis defaults are:
| Setting | Default |
|---|---|
| Validation | K-fold |
| Folds | 10 |
| Repetitions | 1 |
| Technique | Direct Antecedents (DA) |
| Prediction seed | 123 |
| CVPAT | Off |
12.2 Direct Antecedents (DA)
SEMinR’s predict_DA uses the immediate/direct antecedent construct scores when generating an endogenous construct prediction. At the construct-score matrix level, the current package computes the structural projection and restores exogenous scores.
For a simple chain:
A → B → C → D
DA predicts \(D\) from its immediate antecedent \(C\) (and any other direct predecessors of \(D\)).
12.3 Earliest Antecedents (EA)
SEMinR explicitly defines EA as Earliest Antecedents. The current package zeroes endogenous positions, retains exogenous/earliest construct information and propagates predicted scores through the structural ordering.
For:
A → B → C → D
EA conceptually follows:
A → predicted B → predicted C → predicted D
12.4 Current UI terminology
The current UI and backend use the canonical label Earliest antecedents (EA). Legacy stored values labelled Entire antecedents are normalised for compatibility.
12.5 K-fold cross-validation
For \(K\)-fold validation, observations are partitioned into \(K\) subsets. Each fold is held out once while the model is fitted on the remaining folds. Predictions for all held-out cases are then combined.
SEMinR’s current prediction source shuffles the data once and creates folds with a deterministic cut() over the shuffled order. Metis reconstructs this mapping using the same R sample()/cut() pattern so that its benchmark calculations align with SEMinR’s prediction rows.
12.6 Leave-one-out cross-validation (LOOCV)
When validation mode is LOOCV, SEMinR is called with noFolds = NULL, which makes the number of folds equal to the number of usable observations. Each observation is therefore held out once.
12.7 Repetitions: current SEMinR implementation detail
The current SEMinR predict_pls() source shuffles the data once before the repetitions loop. If reps > 1, the same ordered data are passed repeatedly to the fold-building function, which deterministically reconstructs the same folds. Item-level PLS and LM predictions are averaged across those repetitions.
This is one reason that other softwares and Metis can be methodologically aligned yet differ by small amounts under apparently identical visible settings.
12.8 Normalised Metis prediction object
Raw SEMinR prediction output is converted into one aligned internal object. Metis aligns common row identifiers across:
- item actual values;
- PLS out-of-sample item predictions;
- PLS out-of-sample residuals;
- LM out-of-sample item predictions;
- LM residuals;
- construct out-of-sample predictions;
- construct reference/actual scores (
actuals_star).
This object becomes the single source for the main PLSpredict summaries and MV CVPAT.
12.9 Linear-model (LM) benchmark
LM predictions are produced by SEMinR as part of predict_pls(). Metis does not independently refit the normal LM benchmark used in the MV summary; it reads SEMinR’s LM out-of-sample predictions and residuals.
Under DA and EA, SEMinR selects benchmark predictor items according to its prediction technique. Because this is package-controlled, the exact LM predictor construction should be attributed to the installed SEMinR version.
12.10 Indicator Average (IA) benchmark — Metis-calculated
For each held-out case \(i\) and endogenous indicator \(j\), Metis reconstructs the training fold \(T_i\) and calculates the training-set mean:
\[ \hat y^{IA}_{ij} =\frac{1}{|T_i|}\sum_{k\in T_i}y_{kj}. \]
The IA residual is:
\[ e^{IA}_{ij}=y_{ij}-\hat y^{IA}_{ij}. \]
For LOOCV, \(T_i\) is every usable observation except \(i\).
This avoids data leakage: the held-out observation does not contribute to its own benchmark prediction.
12.11 Construct-level IA benchmark
For endogenous construct \(c\), Metis uses SEMinR’s held-out reference construct scores \(\xi_{ic}^*\). The training-fold construct mean is:
\[ \hat\xi^{IA}_{ic} =\frac{1}{|T_i|}\sum_{k\in T_i}\xi_{kc}^*, \]
and:
\[ e^{IA}_{ic}=\xi_{ic}^*-\hat\xi^{IA}_{ic}. \]
12.12 RMSE
For prediction errors \(e_i\):
\[ RMSE=\sqrt{\frac{1}{n}\sum_{i=1}^{n}e_i^2}. \]
RMSE penalises large errors more strongly because errors are squared.
12.13 MAE
\[ MAE=\frac{1}{n}\sum_{i=1}^{n}|e_i|. \]
MAE has a linear error penalty and is therefore less dominated by very large residuals than RMSE.
12.14 Manifest-variable Q²predict
Metis calculates Q²predict using PLS and IA errors for the same finite observations:
\[ Q^2_{predict,j} =1- \frac{ \sum_{i\in V_j}(e^{PLS}_{ij})^2 } { \sum_{i\in V_j}(e^{IA}_{ij})^2 }, \]
where:
\[ V_j=\{i:e^{PLS}_{ij}\text{ and }e^{IA}_{ij}\text{ are finite}\}. \]
Interpretation is direct:
- \(Q^2_{predict}>0\): PLS-SEM has smaller squared prediction error than the IA benchmark over those cases;
- \(Q^2_{predict}=0\): equal squared-error performance;
- \(Q^2_{predict}<0\): IA performs better.
12.15 Construct-level Q²predict
Construct Q²predict is not obtained by averaging indicator Q²predict values. Metis calculates it directly from held-out construct-score residuals:
\[ Q^2_{predict,c} =1- \frac{ \sum_{i\in V_c}(e^{PLS}_{ic})^2 } { \sum_{i\in V_c}(e^{IA}_{ic})^2 }. \]
This distinction is important: an average of indicator Q² values is not mathematically equivalent to a Q² calculated from construct-score prediction errors.
12.16 PLSpredict result panels
The current predictive summary panels are:
- PLSpredict MV Summary — Indicator, Q²predict, PLS RMSE/MAE, LM RMSE/MAE, IA RMSE/MAE.
- PLSpredict LV Summary — Construct, Q²predict, PLS RMSE/MAE.
- CVPAT MV Summary — PLS vs IA and PLS vs LM.
- CVPAT LV Summary — construct/overall CVPAT output from seminrExtras.
Diagnostic panels preserve case-level MV/LV predictions and errors plus PLS error histograms.
12.17 PLSpredict with interactions
Current SEMinR prediction source contains method-specific prediction paths for two-stage, product-indicator and orthogonal interaction models. Metis currently creates its own model interactions with SEMinR’s two-stage interaction method, so the relevant native prediction branch is the SEMinR two-stage interaction route.
12.18 PLSpredict with HOCs
SEMinR’s native predict_pls() returns no prediction for models carrying a native HOC flag because there is no published general HOC PLSpredict solution in the package.
Metis supports Repeated Indicators HOCs only through a constrained internal alias strategy:
- duplicated repeated-indicator columns are copied to unique internal names;
- the measurement specification is rewritten only for those duplicate aliases;
- an equivalent SEMinR model is re-estimated;
- Metis verifies that path coefficients and construct scores match the original model within tolerance \(10^{-10}\);
- prediction proceeds only if equivalence is preserved.
Embedded and Disjoint two-stage HOCs are explicitly rejected for PLSpredict in the current release.
13. Cross-Validated Predictive Ability Test (CVPAT)
CVPAT formally compares predictive loss. The original test was introduced by Liengaard et al. (2021), and benchmark/model extensions are discussed by Sharma et al. (2023).
13.1 General principle
For the same held-out case \(i\), define loss under PLS and a benchmark model:
\[ L_i^{PLS},\qquad L_i^{B}. \]
CVPAT is fundamentally a paired comparison because both losses refer to the same prediction case.
With squared-error loss:
\[ L_i=e_i^2. \]
Metis displays average-loss difference as:
\[ Diff=\overline{L}^{PLS}-\overline{L}^{B}. \]
Therefore:
Diff < 0means PLS has lower average loss and is better;Diff > 0means the benchmark has lower average loss.
13.2 LV CVPAT — seminrExtras-native
Construct-level CVPAT is obtained from:
seminrExtras::assess_cvpat(
seminr_model = model,
testtype = "two.sided",
nboot = ...,
seed = prediction_seed,
technique = predict_DA_or_EA,
noFolds = ...,
reps = ...,
cores = 1
)Metis reads the package’s:
CVPAT_compare_IACVPAT_compare_LM
and normalises them into two result sections. The Boot T value and Boot P Value are taken from seminrExtras. Metis does not replace the production LV CVPAT test with its MV extension.
13.3 MV CVPAT — Metis extension
SEMinR supplies case-wise item prediction errors. Metis squares those residuals:
\[ L_{ij}^{PLS}=(e_{ij}^{PLS})^2, \]
\[ L_{ij}^{IA}=(e_{ij}^{IA})^2, \]
\[ L_{ij}^{LM}=(e_{ij}^{LM})^2. \]
For a complete finite sample, the average squared loss identity is:
\[ \overline L^{PLS}_j=(RMSE^{PLS}_j)^2, \]
and similarly for IA and LM.
13.4 Paired-valid observation masks
For PLS versus IA:
\[ V_{IA,j}=\{i:L_{ij}^{PLS},L_{ij}^{IA}\text{ both finite}\}. \]
Metis reports:
\[ \overline L^{PLS}_{IA,j} =\frac{1}{|V_{IA,j}|}\sum_{i\in V_{IA,j}}L_{ij}^{PLS}, \]
\[ \overline L^{IA}_{j} =\frac{1}{|V_{IA,j}|}\sum_{i\in V_{IA,j}}L_{ij}^{IA}. \]
For PLS versus LM, an independent paired mask is used:
\[ V_{LM,j}=\{i:L_{ij}^{PLS},L_{ij}^{LM}\text{ both finite}\}. \]
This is deliberate. If IA and LM are missing for different cases, the PLS mean displayed in the two comparison sections can legitimately differ because each comparison refers to a different valid paired sample.
If fewer than two finite pairs are available, Metis returns NA for the descriptive and inferential comparison.
13.6 Fallback CVPAT bootstrap
If the seminrExtras internal bootstrap helper is unavailable/fails, Metis uses a fallback reproducing its centered-difference logic.
Define:
\[ D_i=L_i^B-L_i^{PLS}, \qquad \bar D=\frac1N\sum_iD_i. \]
Center the differences under the null:
\[ D_{0i}=D_i-\bar D. \]
For each bootstrap replication \(b\), resample \(D_0\) with replacement and compute bootstrap mean \(\bar D_b^*\). Then:
\[ SE_{boot}=SD(\bar D_1^*,\ldots,\bar D_B^*), \]
\[ t=\frac{\bar D}{SE_{boot}}. \]
The current fallback uses the two-sided t-distribution p-value:
\[ p=2F_t(-|t|;df=N-1). \]
If the bootstrap standard deviation is zero or non-finite, Metis returns NA for both t and p rather than manufacturing a zero test statistic.
14. Importance–Performance Map Analysis (IPMA)
IPMA extends PLS-SEM interpretation by combining an antecedent’s importance for a target construct with its performance. See Ringle and Sarstedt (2016).
14.1 Current execution — seminrExtras-native
The current backend calls:
seminrExtras::assess_ipma(
seminr_model = model,
target = target_construct,
scale_min = 1,
scale_max = 7,
seed = 123
)The IPMA inferential/score calculations are therefore attributed to seminrExtras.
14.2 Importance
In IPMA, importance is based on the total effect of an antecedent on the selected target, allowing direct and mediated influence to contribute.
For antecedent \(X\) and target \(Y\):
\[ Importance_{X\to Y}=TotalEffect_{X\to Y}. \]
seminrExtras performs the rescaling/standardisation details used by its implementation.
14.3 Performance
Performance is transformed to a 0–100 scale according to the assumed raw indicator scale limits. In broad form:
\[ Performance=100\times\frac{Score-Min}{Max-Min}. \]
The package constructs performance from the measurement information and selected scale range.
14.4 Current scale-setting boundary
Although the Preferences interface displays an IPMA scale-range control, the current backend call is hard-coded to 1–7. Therefore a current Metis IPMA result should be documented as using scale minimum 1 and maximum 7 unless the backend is changed in a later release.
15. Necessary Condition Analysis (NCA)
NCA evaluates necessary but not sufficient conditions. A necessary condition is one whose low level constrains the maximum attainable level of the outcome. The method was introduced by Dul (2016). Statistical significance testing is discussed by Dul, van der Laan and Kuik (2020). Guidance on combining PLS-SEM with NCA is provided by Richter et al. (2020).
15.1 Current execution — seminrExtras-native
Metis calls:
seminrExtras::assess_nca(
seminr_model = model,
target = target_construct,
predictors = selected_predecessors,
test.rep = run_depth,
steps = bottleneck_step,
seed = 123
)The NCA effect-size, significance and bottleneck data supplied by the package remain the statistical authority.
15.2 Predecessor scope
Metis chooses predictors from the structural graph.
Direct
Only constructs with a direct incoming path to the target are included.
All
Metis performs a reverse graph traversal, recursively collecting every upstream predecessor that can reach the target.
15.3 Effect size \(d\)
NCA’s effect size quantifies the size of the empty ceiling zone relative to the empirical scope. Conceptually:
\[ d=\frac{Ceiling\ Zone}{Scope}. \]
Metis does not recalculate the package’s inferential \(d\) table. For display classification, it applies:
| d | Metis label |
|---|---|
| \(d\le0\) | none |
| \(0<d<0.10\) | small |
| \(0.10\le d<0.30\) | medium |
| \(0.30\le d<0.50\) | large |
| \(d\ge0.50\) | very large |
15.4 Necessity status in Metis
Metis marks a condition as necessary if the package identifies it as necessary or when the normalised result has \(p<.05\) and \(d>0\). It labels a result borderline when \(p<.10\) or \(d\ge.10\), otherwise not_supported.
These are Metis display classifications layered on the underlying seminrExtras values.
15.5 Bottleneck table
The bottleneck table is normalised from seminrExtras output. It indicates the minimum predictor level required to make a selected target-outcome level possible under the fitted ceiling relation.
15.6 Ceiling-line chart
The inferential NCA table and the Metis ceiling chart should not be confused.
For the chart only, Metis builds display series from construct scores:
- CE-FDH display frontier: at each unique \(X\), take the maximum observed \(Y\), order by \(X\), then apply cumulative maximum;
- CR-FDH display line: identify frontier peers, fit a straight regression through those peer points and bound the displayed line to the observed \(Y\) range.
The chart is a Metis visualisation aid. The statistical NCA effect sizes and p-values come from seminrExtras.
15.7 Current NCA-settings boundary
The Preferences interface contains controls for ceiling methods and a random seed. The current backend advanced-analysis route uses seed 123 and cIPMA uses CE-FDH + CR-FDH. Researchers should report the actual backend settings recorded in the result rather than assuming every Preferences label changes execution.
16. Combined Importance–Performance Map Analysis (cIPMA)
cIPMA integrates sufficiency-oriented importance, performance and necessity information. The method was introduced by Hauff et al. (2024); a detailed tutorial is provided by Sarstedt et al. (2024).
16.1 Current execution — seminrExtras-native
Metis calls:
seminrExtras::assess_cipma(
seminr_model = model,
target = target_construct,
scale_min = 1,
scale_max = 7,
nca = run_nca,
nca_ceilings = c("ce_fdh", "cr_fdh"),
nca_test.rep = run_depth,
nca_steps = bottleneck_step,
seed = 123
)If cIPMA has already run its integrated NCA component, Metis reuses that NCA output instead of launching a second NCA run.
16.2 Interpretation
cIPMA combines three questions:
- Importance: If this antecedent changes, how strongly can the target change?
- Performance: How well is the antecedent currently performing on the rescaled score?
- Necessity: Is a minimum level of the antecedent required for high target performance to be possible?
The combination can change management/research priorities compared with classic IPMA alone because a condition can be necessary even when its sufficiency effect is not the largest.
17. MICOM: Measurement Invariance of Composite Models
Measurement Invariance of Composite Models (MICOM) is a 3-step testing protocol (Henseler, Ringle and Sarstedt, 2016) that establishes whether composite constructs are measured equivalently across sub-populations before conducting Multi-Group Analysis (MGA). MICOM evaluates: Step 1: Configural Invariance, Step 2: Compositional Invariance (\(c=1\) with permutation \(p > 0.05\)), and Step 3: Equality of Composite Means and Variances (establishing full vs. partial measurement invariance).
Metis currently uses its own MICOM v3 implementation, based on repeated SEMinR re-estimation and permutation logic. It is therefore Metis-calculated / Metis-orchestrated, not seminrExtras::assess_micom(). (See our dedicated Metis MICOM Guide for visual walkthroughs).
17.1 Current HOC restriction
MICOM is currently not available for models containing higher-order constructs.
17.2 Step 1: configural invariance
Metis checks that the two selected groups can be compared under the same modelling setup. The current checks include:
- same fitted SEMinR model object used as the rerun template;
- both selected groups contain at least two observations;
- required indicators/score inputs are available;
- construct specification is retained;
- SEMinR model settings are reused;
- the same supplied data-treatment context is applied.
If Step 1 fails, MICOM stops before the permutation test.
17.3 Step 2: compositional invariance
17.3.1 Group re-estimation
Metis fits the pooled selected data, then independently reruns the model for Group A and Group B.
17.3.3 Composite score construction
Given pooled standardized indicator matrix \(\mathbf X\) and group-specific outer-weight vectors \(\mathbf w_A,\mathbf w_B\):
\[ \mathbf s_A=\mathbf X\mathbf w_A, \qquad \mathbf s_B=\mathbf X\mathbf w_B. \]
17.3.4 Deterministic sign alignment
Composite signs are indeterminate: multiplying a score and its weights by \(-1\) does not change the underlying composite. Instead of taking abs(correlation), Metis uses a deterministic sign reference.
For each construct:
\[ \mathbf r=\operatorname{rowMean}(\mathbf X). \]
If:
\[ \operatorname{cor}(\mathbf s_g,\mathbf r)<0, \]
Metis flips \(\mathbf s_g\leftarrow-\mathbf s_g\).
The observed compositional similarity is then the signed correlation:
\[ c=\operatorname{cor}(\mathbf s_A,\mathbf s_B). \]
17.3.5 Permutation null
Metis repeatedly permutes group membership while preserving the original group sizes. For each permutation it reruns both group models and recomputes the compositional correlation.
17.3.6 Inadmissible re-estimations
A permutation pair is discarded when a group re-estimation is considered inadmissible. Current checks include:
- missing/non-finite outer weights;
- non-finite loadings;
- absolute loading above \(1+10^{-6}\) as a Heywood-type guard;
- iteration count reaching the configured maximum;
- non-finite construct scores;
- a zero-standard-deviation construct score.
Metis reports requested, admissible and dropped permutation counts by construct.
17.3.7 Decision
For each construct, Metis obtains the lower permutation quantile at \(\alpha\). Compositional invariance is supported when:
\[ c_{observed}\ge Q_{\alpha}(c_{perm}). \]
The lower-tail empirical p-value is:
\[ p=\frac{1}{B_{valid}}\sum_b I(c_b^{perm}\le c_{observed}). \]
If every construct passes Step 2, partial measurement invariance is established and Step 3 is run.
17.4 Step 3: equality of composite means and variances
Metis uses the pooled fitted model’s construct scores. Unlike Step 2, Step 3 permutes group allocation of these fixed scores rather than re-estimating the model in every permutation.
Mean difference
\[ \Delta\mu=\bar\eta_A-\bar\eta_B. \]
Variance difference
Metis uses a log variance ratio:
\[ \Delta_v=\log\left(\frac{s_A^2}{s_B^2}\right). \]
For each metric, it obtains two-sided permutation intervals and a strict empirical two-tailed p-value:
\[ p=\frac{1}{B}\sum_b I(|D_b^{perm}|>|D_{observed}|). \]
Equality is supported when \(p>\alpha\).
If Step 2 passes and all mean/variance comparisons pass Step 3, Metis labels full measurement invariance. If Step 2 passes but Step 3 does not fully pass, partial measurement invariance is retained.
17.5 Relationship to cSEM validation
The current MICOM comments record that sign alignment, inadmissible-permutation dropping and strict Step-3 p-values were hardened against cSEM’s MICOM behaviour. This should be described as an implementation-validation choice, not as a claim that every internal cSEM computation has been copied.
18. Multi-Group Analysis (MGA)
Multi-Group Analysis (MGA) tests whether structural path coefficients or measurement parameters differ significantly between two discrete sub-populations (Sarstedt, Henseler and Ringle, 2011). Metis estimates the group models separately, runs group-specific bootstrap resampling, and provides both Henseler’s non-parametric PLS-MGA permutation test and the parametric Welch–Satterthwaite test to evaluate hypothesized moderation by group membership.
18.1 Group-specific estimation
The selected data are split into Group A and Group B. Each group receives its own PLS estimation under the selected model/HOC method. This avoids reusing pooled HOC Stage-1 scores for the two groups.
For Embedded HOCs, Stage 1 and Stage 2 are rebuilt independently within each group and within each group bootstrap resample.
18.2 Parameters compared
Metis can construct comparisons for:
- structural path coefficients;
- outer loadings;
- outer weights;
- total effects;
- total indirect effects;
- specific indirect effects.
The interface focuses most visibly on path, loading and weight comparison panels while group-specific result trees expose the broader model outputs.
18.3 Difference orientation
For an estimate \(\hat\theta\):
\[ \Delta\theta=\hat\theta_A-\hat\theta_B. \]
A positive difference means Group A’s estimate is larger; a negative difference means Group B’s estimate is larger.
18.4 Bias-corrected confidence-interval comparison
Metis calculates a BC interval separately from each group’s bootstrap distribution using the same Metis BC function described in the Bootstrap section.
If the two intervals do not overlap, the comparison is labelled significant in this result family.
This is a confidence-interval heuristic and should not be conflated with the probability calculation used by Henseler PLS-MGA.
18.5 Henseler PLS-MGA probability
Metis recentres the two group bootstrap distributions around their original estimates and computes the probability that one group distribution exceeds the other, including half-weight for exact ties.
If the resulting probability \(p_{MGA}\) satisfies:
\[ p_{MGA}<\alpha \quad\text{or}\quad p_{MGA}>1-\alpha, \]
Metis labels the difference significant.
This reproduces the two-tail decision logic of the non-parametric PLS-MGA family.
18.6 Parametric comparison — current Metis implementation
Metis also reports a two-sided result labelled Parametric Test. Let \(s_A\) and \(s_B\) be the standard deviations of the two group-specific bootstrap parameter distributions. The current source code uses:
\[ df=n_A+n_B-2, \]
\[ V_p= \frac{(n_A-1)^2}{df}s_A^2+ \frac{(n_B-1)^2}{df}s_B^2, \]
\[ SE_{Metis,p}=\sqrt{V_p}\sqrt{\frac1{n_A}+\frac1{n_B}}, \]
and
\[ t=\frac{\hat\theta_A-\hat\theta_B}{SE_{Metis,p}}, \qquad p=2F_t(-|t|;df). \]
This section deliberately calls the formula the current Metis parametric implementation rather than presenting it as the generic textbook pooled-variance independent-samples t test. In particular, the code contains squared \((n_g-1)^2\) factors around the bootstrap-distribution variances. That detail should remain visible in open-source documentation and should be independently methodology-validated before Metis claims exact identity with a specific published parametric MGA formula.
18.7 Welch-labelled comparison — current Metis implementation
For the result labelled Welch Test, Metis defines:
\[ A=\frac{n_A-1}{n_A}s_A^2, \qquad B=\frac{n_B-1}{n_B}s_B^2, \]
\[ SE_{Metis,W}=\sqrt{A+B}, \]
and the current source degrees of freedom are:
\[ df= \frac{(A+B)^2} {A^2/(n_A-1)+B^2/(n_B-1)}-2. \]
It then reports:
\[ t=\frac{\hat\theta_A-\hat\theta_B}{SE_{Metis,W}}, \qquad p=2F_t(-|t|;df). \]
As with the parametric route, the documentation reports the implementation exactly as coded. The -2 degrees-of-freedom adjustment and the use of bootstrap-distribution SDs mean that the current result should be described as Metis’s Welch-labelled MGA comparison, not assumed to be numerically identical to every textbook Welch–Satterthwaite test or another software package’s implementation without separate validation.
18.8 MICOM before MGA
Metis does not automatically force a MICOM run before MGA. For ordinary composite models, researchers should assess measurement invariance when substantive group comparisons require it. For HOC models, the current Metis backend explicitly states that MICOM is unavailable, so MGA results are estimated without a Metis MICOM invariance assessment and should be interpreted with that limitation visible.
19. Post-hoc power diagnostic
If the semPower package is installed, Metis can call:
semPower::semPower.postHoc(...)The current fallback defaults are:
- \(\alpha=.05\);
- effect = .05;
- effect measure =
RMSEA; - sample size = current data rows;
- degrees of freedom = user-provided value when available, otherwise
max(1, number_of_columns - 1).
Because the automatic degrees of freedom is explicitly a proxy, this output should be treated as a supplemental diagnostic unless the researcher has supplied a defensible df and effect-size specification. Post-hoc power should not replace effect estimates, uncertainty intervals or a priori design reasoning.
20. Results View and diagnostic panels
The Results View is organised by analysis mode rather than merging unrelated statistics into one large table.
20.1 PLS-SEM panels
Current categories include:
- path coefficients;
- total indirect effects;
- specific indirect effects;
- total effects;
- outer loadings;
- outer weights;
- reliability/validity;
- discriminant validity;
- cross-loadings;
- R²/adjusted R²;
- f²;
- VIF;
- model fit;
- model-selection criteria;
- latent/construct scores;
- indicator correlations and data diagnostics;
- algorithm settings and execution log.
20.2 Bootstrap panels
Bootstrap separates resampled structural and measurement effects from base-model quality criteria. The base reliability, discriminant-validity, R², f² and VIF panels are reference values from the fitted base model, while bootstrap path/loading/weight/effect tables contain resampling inference.
20.3 PLSpredict panels
The redundant standalone Q²predict and PLS-vs-LM panels were removed from the current panel catalogue. Q²predict and benchmark errors are consolidated into the MV/LV summaries, while CVPAT has dedicated MV/LV summaries.
20.4 Advanced-analysis panels
IPMA/NCA/cIPMA panels include priority map, construct table, necessity check, ceiling lines, bottleneck table and cIPMA priorities.
20.5 MICOM panels
Current MICOM panels expose overview/configural checks, compositional invariance, equality of means, equality of variances, invariance classification, settings and execution log.
20.6 MGA panels
MGA contains an overview, group-comparison panels and full group-specific measurement/structural/model-quality result trees.
20.7 Execution logs
Metis records algorithm settings and execution notes alongside results. These logs are part of the reproducibility contract: they should be used to verify what was actually applied when the visible preference and the current backend capability differ.
21. Tark reporting
Tark is Metis’s automated academic reporting engine designed to convert saved estimation results into publication-ready APA 7th edition tables and editable Microsoft Word (.docx) documents (learn more about Tark). Tark is a pure reporting layer: it does not re-estimate the model. It reads saved Metis result objects and formats them into structured table families with academic precision.
The current table families are:
Default
- Measurement model assessment
- Discriminant validity assessment
- Structural model assessment
- Explanatory/predictive power
- Model fit assessment
Advanced, when available
- PLSpredict assessment
- IPMA results
- NCA results
- Additional effects analysis, including mediation/moderation/total/specific indirect effects
Because Tark is downstream of the statistical backend, a table should always inherit the provenance of the statistic it contains. For example, a Tark HTMT table remains SEMinR-native; a Tark Metis-fit table remains Metis-calculated.
21.1 Q² terminology in Tark
The current Tark family description uses the generic label “Q²”. In the supplied backend, the implemented predictive Q² calculation is Q²predict from PLSpredict. No separate Stone–Geisser blindfolding Q² computation route was found in the current backend source used for this documentation. Website/report wording should therefore avoid implying that a blindfolding Q² statistic was computed when the available value is Q²predict.
22. Reproducibility, seeds, cores and caching
22.1 Seeds are procedure-specific
A numeric seed controls a particular random process only if that seed is actually passed/set in that procedure. Researchers should not assume there is one universal Metis seed controlling every analysis.
| Procedure | Current seed behaviour |
|---|---|
| PLSpredict | Metis sets prediction seed immediately before predict_pls(); default 123 |
| PLSpredict IA fold reconstruction | Uses the same prediction seed with R sample()/cut() pattern |
| CVPAT LV | Prediction seed passed to assess_cvpat() |
| MV CVPAT bootstrap | Seed state is set before loop; seminrExtras/internal R resampling follows current RNG state |
| IPMA | Current backend hardcodes seed 123 |
| NCA | Current backend hardcodes seed 123 |
| cIPMA | Current backend hardcodes seed 123 |
| MICOM | User/request seed passed into custom MICOM; default in MICOM function is 123 |
| Embedded HOC bootstrap | Uses supplied bootstrap seed when present |
| Ordinary SEMinR bootstrap | Current Metis route does not directly pass stored bootstrap seed to bootstrap_model() |
| MGA | Group bootstrap orchestration follows MGA payload/backend seed handling; inspect recorded settings for the run |
22.2 Multi-core execution
Metis uses a stepped desktop-safe core policy to preserve interface responsiveness. Machines with 13 or more detected logical cores use 12 analysis cores; 11–12 use 10; 9–10 use 8; and 7–8 use 6. On smaller machines, Metis reserves one logical core where possible and uses at least one analysis core.
Large bootstrap, MICOM and MGA operations can therefore use multiple logical cores. Parallel execution should change runtime, not the definition of the requested statistic, although random-stream implementation can affect exact resampling sequences.
22.3 Calculation timeouts
Local analysis HTTP requests and bootstrap execution allow up to 30 minutes by default. This ceiling is a failure boundary, not a runtime estimate: duration depends on model size, observations, resamples, follow-up analyses and available hardware.
22.4 PLS core cache
Metis caches a small number of fitted PLS cores to avoid unnecessary re-estimation when the model, dataset signature and algorithm settings are unchanged. The cache key includes dataset identity/signature, constructs, paths, interactions, algorithm and algorithm settings. Caching does not intentionally alter estimates; it reuses an already fitted equivalent base model.
24. Numerical validation against other software
24.1 What should be matched exactly?
Where the same case-level predictions are available, identities should hold to numerical precision. Examples include:
\[ \overline{L}^{PLS}=RMSE_{PLS}^2 \]
for complete finite squared-error loss samples, and:
\[ Diff=PLS\ Loss-Benchmark\ Loss. \]
Likewise, Metis Q²predict must satisfy its stated SSE identity on the paired PLS/IA sample.
24.2 What may differ slightly?
Small differences can arise when Metis/SEMinR and another application use different:
- random fold assignments;
- repetition semantics;
- random-number generators;
- bootstrap resamples;
- benchmark estimation details;
- missing-value treatments;
- internal standardisation or score orientation.
A difference of a few thousandths is therefore not, by itself, evidence that one implementation is wrong. Validation should examine formula identities, direction, ranking and substantive conclusions as well as absolute numerical distance.
24.3 Recommended validation design
For external validation:
- use the exact same cleaned dataset and row order;
- use the exact same model and measurement types;
- align standard PLS versus PLSc;
- align HOC method;
- align prediction technique (DA versus EA);
- align folds/repetitions as far as the software permits;
- use fixed seeds where both programs expose them;
- compare base estimates before bootstrap statistics;
- compare deterministic identities before stochastic p-values;
- document any procedure whose random partitions cannot be made identical.
This is a stronger validation strategy than expecting every digit to match without checking whether the two programs actually used the same resamples.
25. Current defaults worth reporting
The following are current code-level defaults or common route defaults. A saved result’s own algorithm settings remain the best source for a particular analysis.
| Setting | Current default / route behaviour |
|---|---|
| PLS maximum iterations | 300 |
| PLS convergence display default | 1e-7 → SEMinR stop criterion 7 |
| PLS inner weighting | Path weighting |
| Missing-data treatment | Mean replacement |
| Standard/consistent algorithm | Standard PLS by default |
| HOC preference default in current UI | Repeated indicators |
| Backend compatibility HOC default when fields are absent | Two-stage / Disjoint two-stage |
| Bootstrap samples | 500 route/UI default |
| Bootstrap confidence | 95% UI default |
| PLSpredict folds | 10 |
| PLSpredict repetitions | 1 |
| PLSpredict technique | Direct antecedents |
| PLSpredict seed | 123 |
| CVPAT | Off by default |
| CVPAT bootstrap cap/default | 2000 unless environment configuration changes it |
| NCA run depth | 500 UI default; backend uses payload with configured ceiling |
| NCA/IPMA/cIPMA advanced seed | 123 in current backend |
| MICOM permutation UI default | 5000 |
| MGA bootstrap UI default | 500 |
| Moderation comparison UI default | Joint model |
27. Suggested reporting language for research papers
The wording below is intentionally conservative and source-aligned.
27.1 Standard PLS-SEM
The PLS-SEM model was estimated in Metis, which uses the SEMinR R package as its core estimation engine. Reflective constructs were represented through SEMinR’s Mode A composite specification for standard PLS, while formative constructs used Mode B. The model was estimated using the path weighting scheme and the reported convergence settings.
27.2 PLSc
Reflective common-factor constructs were estimated using Metis’s Consistent PLS option, which translates the reflective specification to SEMinR’s PLSc-capable
reflective()model representation (Dijkstra & Henseler, 2015).
27.3 Bootstrap
Statistical inference was assessed by non-parametric bootstrapping through SEMinR’s
bootstrap_model()as invoked by Metis. The number of bootstrap subsamples and confidence level are reported with the analysis. Metis additionally reports the selected supported Percentile, BC or BCa interval for ordinary bootstrap tables; the interval type saved with the analysis should be named in the report.
If Embedded HOC was used, replace this with:
For the Embedded two-stage HOC model, Metis resampled the original observations and re-estimated both Stage 1 and Stage 2 in each bootstrap sample so that Stage-1 score estimation was not held fixed across resamples.
27.4 PLSpredict
Out-of-sample predictive assessment was performed using SEMinR’s
predict_pls()through Metis, with the reported fold count, repetitions, prediction technique and seed. Metis constructed the Indicator Average benchmark from each held-out case’s training fold and calculated Q²predict, RMSE and MAE from aligned out-of-sample residuals (Shmueli et al., 2019).
27.5 CVPAT
Construct-level CVPAT results were obtained from
seminrExtras::assess_cvpat(). Metis additionally reports an indicator-level CVPAT extension based on paired case-wise squared prediction losses and the seminrExtras bootstrap CVPAT procedure (Liengaard et al., 2021; Sharma et al., 2023).
27.6 MICOM
Measurement invariance was assessed using Metis’s MICOM implementation following the three-step procedure of Henseler, Ringle and Sarstedt (2016). The implementation uses SEMinR group re-estimation, permutation-based compositional invariance, deterministic composite-sign alignment and explicit filtering/reporting of inadmissible permutation re-estimations.
27.7 MGA
Group differences were examined using Metis MGA, which estimates the model independently within each group, bootstraps group-specific parameters and reports non-parametric PLS-MGA, confidence-interval, parametric and Welch comparisons. Measurement invariance should be reported separately where applicable (Sarstedt et al., 2011).
29. References and methodological sources
Becker, J.-M., Klein, K., & Wetzels, M. (2012). Hierarchical latent variable models in PLS-SEM: Guidelines for using reflective-formative type models. Long Range Planning, 45, 359–394. https://doi.org/10.1016/j.lrp.2012.10.001
Dijkstra, T. K., & Henseler, J. (2015). Consistent partial least squares path modeling. MIS Quarterly, 39(2), 297–316. https://doi.org/10.25300/MISQ/2015/39.2.02
Dul, J. (2016). Necessary Condition Analysis (NCA): Logic and methodology of “necessary but not sufficient” causality. Organizational Research Methods, 19(1), 10–52. https://doi.org/10.1177/1094428115584005
Dul, J., van der Laan, E., & Kuik, R. (2020). A statistical significance test for Necessary Condition Analysis. Organizational Research Methods. https://doi.org/10.1177/1094428118795272
Fornell, C., & Larcker, D. F. (1981). Evaluating structural equation models with unobservable variables and measurement error. Journal of Marketing Research, 18(1), 39–50. https://doi.org/10.1177/002224378101800104
Hair, J. F., Risher, J. J., Sarstedt, M., & Ringle, C. M. (2019). When to use and how to report the results of PLS-SEM. European Business Review, 31(1), 2–24. https://doi.org/10.1108/EBR-11-2018-0203
Hauff, S., Richter, N. F., Sarstedt, M., & Ringle, C. M. (2024). Importance and performance in PLS-SEM and NCA: Introducing the combined importance-performance map analysis (cIPMA). Journal of Retailing and Consumer Services, 78, 103723. https://doi.org/10.1016/j.jretconser.2024.103723
Henseler, J., & Chin, W. W. (2010). A comparison of approaches for the analysis of interaction effects between latent variables using partial least squares path modeling. Structural Equation Modeling, 17(1), 82–109. https://doi.org/10.1080/10705510903439003
Henseler, J., Hubona, G., & Ray, P. A. (2016). Using PLS path modeling in new technology research: Updated guidelines. Industrial Management & Data Systems, 116(1), 2–20. https://doi.org/10.1108/IMDS-09-2015-0382
Henseler, J., Ringle, C. M., & Sarstedt, M. (2015). A new criterion for assessing discriminant validity in variance-based structural equation modeling. Journal of the Academy of Marketing Science, 43, 115–135. https://doi.org/10.1007/s11747-014-0403-8
Henseler, J., Ringle, C. M., & Sarstedt, M. (2016). Testing measurement invariance of composites using partial least squares. International Marketing Review, 33(3), 405–431. https://doi.org/10.1108/IMR-09-2014-0304
Liengaard, B. D., Sharma, P. N., Hult, G. T. M., Jensen, M. B., Sarstedt, M., Hair, J. F., & Ringle, C. M. (2021). Prediction: Coveted, yet forsaken? Introducing a cross-validated predictive ability test in partial least squares path modeling. Decision Sciences, 52(2), 362–392. https://doi.org/10.1111/deci.12445
Nitzl, C., Roldán, J. L., & Cepeda, G. (2016). Mediation analysis in partial least squares path modeling: Helping researchers discuss more sophisticated models. Industrial Management & Data Systems, 116(9). https://doi.org/10.1108/IMDS-07-2015-0302
Ray, S., Danks, N. P., & Calero Valdez, A. (2021). SEMinR: Domain-specific language for building, estimating, and visualizing structural equation models in R. https://doi.org/10.2139/ssrn.3900621
Richter, N. F., Schubring, S., Hauff, S., Ringle, C. M., & Sarstedt, M. (2020). When predictors of outcomes are necessary: Guidelines for the combined use of PLS-SEM and NCA. Industrial Management & Data Systems. https://doi.org/10.1108/IMDS-11-2019-0638
Ringle, C. M., & Sarstedt, M. (2016). Gain more insight from your PLS-SEM results: The importance-performance map analysis. Industrial Management & Data Systems, 116(9), 1865–1886. https://doi.org/10.1108/IMDS-10-2015-0449
Sarstedt, M., Hair, J. F., Cheah, J.-H., Becker, J.-M., & Ringle, C. M. (2019). How to specify, estimate, and validate higher-order constructs in PLS-SEM. Australasian Marketing Journal, 27(3), 197–211. https://doi.org/10.1016/j.ausmj.2019.05.003
Sarstedt, M., Henseler, J., & Ringle, C. M. (2011). Multigroup analysis in partial least squares (PLS) path modeling: Alternative methods and empirical results. Advances in International Marketing, 22, 195–218. https://doi.org/10.1108/S1474-7979(2011)0000022012
Sarstedt, M., Richter, N. F., Hauff, S., & Ringle, C. M. (2024). Combined importance–performance map analysis (cIPMA) in partial least squares structural equation modeling (PLS-SEM): A SmartPLS 4 tutorial. Journal of Marketing Analytics, 12, 746–760. https://doi.org/10.1057/s41270-024-00325-y
Sharma, P. N., Liengaard, B. D., Hair, J. F., Sarstedt, M., & Ringle, C. M. (2023). Predictive model assessment and selection in composite-based modeling using PLS-SEM: Extensions and guidelines for using CVPAT. European Journal of Marketing, 57(6), 1662–1677. https://doi.org/10.1108/EJM-08-2020-0636
Shmueli, G., Sarstedt, M., Hair, J. F., Cheah, J.-H., Ting, H., Vaithilingam, S., & Ringle, C. M. (2019). Predictive model assessment in PLS-SEM: Guidelines for using PLSpredict. European Journal of Marketing, 53(11), 2322–2347. https://doi.org/10.1108/EJM-02-2019-0189
Tenenhaus, M., Vinzi, V. E., Chatelin, Y.-M., & Lauro, C. (2005). PLS path modeling. Computational Statistics & Data Analysis, 48(1), 159–205. https://doi.org/10.1016/j.csda.2004.03.005
Streukens, S., & Leroi-Werelds, S. (2016). Bootstrapping and PLS-SEM: A step-by-step guide to get more out of your bootstrap results. European Management Journal. https://doi.org/10.1016/j.emj.2016.06.003
Software documentation
- SEMinR CRAN package and reference manual: current package source should be consulted because package-level formulas and prediction behaviour can change between releases.
- seminrExtras CRAN package and reference manual: consult the installed-version documentation for
assess_cvpat(),assess_ipma(),assess_nca()andassess_cipma(). - Metis source code: the source repository is the final authority for Metis-specific orchestration and UI/backend integration in a given release.