Category: Advanced Quality Instruments | Estimated reading time: 10 minutes
QC That Does Not Require Control Materials
All methods discussed previously — Levey-Jennings, Westgard Rules, CUSUM — have one thing in common: they all work with control materials. However, there is one gap that even control materials cannot close: control materials are artificial samples, with matrices (base liquids) that sometimes differ from real patient serum or plasma. This phenomenon is called the matrix effect — there is a possibility that the instrument responds to control materials slightly differently compared to actual patient samples, even when measured on the same instrument at the same time.
This means there are scenarios where the QC control looks perfectly fine (in control), but there is a small problem that only appears when measuring actual patient samples.
Moving Average (MA) is a statistical method that closes this gap — by monitoring patient test results themselves on an ongoing basis, calculating the average of a number of the latest patient results on a rolling basis. This method is classified as post-analytical quality control and functions to detect shifts in test results (drift) after the analytical phase is completed — by utilizing patient results as a quality indicator, rather than for individual diagnosis purposes.
A Brief History
The concept of moving average itself comes from the field of statistics and time series analysis, which has long been used in industry and finance. In the context of the medical laboratory, its approach is much older than one might think: Hoffmann and Waid (1965) first introduced the Average of Normals (AoN) method — a version of moving average that specifically only includes patient results within the normal range in the calculation.
Two decades later, Cembrowski, Chandler, and Westgard (1984) published an in-depth study analyzing the statistical performance of AoN mathematically — determining what factors affect its sensitivity (ratio of population SD to analytical SD, number of data points averaged, control limits, and truncation limits for population selection) — and provided practical guidance for its implementation. This paper is the primary reference for modern AoN practice.
For hematology, there is a special variant called Bull's Algorithm (from Bull et al., 1974) which uses erythrocyte indices (MCV, MCH, MCHC) with a weighted moving average approach and truncation limits to prevent outliers from dominating the calculation.
Reasons for Use
- Increases the sensitivity of quality monitoring beyond traditional quality controls (such as Levey-Jennings).
- Allows for rapid detection of small systematic shifts based on patient results, not control materials.
- Fills gaps in the QC system by monitoring real patient results continuously — including the matrix effect gaps explained above.
Advantages
- Real-time — MA calculates and monitors data as patient results arrive, without waiting for scheduled control runs.
- Does not require additional control materials, making it more efficient and cost-effective.
- Can detect small drifts that are not detected in IQC (internal control based on control materials) — including drifts due to matrix effect.
- Ideal for high-volume tests with stable results (e.g., glucose, electrolytes, hemoglobin).
Disadvantages
- Susceptible to bias if patient data is too variable or not normally distributed.
- Not suitable for tests with a small number of patients or results that vary greatly between patients (e.g., hormones, tumor markers) — the patient population is naturally too heterogeneous to produce a stable baseline.
- Requires initial calibration and the setting of appropriate parameters (MA window size, tolerance limits) for valid results — incorrect parameters can make MA too sensitive (many false alarms) or too blunt (failing to detect real problems).
- Can cause false alarms if not combined with other methods, or if the patient population during a certain period naturally shifts (e.g., a certain outbreak season affecting the distribution of results).
Required Data and Definitions
Data Definition Historical patient results A collection of past test results for a parameter, ideally hundreds (200–500) from the last 1–3 months, used to calculate the baseline. Clinical normal range The upper and lower limits that define a clinically "normal" result for that parameter (e.g., fasting glucose: 70–110 mg/dL) — used as an AoN filter, so that results from patients who are actually ill do not distort the baseline. Baseline Mean The average of historical patient results that have passed the normal range filter — this becomes the "normal" reference point for the laboratory's patient population. Baseline SD The standard deviation of the same historical patient results — measures how spread out those normal patient results are from one another. This is not the SD of the control material (a different concept): the SD here is purely a descriptive statistic of inter-patient variation plus a small contribution from instrument inaccuracy. n (window size) The number of the most recent patient results averaged each time the MA is calculated (generally 10–50, often written as "MA-20" for n=20). Tolerance/control limits The range around the baseline that is still considered reasonable before being deemed a deviation — calculated from the baseline SD and n (explained in the formula section). How to Use: Two Stages
Unlike CUSUM or Levey-Jennings, which can be used immediately as soon as there is control material, MA requires a preparation stage before it can be run daily.
Stage 1 — Setup (done once at the beginning)
- Collect historical patient results for a parameter (e.g., 200–500 results from the last 1–3 months).
- Determine the clinical normal range for that parameter.
- Filter historical results — discard those that are outside the normal range (patients with abnormal conditions).
- Calculate the mean and SD of the results that passed the filter → this becomes the baseline.
- Determine the window size n.
- Calculate the control limits using the formula:
Control Limit = multiplier × (SD_baseline / √n)
The larger the n, the narrower the control limits — because the average of more data is statistically more stable (smoothing effect). This means a large n is more sensitive at detecting small drifts, but also slower to respond to sudden changes, because it takes more new data to "shift" the window average significantly.
Stage 2 — Daily Monitoring (running continuously)
- Every time a new patient result enters for that parameter, first check: is it within the normal range?
- No (e.g., the patient is indeed ill) → skipped, not included in the MA calculation.
- Yes → enters the MA window (the oldest result is automatically pushed out of the window, because this is a rolling average).
- Recalculate the window average each time new data that passes the filter is added.
- Compare the window average against the baseline ± control limits.
- If the window average goes outside the baseline ± control limits → alarm, investigation needed (possible instrument drift, calibration issue, or matrix effect not caught by daily controls).
Ideally, this monitoring stage runs automatically integrated with the LIS (Laboratory Information System) — not calculated manually one by one every time a new result arrives.
Try the Moving Average Calculator
Post-analytical QC monitoring based on patient results — a complement to the Levey-Jennings chart & CUSUM.
Preparation Stage Note
This calculator simulates the daily monitoring stage only. Baseline (mean & SD) should ideally be computed from 200–500 historical patient results filtered to the normal range — see the full preparation guide in the article above.
Control limits are computed as Baseline ± multiplier × (SD/√n).
Only patient results within this range are used in the MA calculation (Average of Normals filter).
Enter patient results in sequence, separated by commas or new lines
Include a few results outside the normal range (e.g. 145 or 6) to see how the AoN filter skips them. The number of normal results must exceed n.
⚠️ Out of Control
Upward drift detected — 4 MA points exceeded control limits, first detected at patient result #23.
Moving Average Chart
Data Details
| Seq | Patient Result | Filter Status | MA (n=20) | MA Status |
|---|---|---|---|---|
| 1 | 92 | Normal — used | — | — |
| 2 | 88 | Normal — used | — | — |
| 3 | 145 | Out of range — skipped | — | — |
| 4 | 97 | Normal — used | — | — |
| 5 | 101 | Normal — used | — | — |
| 6 | 99 | Normal — used | — | — |
| 7 | 94 | Normal — used | — | — |
| 8 | 103 | Normal — used | — | — |
| 9 | 89 | Normal — used | — | — |
| 10 | 96 | Normal — used | — | — |
| 11 | 98 | Normal — used | — | — |
| 12 | 102 | Normal — used | — | — |
| 13 | 6 | Out of range — skipped | — | — |
| 14 | 100 | Normal — used | — | — |
| 15 | 104 | Normal — used | — | — |
| 16 | 99 | Normal — used | — | — |
| 17 | 107 | Normal — used | — | — |
| 18 | 103 | Normal — used | — | — |
| 19 | 108 | Normal — used | — | — |
| 20 | 105 | Normal — used | — | — |
| 21 | 110 | Normal — used | — | — |
| 22 | 106 | Normal — used | 100.05 | OK |
| 23 | 109 | Normal — used | 100.90 | OOC |
| 24 | 112 | Out of range — skipped | — | — |
| 25 | 108 | Normal — used | 101.90 | OOC |
| 26 | 111 | Out of range — skipped | — | — |
| 27 | 113 | Out of range — skipped | — | — |
| 28 | 109 | Normal — used | 102.50 | OOC |
| 29 | 114 | Out of range — skipped | — | — |
| 30 | 110 | Normal — used | 102.95 | OOC |
Italic gray rows = results outside the normal range (skipped / not in the MA window). Red rows = MA points outside control limits (OOC).
Moving Average (Average of Normals / AoN) monitors patient result trends, not control materials — suited for detecting slow systematic drift. Control limit = multiplier × (SD/√n), where SD/√n is the standard error of the mean (SEM). The normal-range filter discards pathological results so they don't shift the average. AoN is most effective when the baseline is computed from 200–500 historical results. Complements Levey-Jennings & CUSUM. References: Cembrowski GS, Carey RN, Westgard JO (Average of Normals), Montgomery DC (Statistical Process Control).
This calculator simulates the Monitoring Stage only — the baseline (mean & SD) is assumed to have been calculated from historical data and filled in manually as initial parameters. The following are the definitions of each input in the calculator:
Input in Calculator Meaning Baseline Mean Average of historical normal patient results (Stage 1 step 4) Baseline SD Standard deviation of historical normal patient results (Stage 1 step 4) n (window size) Number of latest results averaged each time (Stage 1 step 5) Control Limit (× SD/√n) Multiplier that determines the width of the control limit — 2 means a safe range roughly equivalent to "2 SD from the window average", following logic similar to the 2SD rule on conventional control charts Normal lower/upper limit Clinical reference range to filter patient results (Stage 1 step 2) — results outside this range are automatically skipped, following the Average of Normals principle Sequence of patient results Simulation of patient results arriving sequentially (Stage 2) — try inserting several extreme values to see how the AoN filter passes through them without distorting the average The calculator will mark data rows skipped by the filter (because they are outside the normal range), calculate the rolling MA from the data that passes, and signal as soon as the window average goes outside the control limits — complete with graphs and detailed tables per point.
Suitable for Use When
- Tests have high volume and stable results, such as Glucose, Sodium, Potassium, or Hemoglobin.
- The laboratory wants to strengthen the quality system in the post-analytical phase — complementing what has already been maintained by IQC in the analytical phase.
- As an additional layer of QC to detect changes not caught by IQC, including potential matrix effects.
- In computerized or automated laboratories, where calculations can run automatically integrated with the LIS.
Closing
Moving Average is an effective post-analytical QC approach to monitor the stability of laboratory test results on an ongoing basis, by utilizing patient data itself. This method is very useful for detecting small, consistent changes (drift) in analytical systems — including drifts originating from sources not caught by control materials — especially in tests with high volume and results that tend to be stable.
Although its use requires a preparation stage (calculating the baseline from historical data) and careful parameter settings, Moving Average offers an efficient and cost-effective solution to strengthen quality assurance in the post-analytical phase. When integrated with a laboratory information system, this method can run automatically and continuously — becoming an ideal complement to traditional QC systems such as Levey-Jennings and Westgard Rules, rather than a replacement.
