Food Analysis Lab · W8
← → / Space to change slide · F fullscreen · Tap either side to turn pages
Food Analysis Lab · W8

Class proficiency test and data QC

Interlaboratory Proficiency Testing & Statistical Quality Control
Food Analysis Lab · 4-hour session
Pooled blind-sample results (moisture/ash/protein/fat) · Carbohydrate by difference · Grubbs · ANOVA · z-score · Control chart · Measurement uncertainty · Release decision
Pooled blind samplesGrubbs outlier testOne-way ANOVAz-scoreShewhart control chartGuard-band release decision
Before we start, watch a factory video
Butter measured at 80.3% ± 0.4%,
can this batch be released?

Butter factory line (07:04–08:17, note the milk-fat spec ≥ 80%) ↗

Think first: The measured 80.3% is already above the 80% spec, but this number carries an uncertainty of ±0.4% — the true milk-fat content lies between 79.9% and 80.7% with about 95% confidence (U with k=2). Is “the measured number is above spec” the same as “this batch truly conforms”? At the end of class we will answer this with a rule called the guard band.

Today’s task: Pool the shared blind-sample data that the 5 groups produced in W2–W6 and cross-check one another, just like a proficiency test between testing laboratories.
Optional extra practice: Food Analysis Statistics site ↗ — mini-games on control charts, outliers, the uncertainty puzzle, the release officer, and ANOVA; do them and class will make more sense.

Today’s learning goals

After W8 you should be able to…

  • Pool the 5 groups’ data from W2 (moisture)/W3 (ash)/W5 (protein)/W6 (fat), and calculate carbohydrate by difference
  • Understand why the uncertainty of the difference method is the root sum of squares of the other four — it inherits everyone’s errors
  • Use the Grubbs test to check for outliers within groups and at class level, and know how weak this test is at n=3
  • Use one-way ANOVA to separate repeatability (sr) from reproducibility (sR)
  • Calculate the z-score and classify it into three levels: |z| ≤ 2 / 2 < |z| < 3 / ≥ 3
  • Read the ±2s / ±3s limits of a Shewhart control chart and spot rule violations
  • Build a simple uncertainty budget and make a release decision with the guard band rule
Mini-game ①Random error or systematic error?0 / 8
Sort these 8 phenomena from today’s data into “random error” or “systematic error”.
Introduction to measurement uncertainty

Where does the number after ± come from?

Statistics Ch06–08 ↗

Carbohydrate: by difference

Why does its uncertainty add up everyone’s errors?

Carbohydrate % = 100 − (moisture % + ash % + protein % + fat %)
ucarb = √( umoisture² + uash² + uprotein² + ufat² )
The difference method has no experimental step of its own — it just adds and subtracts other people’s results. For that reason, the errors of moisture, ash, protein, and fat are all carried into it, combined by root sum of squares (uncertainties cannot be added directly). So carbohydrate is always the item with the largest uncertainty in proximate analysis (moisture, ash, protein, fat, carbohydrate) — today you will see it calculated.
Errors get passed down too: This class’s fat uses the direct Soxhlet (unhydrolyzed) result from W6. The 5-group mean is only 21.28%, versus the dairy reference method Röse–Gottlieb value of 25.7% — about 4.4 percentage points lower. The difference method adds this underestimate straight onto carbohydrate, inflating it to about 44% (database: about 37–38%). This is a method bias, not random error — however small Ucarb is, it cannot cover it.
Class data summary

Blind-sample results of the 5 groups (illustrative data)

Group ⇅ Moisture % ⇅ Ash % ⇅ Protein % ⇅ Fat % ⇅ Carb (by diff.) % ⇅

Click a column header to sort. Moisture/ash/fat are each group’s triplicate mean (fat = direct Soxhlet from W6); protein is a single determination per group (n=1) because the W5 digestion block holds only 8 tubes. The high carbohydrate comes from the underestimated fat (error propagation). Illustrative data — not real measurements.

4-hour lab schedule

Pool → Check → Retest → Statistics → Decide

TimeContents
0:00–0:30Explain the pooling rules: long-format input, significant figures, source of the illustrative data (W2/W3/W5/W6)
0:30–1:30Each group uploads its data; Colab compiles the class blind-sample table and runs the Grubbs outlier check
1:30–3:00Groups flagged as outliers or with |z| > 2 redo that item (moisture or ash); the other groups do the ANOVA and uncertainty calculation
3:00–3:40Class discussion: which error sources are largest? Cross-check against the W1–W7 calibration and standardization records
3:40–4:00Release-decision practice: applying the guard band rule
Only moisture or ash is retested: redoing protein (Kjeldahl) and fat (Soxhlet) takes too long to fit in 4 hours —if either of these has a problem, just record it today and leave it for the root-cause discussion; do not redo it on the spot.
Grubbs outlier test

Within group (n=3) too weak vs class level (n=5) can detect it

Within group: G3 moisture triplicate

Values: 2.70, 2.74, 3.30% (★ = suspected outlier)

G = |x−x̄| / s = 1.1526

G_crit(n=3, α=0.05) = 1.1543 (computed from the formula, not looked up in a table)

At n=3, Grubbs almost cannot detect anything: the theoretical upper bound of G is (n−1)/√n = 1.1547 — no matter how extreme the outlier, G can never exceed this number. And G_crit (1.1543) is only 0.0004 below the bound, which means with only 3 replicates, nothing can be judged significant unless the other two values are nearly identical — within a group you must rely on checking the records.
Class level: single protein results of the 5 groups
GroupResult %G value
G125.9300.2982
G226.1700.6390
G326.0300.4402
G424.4701.7751
G526.0000.3976

G_crit(n=5, α=0.05) = 1.715; G4’s G=1.7751 exceeds the critical value, so it is judged an outlier.

G > G_crit → outlier; α=0.05 = upper limit of 5% probability of wrongly flagging a normal value. Statistics Ch05 ↗

What ANOVA asks

Is the between-group difference real, or just shaky hands?

🔁
Repeatability s_r
Spread of repeats by the same person, same instrument, in a short time (within group)
🏫
Reproducibility s_R
Spread that also includes differences between groups/laboratories; s_R≥s_r
➗
F = between-group ÷ within-group
MSB = variance between group means, MSW = variance among replicates within groups; large F → the between-group difference is too large to be explained by repeatability error alone
🎯
p and F_crit
F>F_crit (p<0.05) → significant difference between groups

Statistics Ch16 ↗ Ch17 ↗

One-way ANOVA

Repeatability (sr) vs reproducibility (sR): using ash as an example

sR = √(sr² + sL²)
Within-group variance (F-test denominator, MSW)sr = 0.0259% (repeatability)
Between-group variance (related to the F-test numerator, MSB)sL = 0.0545% (between groups/laboratories)
CombinedsR = 0.0604% (reproducibility)
F = MSB / MSWF = 14.24 (F_crit(0.05,4,10)=3.478, p=0.0004)
F is far above the critical value, p<0.05: the differences among the 5 groups’ ash means cannot be explained by within-group repeatability (sr) alone — there is a real systematic gap between groups (different weighing habits, judgment of crucible constant weight…). This is exactly why reproducibility sR must include the between-group variance, rather than looking only at your own group’s replicates.
z-score

Score each group’s protein result with the z-score

z = (xgroup − xassigned) / σpt
  • xassigned = median (robust assigned value) of the 5 groups’ single results = 26.000%
  • σpt = predefined target standard deviation (fitness-for-purpose: the tolerable spread set in advance for the intended use) = 0.40% (not the contaminated class SD)
  • |z| ≤ 2: satisfactory 2 < |z| < 3: questionable |z| ≥ 3: unsatisfactory
  • G4 has z = -3.83, in the unsatisfactory zone — the same group that the class-level Grubbs test flagged on the previous slide, so the two corroborate each other

Illustrative data. If σ_pt is too large, truly problematic groups get “hidden”; if too small, there are too many false flags — set it with the method’s practical precision in mind.

Mini-game ②Order the steps of evaluating a proficiency test— / 6
Use ▲▼ to arrange the 6 steps of “evaluating a proficiency test (PT)” into the correct order.
How to read a control chart

Measure the same QC sample once in every run

Statistics Ch03 ↗

Shewhart control chart

QC check sample: 12 analytical runs, spot the violations

Control limits use the established baseline (mean=26.0%, s=0.30%, not calculated from these 12 points); run 8 exceeds +3s (13s violation (Westgard rule): a single point beyond the action limit); runs 10 and 11 are two consecutive points beyond −2s on the same side (22s violation) — illustrative data.

Measurement uncertainty budget

Example: protein (Kjeldahl)

Uncertainty sourceRelative standard uncertainty
Weighing0.0115%
Titrant conc.0.3000%
Titration volume0.1155%
Conversion factor 6.380.2715%
Repeatability0.5875%
Combined u_c (RSS)0.7227%
u_c = √(Σ components²) U = k·u_c (k=2)
Combined standard uncertainty u_c = 0.7227% (relative)
Corresponding absolute value u_c(abs) ≈ 0.1879% (at the assigned value 26.000%)
Expanded uncertainty U(k=2) ≈ 0.3758% — this is where the number after ± comes from in a report like 26.0% ± 0.4%.

The standard uncertainty of a rectangular distribution (instrument scale/tolerance) = half-width ÷ √3; components already in standard-deviation form (such as titrant standardization) are used directly.
The repeatability term: each group digested only 1 tube of protein this time (single determination, n=1; see the 8-tube limit in W5), so s_r cannot be estimated from within-group replicates; instead we use 3 replicate determinations (25.95, 26.15, 25.85; illustrative data) that the TA ran on the same milk powder, giving s_r=0.1528%. Because each group reports exactly this one single value, s_r is used directly as the repeatability contribution, with no division by √n (division is only needed when averaging n results; it has nothing to do with the √3 of the rectangular distribution).

Release decision: result ± U vs specification

Back to the opening question: butter 80.3% ± 0.4%, release it?

Butter milk fat: measured result 80.3% ± 0.4% (U, k=2)79.079.580.080.581.0Lower spec limit 80.0%Result 80.3%Worst case 79.9%Worst case (result − U) < lower spec limit → cannot rule out that it is actually below spec
Guard band rule (used in this course): for an item that must be “≥ spec”, release only when the worst case (result − U) ≥ spec; when the best case (result + U) < spec, do not release; in all other cases (the spec falls inside the result ± U interval) the verdict is cannot decide — retest or negotiate. In this example the worst case 79.90% < spec 80.0%, so even though the point estimate 80.3% is already > spec, the verdict must still be cannot decide — this is exactly why measurement uncertainty matters: it means “conforming” no longer rests on a single number.
How to judge an upper spec limit (≤)

The direction flips

Spec typeReleaseDo not releaseCannot decide
Lower limit ≥LResult−U ≥ LResult+U < LOtherwise
Upper limit ≤HResult+U ≤ HResult−U > HOtherwise
Example: potato chips sodium ≤700 mg/100g, measured 690±20 → worst case 710 > 700, best case 670 ≤ 700 → cannot decide

Statistics Ch08 conformity assessment ↗

Mini-game ③This batch: release / do not release / cannot decide?0 / 6
Using the “spec vs result ± U (guard band)” rule, sort the 6 cases into the correct verdict.
Mini-game ④Statistics quick quiz0 / 5
Mini-game ⑤Decision challenge: reading QC results0 / 5
Mini-game ⑥Calculation challenge: if fat uses the reference method, what does carbohydrate become?Unanswered
Group G1: moisture 2.78%, ash 5.98%, protein 25.93%. For fat, do not use direct Soxhlet; use the dairy reference method Röse–Gottlieb value of 25.7%. Calculate carbohydrate % (by difference) and compare it with G1’s carbohydrate in the summary table.
%
Error traceback map

Which week does today’s anomaly trace back to?

AnomalyGo back and check
G3 moisture outlierW2 constant weight / desiccator cooling, W1 balance
G4 protein too lowW4/W5 HCl standardization (the label concentration was used)
Class-wide fat too lowW6 no hydrolysis (method bias)
Between-group ash differencesW3 crucible constant weight, W1 balance
Carbohydrate too highFat underestimate propagated through the difference method
Homework

Colab NB08

📊
Complete proximate report table
Compile your group’s moisture/ash/protein/fat/carbohydrate, each with its standard uncertainty and expanded uncertainty U
🎯
Your group’s z-score
Calculate your group’s z-score for protein (or an assigned item) and decide which level it falls in
🔍
Root-cause analysis
If your group is flagged by Grubbs or |z|>2, cross-check the W1–W7 calibration/standardization records to find the most likely error source
🚦
Release-decision practice
Pick any one result, apply the guard band rule to decide release / do not release / cannot decide, and explain your reasoning

Colab NB08: Open NB08 in Colab ↗ · Beginner (no coding): Excel practice workbook EX08 ⬇, Orange workflow OR08 ↗. This report is also a warm-up for the W9 midterm practical — the midterm will directly test your ability to compile data, catch outliers, and calculate uncertainty.

Self-check

By the end of today you should be able to…

Tap to tick — make sure you really can do it.

中文