knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 6, fig.height = 4, fig.align = "center" )
A fundamental question in laboratory medicine is: "How good does my analytical method need to be?" The answer depends on the intended clinical use. A method that is acceptable for population screening may be inadequate for monitoring individual patients.
This vignette introduces the biological variation model for setting analytical performance specifications, implemented in the valytics package through three functions:
- ate_from_bv(): Calculate specifications from biological variation data
- sigma_metric(): Quantify performance using the Six Sigma metric
- ate_assessment(): Evaluate observed performance against specifications
library(valytics)
Every measurand (analyte) exhibits natural variation even in healthy individuals. This variation has two components: - Within-subject variation (CV~I~): Day-to-day fluctuation within an individual - Between-subject variation (CV~G~): Differences between individuals in a population The biological variation model, developed by Fraser, Petersen, and colleagues, uses these inherent variations to derive meaningful analytical performance goals. The logic is straightforward: analytical error should be small enough that it does not significantly increase the total variation observed in test results.
At the desirable performance level, the formulas are:
Allowable Imprecision:
$$CV_A \leq 0.50 \times CV_I$$
Allowable Bias:
$$Bias \leq 0.25 \times \sqrt{CV_I^2 + CV_G^2}$$
Total Allowable Error:
$$TEa \leq k \times CV_A + Bias$$
Where k is a coverage factor (typically 1.65 for ~95% of results).
Three performance tiers are defined, each with different multipliers:
| Level | Imprecision | Bias | Stringency | |-------|-------------|------|------------| | Optimal | 0.25 × CV~I~ | 0.125 × √(CV~I~² + CV~G~²) | Most stringent | | Desirable | 0.50 × CV~I~ | 0.25 × √(CV~I~² + CV~G~²) | Standard target | | Minimum | 0.75 × CV~I~ | 0.375 × √(CV~I~² + CV~G~²) | Least stringent |
The ate_from_bv() function calculates all three specifications from biological variation data:
# Example: Glucose # CV_I = 5.6%, CV_G = 7.5% (illustrative values) ate_glucose <- ate_from_bv(cvi = 5.6, cvg = 7.5) ate_glucose
The summary() method shows all three performance tiers:
summary(ate_glucose)
You can calculate specifications for any tier:
# Optimal (most stringent) ate_optimal <- ate_from_bv(cvi = 5.6, cvg = 7.5, level = "optimal") ate_optimal$specifications$tea # Minimum (least stringent) ate_minimum <- ate_from_bv(cvi = 5.6, cvg = 7.5, level = "minimum") ate_minimum$specifications$tea
If only within-subject variation is available, imprecision goals can still be calculated:
ate_cv_only <- ate_from_bv(cvi = 5.6) ate_cv_only
The sigma metric provides a standardized way to express method quality. It answers: "How many standard deviations of analytical error fit between my observed performance and the allowable limit?" $$\sigma = \frac{TEa - |Bias|}{CV}$$
Higher sigma values indicate better performance:
| Sigma | Category | Defects per Million | |-------|----------|---------------------| | ≥ 6 | World Class | ~3.4 | | ≥ 5 | Excellent | ~230 | | ≥ 4 | Good | ~6,200 | | ≥ 3 | Marginal | ~66,800 | | ≥ 2 | Poor | ~308,500 | | < 2 | Unacceptable | > 690,000 |
# Assume observed: bias = 1.5%, CV = 2.5% # Using TEa from biological variation sm <- sigma_metric( bias = 1.5, cv = 2.5, tea = ate_glucose$specifications$tea ) sm
summary(sm)
In clinical laboratories:
The ate_assessment() function evaluates observed performance against specifications:
assess <- ate_assessment( bias = 1.5, cv = 2.5, tea = ate_glucose$specifications$tea ) assess
When you have specifications for all components:
assess_full <- ate_assessment( bias = 1.5, cv = 2.5, tea = ate_glucose$specifications$tea, allowable_bias = ate_glucose$specifications$allowable_bias, allowable_cv = ate_glucose$specifications$allowable_cv ) summary(assess_full)
# A method with poor performance assess_poor <- ate_assessment( bias = 4.0, cv = 5.0, tea = ate_glucose$specifications$tea, allowable_bias = ate_glucose$specifications$allowable_bias, allowable_cv = ate_glucose$specifications$allowable_cv ) summary(assess_poor)
Here is a typical workflow for evaluating a new glucose method:
# Step 1: Define quality goals from biological variation specs <- ate_from_bv(cvi = 5.6, cvg = 7.5, level = "desirable") cat("Quality Specifications:\n") cat(sprintf(" Allowable CV: %.2f%%\n", specs$specifications$allowable_cv)) cat(sprintf(" Allowable Bias: %.2f%%\n", specs$specifications$allowable_bias)) cat(sprintf(" TEa: %.2f%%\n\n", specs$specifications$tea)) # Step 2: Assume we measured method performance # (In practice, from validation studies) observed_bias <- 1.8 observed_cv <- 2.2 # Step 3: Calculate sigma metric sm <- sigma_metric(observed_bias, observed_cv, specs$specifications$tea) cat(sprintf("Sigma Metric: %.2f (%s)\n\n", sm$sigma, sm$interpretation$category)) # Step 4: Full assessment assessment <- ate_assessment( bias = observed_bias, cv = observed_cv, tea = specs$specifications$tea, allowable_bias = specs$specifications$allowable_bias, allowable_cv = specs$specifications$allowable_cv ) # Step 5: Decision if (assessment$assessment$overall) { cat("DECISION: Method acceptable for clinical use\n") } else { cat("DECISION: Method requires improvement\n") }
The quality of your specifications depends on reliable biological variation estimates.
The EFLM Biological Variation Database is the current authoritative source:
While the biological variation model is widely used, it is not the only approach to setting quality specifications. Other models include:
The ate_assessment() and sigma_metric() functions work with TEa values from any source—simply provide your specification directly rather than calculating from biological variation.
# Using a CLIA-based TEa for glucose (example: ±6 mg/dL or ±10%) # For a sample at 100 mg/dL, 10% = 10 mg/dL sm_clia <- sigma_metric(bias = 2, cv = 3, tea = 10) sm_clia
The biological variation model provides a scientifically grounded approach to setting analytical quality specifications:
ate_from_bv() translates biological variation into actionable specifications sigma_metric() provides a universal quality scale for comparing methods ate_assessment() gives a clear pass/fail evaluation These tools help laboratories make informed decisions about method acceptability while recognizing that the final decision depends on clinical context and regulatory requirements.
Fraser CG, Petersen PH (1993). Desirable standards for laboratory tests if they are to fulfill medical needs. Clinical Chemistry, 39(7):1447-1453.
Ricos C, Alvarez V, Cava F, et al. (1999). Current databases on biological variation: pros, cons and progress. Scandinavian Journal of Clinical and Laboratory Investigation, 59(7):491-500.
Aarsand AK, Fernandez-Calle P, Webster C, et al. (2020). The EFLM Biological Variation Database. https://biologicalvariation.eu/
Westgard JO, Westgard SA (2006). The quality of laboratory testing today: an assessment of sigma metrics for analytic quality using performance data from proficiency testing surveys and the CLIA criteria for acceptable performance. American Journal of Clinical Pathology, 125(3):343-354.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.