Skip to content
FlowScript templates

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.

Template previewFlowScript
Bias against the 12.0000 mm master ringFigure: Bias against the 12.0000 mm master ring. Forest plot. Horizontal axis: MD (95% CI) (µm), linear scale, from -1.28723 to 4.08723. Vertical axis: Study, 3 categories: Operator A — day shift, 6 years on the gauge, Operator B — night shift, Operator C — relief, trained 2026-01. 3 series. Operator A — day shift, 6 years on the gauge (0.9 µm, interval -0.19954 to 1.99954, n = 30); Operator B — night shift (1.9 µm, interval 0.80046 to 2.99954, n = 30); Operator C — relief, trained 2026-01 (1.1 µm, interval 0.000460205 to 2.19954, n = 30). Observations: n = 90 participants. Uncertainty: 95% confidence intervals. Annotations: line of no effect at 0 at 0 (reference line). Not stated in the figure data: units, effect. Inverse-variance pooling of 3 study-level estimates on the measurement scale. Fixed effect: Cochrane Handbook §10.3.1. Random effects: DerSimonian–Laird τ² = 0.000, reported with the Wald (normal) interval. Heterogeneity: Cochran's Q, Higgins & Thompson (2002) I² and H, τ² interval by Q-profile (Viechtbauer 2007). Prediction interval: Higgins, Thompson & Spiegelhalter (2009) on 1 df. Pooled random-effects estimate 1.3 (95% CI 0.7 to 1.9), P < 0.001. Heterogeneity: τ² = 0.00 (DL), I² = 0%, Q = 1.78 on 2 df, P = 0.41. Prediction interval -2.815 to 5.415 on 1 degrees of freedom: where a new study is expected to fall, which is not the interval of the average effect. Operator A — day shift, 6 years on the gauge: 0.9 µm (−0.2 to 2.0), weight 33.3%. Operator B — night shift: 1.9 µm (0.8 to 3.0), weight 33.3%. Operator C — relief, trained 2026-01: 1.1 µm (0.0 to 2.2), weight 33.3%.Bias against the 12.0000 mm master ringno effect (0)no effect (0)Operator A — day shift, 6 years on the gaugeOperator A — day shift, 6 years on the gauge: 0.9 µm (−0.2 to 2.0) (95% confidence interval)Operator A — day shift, 6 years on the gauge — 33.3% of the pooled weight; the marker's AREA is proportional to it0.9 µm (−0.2 to 2.0)33.3%Operator B — night shiftOperator B — night shift: 1.9 µm (0.8 to 3.0) (95% confidence interval)Operator B — night shift — 33.3% of the pooled weight; the marker's AREA is proportional to it1.9 µm (0.8 to 3.0)33.3%Operator C — relief, trained 2026-01Operator C — relief, trained 2026-01: 1.1 µm (0.0 to 2.2) (95% confidence interval)Operator C — relief, trained 2026-01 — 33.3% of the pooled weight; the marker's AREA is proportional to it1.1 µm (0.0 to 2.2)33.3%Random effects (k = 3)Random effects (k = 3): 1.3 µm (0.7 to 1.9)1.3 µm (0.7 to 1.9)100.0%95% prediction interval95% prediction interval: 1.3 µm (−2.8 to 5.4) — where a NEW study is expected to fall, not the interval of the average effectInterval continues beyond the axisInterval continues beyond the axis1.3 µm (−2.8 to 5.4)StudyMD (95% CI)Weight−0.500.51.52.53.5MD (95% CI, µm)Heterogeneity: τ² = 0.00 (DL), I² = 0%, Q = 1.78 on 2 df, P = 0.41Test for overall effect: z = 4.01, P < 0.001τ² 95% interval (Q-profile): 0.00 to 10.7Study estimate — marker AREA ∝ weightStudy estimate — marker AREA ∝ weightPooled random-effects estimate (95% CI)95% prediction interval — where a NEW study fallsInverse-variance pooling of 3 study-level estimates on the measurement scale. Fixed effect: Cochrane Handbook §10.3.1. Random effects: DerSimonian–Lairdτ² = 0.000, reported with the Wald (normal) interval. Heterogeneity: Cochran's Q, Higgins & Thompson (2002) I² and H, τ² interval by Q-profile (Viechtbauer2007). Prediction interval: Higgins, Thompson & Spiegelhalter (2009) on 1 df.Marker area is proportional to the study's random-effects weight, not its side length: side = maxSide·√(w/wₘₐₓ), so a study with half the weight has half theink.The diamond is the confidence interval of the AVERAGE effect. The dashed rule is the prediction interval — where a new study is expected to fall. They aredifferent questions and, with real heterogeneity, different answers.1 interval(s) run beyond the axis and carry an arrowhead at the clipped end; the printed numbers are the full interval.τ² was truncated at zero (the moment/score solution was negative). That is the standard rule, but τ² = 0 does not demonstrate homogeneity — with few studiesthe estimator is simply unable to see it.With 3 studies the Wald random-effects interval reported here (τ² by DerSimonian–Laird) is anticonservative. The Hartung–Knapp–Sidik–Jonkman interval on 2df is the honest width and is not the one reported: it is 1.00× the Wald standard error, -0.0936 to 2.69.The Hartung–Knapp standard error was floored at the Wald standard error by the Röver (2015) ad hoc rule: the studies agree so closely that the uncorrectedHKSJ interval would have been NARROWER than the conventional one.

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
}