pls_monitoring — PLS monitoring (T² + Q with control limits)¶
Group: Diagnostic · Registry tolerance: 1e-08
Description¶
PLS process monitoring (T²/Q thresholds + alarms) (§19)
Registry note — R
mdatools::plsreused for monitoring T². SIMPLS convention differences inflate the divergence; widened tolerance flags external-ref presence.
Parameters¶
Name |
Type |
Default |
Notes |
|---|---|---|---|
|
|
|
registry benchmark cell value |
|
|
|
registry benchmark cell value |
Explanations¶
Bibliographic source¶
Kourti, T. & MacGregor, J. F. (1996). Multivariate SPC methods for process and product monitoring and control. Journal of Quality Technology 28(4), 409–428. Verified primary link: https://doi.org/10.1080/00224065.1996.11979699.
Mathematical principle¶
The routine computes T-squared and Q statistics for the reference observations, sorts each empirical distribution, and chooses its \((1-\alpha)\) sample quantile as the corresponding control limit. New observations are flagged when either statistic exceeds that stored limit.
Appropriate uses¶
Process or instrument monitoring with paired score-leverage and X-residual alarms.
Limits and validation¶
Current control limits are empirical reference quantiles, so alpha is resolution-limited in small reference sets and no F/Jackson–Mudholkar model is fitted.
Implementation¶
No parametric F approximation for T-squared and no Jackson–Mudholkar Q approximation is evaluated in this path. Reference-set size and representativeness directly determine the empirical limits.
Sources and provenance¶
Current implementation: cpp/src/core/pls_monitoring.cpp.
API and bindings¶
C ABI (ABI 2): n4m_metrics_pls_monitoring_run. Use the linked public header for the exact signature, configuration, and result handles.
Python: no current AST-verified public n4m re-export was found for this method. The linked C ABI above is the documented surface in this checkout.
R (source-verified): pls_monitoring(model, X_reference, X_monitor, alpha = 0.95).
The source signature has additional required inputs, so no example call is fabricated.
MATLAB / Octave (source-verified): pls_monitoring(X_reference, Y_reference, X_monitor, ... n_components, alpha).
The source signature has additional required inputs, so no example call is fabricated.
Registry parity references 📐
📐
ref.r_mdatools(R · r) —mdatools0.15.0 · strict (rmse_rel ≤ 1e-08) — Rmdatools::plsreturning T² for monitoring rows. SIMPLS-convention differences with pls4all inflate divergence; qualitative parity.
Benchmarks¶
Archived measurement identity. Backend labels in this table are the raw IDs recorded when the benchmark ran (including historical pls4all.* IDs). They preserve measurement provenance and do not describe a current public Python, R, or MATLAB binding; use the source-verified API and bindings section above for current entry points.
Adaptive wall-clock per cell measured against full_matrix.csv. Only backends that implement this method are listed; libraries without the method are omitted.
Verdict · ✓ ref / ≈ ref / ~ shape mark a reference-gate pass at strict / relaxed / qualitative tolerance · ✓ bind = archived binding-harness result agrees with the C++ baseline · ⇄ cross-check = documented by-design selector/RNG/model, noncanonical API/facade convention, or secondary oracle · ✗ divergent · ⚠ error · — not run. The fastest backend per column is marked 🏆.
Reference gate: strict — numeric equivalence (rmse_rel_tol ≤ 1e-08).
Rows tagged with 📐 are the canonical parity references for this method (declared in parity_timing.registry). C++ and external rows show reference parity; archived language-harness rows show binding parity against the C++ backend. Hover the icon for role and tolerance band.
| Backend | Parity | 200×30 (ms) |
|---|---|---|
| C++ native · libn4m | ||
pls4all.cpp.blas+omp | ✓ ref 5e-15 | 1.23 ms |
| Python · archived pls4all benchmark | ||
pls4all.python | ✓ bind | 1.18 ms🏆 |
pls4all.sklearn | ✓ bind | 1.32 ms |
| R · archived pls4all benchmark | ||
pls4all.R | ✓ 1e-13 | 2.90 ms |
pls4all.R.formula | ✓ 1e-13 | 3.54 ms |
pls4all.R.mdatools | ✓ 1e-13 | 3.81 ms |
pls4all.R.pls | ✓ 1e-13 | 3.74 ms |
| R · external | ||
📐ref.r_mdatools | source | 14.2 ms |
| Backend | Parity | 200×30 (ms) |
|---|---|---|
| C++ native · libn4m | ||
pls4all.cpp.blas+omp | ✓ ref 5e-15 | 1.19 ms🏆 |
| Python · archived pls4all benchmark | ||
pls4all.python | ✓ bind | 2.29 ms |
pls4all.sklearn | ✓ bind | 1.41 ms |
| R · archived pls4all benchmark | ||
pls4all.R | ✓ 1e-13 | 3.19 ms |
pls4all.R.formula | ✓ 1e-13 | 4.18 ms |
pls4all.R.mdatools | ✓ 1e-13 | 4.00 ms |
pls4all.R.pls | ✓ 1e-13 | 4.17 ms |
| R · external | ||
📐ref.r_mdatools | source | 14.3 ms |
| Backend | Parity | 200×30 (ms) |
|---|---|---|
| C++ native · libn4m | ||
pls4all.cpp.blas+omp | ✓ ref 5e-15 | 1.26 ms🏆 |
| Python · archived pls4all benchmark | ||
pls4all.python | ✓ bind | 1.61 ms |
pls4all.sklearn | ✓ bind | 1.34 ms |
| R · archived pls4all benchmark | ||
pls4all.R | ✓ 1e-13 | 5.85 ms |
pls4all.R.formula | ✓ 1e-13 | 9.79 ms |
pls4all.R.mdatools | ✓ 1e-13 | 7.99 ms |
pls4all.R.pls | ✓ 1e-13 | 3.84 ms |
| R · external | ||
📐ref.r_mdatools | source | 14.4 ms |
See also: benchmark overview · methods index · interactive dashboard