Learn R Programming

valytics

Statistical methods for analytical method comparison and validation studies. The package implements Bland-Altman analysis, Passing-Bablok regression, Deming regression, and quality goal specifications based on biological variation — approaches commonly used in clinical laboratory method validation.

Installation

Install valytics from CRAN:

install.packages("valytics")

Or install the development version from GitHub:

# install.packages("pak")
pak::pak("marcellogr/valytics")

Overview

valytics provides tools for analytical method validation:

Method Comparison - Bland-Altman analysis: Assess agreement through bias and limits of agreement - Passing-Bablok regression: Non-parametric regression robust to outliers - Deming regression: Errors-in-variables regression for method comparison

Quality Specifications - Biological variation-based goals: Calculate allowable total error from CVI and CVG - Sigma metrics: Six Sigma quality assessment - Performance assessment: Evaluate methods against quality specifications

All methods produce publication-ready plots and comprehensive statistical summaries.

Method Comparison Examples

Bland-Altman Analysis

library(valytics)

# Compare two creatinine measurement methods
data(creatinine_serum)

ba <- ba_analysis(
  x = creatinine_serum$enzymatic,
  y = creatinine_serum$jaffe
)

ba
#> 
#> Bland-Altman Analysis
#> ---------------------------------------- 
#> n = 80 paired observations
#> 
#> Difference type: Absolute (y - x)
#> Confidence level: 95%
#> 
#> Results:
#>   Bias (mean difference): 0.174
#>     95% CI: [0.127, 0.220]
#>   SD of differences: 0.209
#> 
#> Limits of Agreement:
#>   Lower LoA: -0.236
#>     95% CI: [-0.316, -0.156]
#>   Upper LoA: 0.584
#>     95% CI: [0.504, 0.663]
plot(ba)

Passing-Bablok Regression

pb <- pb_regression(
  x = creatinine_serum$enzymatic,
  y = creatinine_serum$jaffe
)

pb
#> 
#> Passing-Bablok Regression
#> ---------------------------------------- 
#> n = 80 paired observations
#> 
#> CI method: Analytical (Passing-Bablok 1983)
#> Confidence level: 95%
#> 
#> Regression equation:
#>   creatinine_serum$jaffe = 0.234 + 0.971 * creatinine_serum$enzymatic
#> 
#> Results:
#>   Intercept: 0.234
#>     95% CI: [0.229, 0.239]
#>     (excludes 0: significant constant bias)
#> 
#>   Slope: 0.971
#>     95% CI: [0.966, 0.974]
#>     (excludes 1: significant proportional bias)
plot(pb)

Deming Regression

dm <- deming_regression(
  x = creatinine_serum$enzymatic,
  y = creatinine_serum$jaffe
)

dm
#> 
#> Deming Regression
#> ---------------------------------------- 
#> n = 80 paired observations
#> 
#> Error ratio (lambda): 1.000
#> CI method: Jackknife
#> Confidence level: 95%
#> 
#> Regression equation:
#>   creatinine_serum$jaffe = 0.277 + 0.953 * creatinine_serum$enzymatic
#> 
#> Results:
#>   Intercept: 0.277 (SE = 0.028)
#>     95% CI: [0.222, 0.332]
#>     (excludes 0: significant constant bias)
#> 
#>   Slope: 0.953 (SE = 0.014)
#>     95% CI: [0.925, 0.982]
#>     (excludes 1: significant proportional bias)
plot(dm)

Quality Specifications

Allowable Total Error from Biological Variation

Calculate performance goals based on within-subject (CVI) and between-subject (CVG) biological variation:

# Creatinine biological variation (from EFLM database)
# CV_I = 5.95%, CV_G = 14.7%
ate <- ate_from_bv(cvi = 5.95, cvg = 14.7)

ate
#> 
#> Analytical Performance Specifications from Biological Variation
#> ------------------------------------------------------------ 
#> 
#> Input:
#>   Within-subject CV (CV_I): 5.95%
#>   Between-subject CV (CV_G): 14.70%
#>   Performance level: desirable
#>   Coverage factor (k): 1.65
#> 
#> Specifications:
#>   Allowable imprecision (CV_A): 2.98%
#>   Allowable bias: 3.96%
#>   Total allowable error (TEa): 8.87%

Six Sigma Quality Assessment

# Evaluate method performance
sm <- sigma_metric(bias = 1.5, cv = 2.5, tea = 10)

sm
#> 
#> Six Sigma Metric
#> ---------------------------------------- 
#> 
#> Input:
#>   Observed bias: 1.50%
#>   Observed CV: 2.50%
#>   Total allowable error (TEa): 10.00%
#> 
#> Result:
#>   Sigma: 3.40
#>   Performance: Marginal
#>   Defect rate: ~66,800 per million

Performance Assessment

# Full quality assessment
assess <- ate_assessment(
  bias = 1.5, 
  cv = 2.5, 
  tea = 10,
  allowable_bias = 4.0, 
  allowable_cv = 3.0
)

assess
#> 
#> Analytical Performance Assessment
#> -------------------------------------------------- 
#> 
#>   >>> METHOD ACCEPTABLE <<<
#> 
#> Performance Summary:
#>   Parameter              Observed  Allowable     Status
#>   -------------------- ---------- ---------- ----------
#>   Bias                      1.50%      4.00%       PASS
#>   CV (Imprecision)          2.50%      3.00%       PASS
#>   Total Error               5.62%     10.00%       PASS
#> 
#> Sigma Metric: 3.40 (Marginal)

Features

  • Multiple interfaces: Vector input or formula syntax (method1 ~ method2)
  • Flexible CI methods: Analytical or bootstrap BCa confidence intervals
  • Assumption checking: CUSUM linearity test, Shapiro-Wilk normality test
  • Quality goals: Biological variation-based specifications (optimal/desirable/minimum)
  • Publication-ready plots: Built on ggplot2, fully customizable
  • Tidy workflows: Consistent API, informative summaries

Example Datasets

The package includes three realistic clinical datasets:

DatasetDescriptionn
glucose_methodsPOC meter vs. laboratory analyzer60
creatinine_serumEnzymatic vs. Jaffe methods80
troponin_cardiacTwo hs-cTnI platforms50

Vignettes

  • Method Comparison Workflow: Step-by-step analysis guide
  • Understanding Method Comparison Statistics: Educational overview
  • Deming Regression: When and how to use errors-in-variables regression
  • Quality Goals from Biological Variation: Setting performance specifications

References

Bland-Altman:

  • Bland JM, Altman DG (1986). Statistical methods for assessing agreement between two methods of clinical measurement. Lancet, 1(8476):307-310.
  • Bland JM, Altman DG (1999). Measuring agreement in method comparison studies. Statistical Methods in Medical Research, 8(2):135-160.

Passing-Bablok:

  • Passing H, Bablok W (1983). A new biometrical procedure for testing the equality of measurements from two different analytical methods. Journal of Clinical Chemistry and Clinical Biochemistry, 21(11):709-720.

Deming:

  • Linnet K (1990). Estimation of the linear relationship between the measurements of two methods with proportional errors. Statistics in Medicine, 9(12):1463-1473.

Biological Variation:

  • Fraser CG, Petersen PH (1993). Desirable standards for laboratory tests if they are to fulfill medical needs. Clinical Chemistry, 39(7):1447-1453.
  • EFLM Biological Variation Database: https://biologicalvariation.eu/

License

GPL-3

Copy Link

Version

Install

install.packages('valytics')

Version

0.3.0

License

GPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Marcello Grassi

Last Published

January 22nd, 2026

Functions in valytics (0.3.0)

summary.ba_analysis

Summary method for ba_analysis objects
sigma_metric

Calculate Six Sigma Metric for Analytical Performance
summary.deming_regression

Summary method for deming_regression objects
summary.pb_regression

Summary method for pb_regression objects
troponin_cardiac

Cardiac Troponin Method Comparison Dataset
summary.ate_assessment

Summary method for ate_assessment objects
summary.sigma_metric

Summary method for sigma_metric objects
valytics-package

valytics: Statistical Methods for Analytical Method Comparison and Validation
plot.deming_regression

Plot method for deming_regression objects
plot.pb_regression

Plot method for pb_regression objects
glucose_methods

Glucose Method Comparison Dataset
ate_from_bv

Calculate Allowable Total Error from Biological Variation
plot.ba_analysis

Plot method for ba_analysis objects
pb_regression

Passing-Bablok Regression for Method Comparison
ate_assessment

Assess Analytical Performance Against Allowable Total Error
deming_regression

Deming Regression for Method Comparison
ba_analysis

Bland-Altman Analysis for Method Comparison
print.ba_analysis

Print method for ba_analysis objects
print.summary.ba_analysis

Print method for summary.ba_analysis objects
print.pb_regression

Print method for pb_regression objects
print.sigma_metric

Print method for sigma_metric objects
print.deming_regression

Print method for deming_regression objects
reexports

Objects exported from other packages
creatinine_serum

Serum Creatinine Method Comparison Dataset
print.ate_assessment

Print method for ate_assessment objects
summary.ate_specs

Summary method for ate_specs objects
print.ate_specs

Print method for ate_specs objects