GR&R报告的技术难点不只在ANOVA,也在数据模型、输出口径和决策结论是否一致。本文用一组可复算数据演示从结果表到客户报告的过程。示例为C级重构数据,只用于教学,不是任何企业的实测结论。

1. 先固定输入元数据
建议原始表至少包含以下字段:
part_id, operator_id, trial_id, value,
part_revision, characteristic, lsl, usl,
gauge_id, calibration_due, method, environment
分析报告还要记录:交叉或嵌套设计、零件与操作者数量、重复次数、随机化方式、是否盲测、ANOVA或均值极差法、研究变异倍数(本文6×SD)、是否保留零件×操作者交互项。
交叉设计要求每名操作者测量每个零件;破坏性测试或零件无法共享时,不能机械套用同一模型,应评估嵌套或其他适当研究设计。
2. 从方差分量计算四类指标
本例设定:σEV=0.006 mm,σAV=0.008 mm,σPart=0.050 mm,公差宽度T=0.50 mm。
σGRR = sqrt(σEV² + σAV²) = 0.010 mm
σTotal = sqrt(σGRR² + σPart²) = 0.05099 mm
不同输出的分母并不相同:
| 输出 | 计算口径 | 本例 |
|---|---|---|
| %Study Variation | σGRR/σTotal | 19.61% |
| %Tolerance | 6σGRR/T | 12.00% |
| %Contribution | σGRR²/σTotal² | 3.85% |
| ndc | floor(1.41σPart/σGRR) | 7 |
因此,报告中只写"GR&R=12%"是不完整的。必须写清列名和分母;也不能把%Contribution的3.85%与%SV的19.61%相互替换。
3. Python复核代码
import math
sigma_ev = 0.006
sigma_av = 0.008
sigma_part = 0.050
tolerance = 20.25 - 19.75
sigma_grr = math.hypot(sigma_ev, sigma_av)
sigma_total = math.hypot(sigma_grr, sigma_part)
pct_sv = sigma_grr / sigma_total * 100
pct_tol = 6 * sigma_grr / tolerance * 100
pct_contribution = sigma_grr**2 / sigma_total**2 * 100
ndc = math.floor(1.41 * sigma_part / sigma_grr)
av_share = sigma_av**2 / sigma_grr**2 * 100
print(f"sigma_grr={sigma_grr:.6f} mm")
print(f"sigma_total={sigma_total:.6f} mm")
print(f"%SV={pct_sv:.2f}%")
print(f"%Tolerance={pct_tol:.2f}%")
print(f"%Contribution={pct_contribution:.2f}%")
print(f"ndc={ndc}")
print(f"AV variance share={av_share:.0f}%")
输出应为:
sigma_grr=0.010000 mm
sigma_total=0.050990 mm
%SV=19.61%
%Tolerance=12.00%
%Contribution=3.85%
ndc=7
AV variance share=64%
这段代码只复核报告中的比率,不替代完整ANOVA,也不验证原始90个读数是否满足研究设计要求。正式项目应从原始数据重新估计方差分量,并核对软件模型设置。
4. 如何把结果写成客户结论
%SV=19.61%、%公差=12.00%都处于10%---30%的条件评估区;ndc=7达到常用判据。正确输出不是简单的布尔值pass=True,而是带有用途、风险和批准条件的决策记录:
study_scope: 本零件、本特性、本量具、本测量方法
sv_percent: 19.61
tolerance_percent: 12.00
ndc: 7
decision: conditional_acceptance_review
reason:
- sv_and_tolerance_in_conditional_zone
- ndc_meets_common_reference
required_controls:
- approved_review_for_values_near_spec_limits
- sop_update_and_operator_practical_check
- repeat_original_crossed_design
approval:
owner: quality_manager
status: pending
review_due: 2026-11-06
如果用于SPC或能力研究,应重点解释基于研究/过程变异的指标与ndc;如果用于产品检验和放行,还要解释%公差以及规格限附近的误判风险。具体接受线优先采用客户特殊要求和企业程序。
5. 用方差分量驱动整改,而不是统一换设备
本例AV方差占测量系统方差64%,优先检查测量点定义、装夹、读数规则和人员差异。EV占主导时再优先检查量具分辨力、磨损、夹持、测量力和环境。零件×操作者交互明显时,应检查不同人员处理不同零件的方式。
措施记录至少包含:root_cause_evidence、action、owner、due_date、temporary_control、verification_design、closure_criteria。复验应尽量沿用原研究设计,保证前后可比。
6. 客户报告的最小数据契约
[范围] 零件/特性/图纸版本/量具/用途
[设计] 交叉或嵌套/样本/人员/重复/取样/随机化/盲测
[证据] 原始数据索引/校准/环境/软件与模型
[结果] %SV或%过程/%公差/%贡献/ndc/6×SD
[结论] 接受或条件接受评估或不接受/适用边界
[行动] 主导变异/措施/责任/期限/临时控制
[关闭] 复验/目标/证据/授权人/日期
常见问题:复算与审批两问
问:只有方差分量,运行这段代码就能证明原研究合格吗? 不能。代码只复核派生比率,不能验证90个原始读数、模型设定、交互项、取样与执行过程;正式报告仍需从原始数据重算并审核研究设计。
问:复验时换一批差异更大的零件,ndc提高后能直接关闭吗? 不能只看ndc变化。零件范围改变会影响研究变异与ndc,复验应尽量沿用原设计;确需改变时,要说明理由并重新评估前后可比性和全部指标。
最后提醒:GR&R主要评价重复性和再现性,不替代校准,也不能单独证明偏倚、线性和稳定性。数据算对只是第一层,研究设计可信、指标口径一致、结论不越界、整改可关闭,才是一份完整的技术报告。