Quality — measurement system analysis (gauge R&R)
Gauge R&R for the instrument the capability study depends on — because a Cpk computed with an unfit gauge is a number about the gauge. Typed FlowScript for reliability engineering. Keywords: FMEA, failure mode, RPN, reliability.
Make it your own.
// Gauge R&R for the instrument the capability study depends on —
// because a Cpk computed with an unfit gauge is a number about the gauge.
//
// Crossed study: 3 operators, 10 parts, 3 trials, analysed by ANOVA rather
// than average-and-range, so the operator-by-part interaction is separated
// instead of being absorbed into reproducibility. The three variance
// components are the only measured inputs; every acceptance figure below
// them — %GRR, %P/T, the number of distinct categories — is derived.
//
// Note that the two acceptance criteria disagree in the usual way. Against
// the study variation the gauge is marginal; against the tolerance it is
// better, because the parts in the study spread wider than the tolerance.
// AIAG asks for both, and for the reader to say which one governs.
gauge_study bore_gauge {
title: "Air-gauge R&R — PB-4471 bore, 12.000 mm"
gauge: "Marposs air plug gauge, ring-master zeroed each hour"
// Quoted in micrometres, the unit the variance components below are
// measured in. Stating the same 0.060 mm tolerance in millimetres is
// what the validator refuses: %P/T divides six sigma by the tolerance,
// and a ratio of µm to mm is off by a thousand however sensible each
// half looks on its own line.
resolution: 1 µm
characteristic: "Bore diameter, same characteristic as the capability study"
tolerance: 60 µm
method: "Crossed ANOVA, operator x part with interaction"
operators: 3
parts: 10
trials: 3
measurements: = operators * parts * trials
standard: "AIAG MSA 4th edition, section III-B"
study_date: "2026-03-06"
}
// Components are quoted as standard deviations at 6 sigma study variation,
// which is what the acceptance percentages below assume.
variance_source repeatability {
of: bore_gauge
label: "EV — equipment variation (the gauge repeating itself)"
sigma: 1.86 µm
df: 60
}
variance_source reproducibility {
of: bore_gauge
label: "AV — appraiser variation, operator plus operator-by-part"
sigma: 1.12 µm
df: 2
}
variance_source part_variation {
of: bore_gauge
label: "PV — part-to-part variation across the ten parts"
sigma: 8.94 µm
df: 9
}
gauge_acceptance bore_gauge_verdict {
of: bore_gauge
grr: = sqrt(repeatability.sigma ^ 2 + reproducibility.sigma ^ 2)
total_variation: = sqrt(grr ^ 2 + part_variation.sigma ^ 2)
// Share of the STUDY variation, the AIAG headline figure.
grr_percent_study: = pct(grr, total_variation)
part_percent_study: = pct(part_variation.sigma, total_variation)
// Share of the VARIANCE, which is what actually adds up to 100%.
grr_percent_contribution: = pct(grr ^ 2, total_variation ^ 2)
// Share of the TOLERANCE — the criterion that matters when the gauge is
// used to accept parts rather than to study a process.
precision_to_tolerance: = pct(6 * grr, bore_gauge.tolerance)
// Distinct categories the gauge can tell apart: 5 is the usual floor.
ndc: = floor(1.41 * part_variation.sigma / grr)
verdict: "Conditionally acceptable (10-30% of study variation). Approved for the capability study; not approved for sorting to the same tolerance without a second reading."
}
// Bias against the calibrated master ring, by operator. A forest plot is
// the right figure for this: three intervals, a pooled estimate, and a
// null line at zero bias that the pooled interval visibly clears.
meta gauge_bias {
title: "Bias against the 12.0000 mm master ring"
measure: md
scale: identity
model: random
weight_by: inverse_variance
null_value: 0
k: 3
unit: "µm"
estimate bias_a {
label: "Operator A — day shift, 6 years on the gauge"
measure: md
scale: identity
unit: "µm"
point: 0.9
se: 0.561
lo: = point - 1.96 * se
hi: = point + 1.96 * se
level: 0.95
n: 30
}
estimate bias_b {
label: "Operator B — night shift"
measure: md
scale: identity
unit: "µm"
point: 1.9
se: 0.561
lo: = point - 1.96 * se
hi: = point + 1.96 * se
level: 0.95
n: 30
}
estimate bias_c {
label: "Operator C — relief, trained 2026-01"
measure: md
scale: identity
unit: "µm"
point: 1.1
se: 0.561
lo: = point - 1.96 * se
hi: = point + 1.96 * se
level: 0.95
n: 30
}
}
cite aiag_msa {
key: "aiag-msa-4"
title: "Measurement Systems Analysis Reference Manual, 4th edition"
authors: "Automotive Industry Action Group"
publisher: "AIAG"
year: 2010
type: "guideline"
of: bore_gauge
}
note bias_action {
text: "Pooled bias is about 1.3 µm and its interval excludes zero, so the gauge reads high by more than its own resolution. The master ring is scheduled for recalibration before the next capability run; until then subtract nothing — a known bias corrected by hand is a second measurement system."
anchor: gauge_bias
}
view bias: forest(gauge_bias)
caption gauge_caption {
of: bias
title: "Operator bias against the master ring"
text: "Mean bias per operator with 95% confidence intervals and the inverse-variance pooled estimate. Positive values read larger than the master."
statistics: "Intervals are 95% normal intervals on 30 readings per operator; the diamond is the random-effects pooled bias."
n_statement: "n = 90 readings, 3 operators x 10 parts x 3 trials."
style: journal
}