{
  "verified_at": "2026-10-30T05:30:04.902574+00:00",
  "algorithm": "Dayal & MacGregor (1997), modified linear kernel PLS algorithm 1; PLS1 and PLS2",
  "original_repository": "https://github.com/davidkellis/pls",
  "original_commit_reviewed": "d41b1e01049e1a538d7235d4d6950b6c7007c1cd",
  "browser_source_sha256": {
    "regression.ts": "06cd3a155588aaaca0a6a68012cbc88e1f4b0224cd86ece792fddb7033e7deb3",
    "experiment.ts": "a16f5b3e8f1a393e7c7b9b9418d589e2af3557b8db7d91b360358bb38627b893"
  },
  "matrix_library": "ml-matrix 6.15.1",
  "tests_passed": 60,
  "numeric_tolerance": "abs(actual-expected) <= 2e-7 * max(1, abs(expected))",
  "cases": 54,
  "numericalComparisons": 3681,
  "largestPredictionError": 1.2467040733099566e-09,
  "reference": {
    "numpy": "2.5.4",
    "scipy": "1.18.1",
    "scikit-learn": "1.9.1",
    "pls": "PLSRegression (NIPALS), tol=1e-24, max_iter=10000",
    "ols": "numpy.linalg.lstsq, rcond=eps*max(shape), centered and optionally sample-SD-scaled X"
  },
  "additional_checks": [
    "Full-rank PLS and OLS equivalence",
    "All response columns checked",
    "Constant/duplicate columns and rank exhaustion",
    "Invalid input rejection",
    "Fold-local preprocessing and training-only component choice",
    "PLS-favorable and OLS-favorable reproducible examples"
  ]
}
