SPC 统计过程控制
能力概览
本 Skill 提供端到端的统计过程控制(SPC)分析能力,覆盖从"过程是否稳定"到"过程是否满足规格"的完整判定链:
- 变量型控制图:Xbar-R(均值-极差,2≤n≤9)、Xbar-S(均值-标准差,n≥10)、I-MR(单值-移动极差,n=1)
- 属性型控制图:P(不良率,样本量可不等)、NP(不良数,样本量恒定)、C(缺陷数,检验面积恒定)、U(单位缺陷数,检验面积可不等)
- 判异检测:Nelson 8 条规则(含 Western Electric 等价表述),主图与副图(R/S/MR)均判定
- 过程能力分析:Cp / Cpk / Pp / Ppk / Cpm / PPM(百万不良率)/ Anderson-Darling 正态性检验
引擎 scripts/spc.py 为纯 Python 标准库实现,零第三方依赖,可随 Skill 在任何装了 Python 3.8+ 的环境直接运行。
触发场景
- 用户要做质量管控、过程稳定性分析、控制图绘制、过程能力评估
- 用户提供了一批过程测量数据(CSV),希望判断是否受控、是否达标
- 咨询交付物需要"控制图 + 判异结论 + 能力指数"的质量分析报告
- 关键词:SPC、控制图、Xbar-R、I-MR、过程能力、Cp/Cpk、判异、良率、缺陷率
数据格式约定
CSV(UTF-8,首行为表头)。脚本自动识别变量型/属性型、宽表/长表;也可用参数显式指定。
变量型 —— 宽表(推荐,每行一个子组)
每行一个子组,数值列即测量值:
S1,S2,S3,S4,S5
9.94,9.93,9.95,10.28,9.95
...
变量型 —— 长表(value + 可选 subgroup)
subgroup,value
1,50.1
2,49.8
...
单值序列(I-MR)可直接用单列 value 的 CSV,或长表每子组仅 1 个值。
属性型 —— 长表
- P/NP:
defects(不良数)+size(样本量,NP 需恒定) - C:
defects(缺陷数计数) - U:
defects(缺陷数)+size(检验单位数,可不等)
subgroup,defects,size
1,5,100
2,3,100
...
控制图选型决策
| 数据类型 | 子组容量 n | 推荐控制图 | |----------|-----------|------------| | 连续测量(变量) | n = 1 | I-MR | | 连续测量(变量) | 2 ≤ n ≤ 9 | Xbar-R | | 连续测量(变量) | n ≥ 10 | Xbar-S | | 不良/合格(计件) | 样本量不等 | P | | 不良/合格(计件) | 样本量恒定 | NP | | 缺陷数(计点) | 检验面积恒定 | C | | 缺陷数(计点) | 检验面积不等 | U |
不确定时传 --chart auto,脚本按数据形态自动选择。
工作流
调用 scripts/spc.py,三个子命令:chart(仅控制图)、capability(仅能力分析)、analyze(控制图+能力+判异,最常用)。
1) 控制图 + 判异
python SKILL_DIR/scripts/spc.py chart \
--input data.csv \
--chart xbar-r \ # auto|xbar-r|xbar-s|i-mr|p|np|c|u
--out ./out --prefix rpt \
--report html # html|md|json|all
变量型长表需补 --value-col value --subgroup-col subgroup;I-MR 单列 CSV 直接 --chart i-mr。
属性型需补 --defects-col defects --size-col size。
2) 过程能力分析(变量型)
python SKILL_DIR/scripts/spc.py capability \
--input data.csv --chart xbar-r \
--usl 11 --lsl 9 --target 10 \ # target 可选
--out ./out --prefix cap
能力指数需规格上下限 --usl / --lsl(必填)。脚本自动用 R̄/d2(或 S̄/c4、MR̄/d2)估计组内标准差。
3) 一键完整分析
python SKILL_DIR/scripts/spc.py analyze \
--input data.csv --chart auto \
--usl 11 --lsl 9 --target 10 \
--out ./out --prefix full --report all
输出说明
每次运行在 --out 目录生成:
{prefix}.html:集成 SVG 控制图 + 判异结论 + 能力表的自包含报告(默认交付物){prefix}.md/{prefix}.json:--report all时附加{prefix}_1.svg、{prefix}_2.svg…:主图、副图、能力直方图(SVG,可直接嵌入文档/网页)- 控制台输出 JSON 摘要:
{status, type, ooc_rules, files}
判异结果分主图(ooc)与副图(ooc_secondary),列出触发的 Nelson 规则编号与对应点序号。
一键演示(客户现场)
Skill 内置 examples/ 演示数据集,无需自备数据即可现场演示。每个示例都带"受控 / 失控"对照,便于向客户讲清核心概念。
| 示例文件 | 控制图 | 演示要点 |
|----------|--------|----------|
| examples/xbar_r_demo.csv | Xbar-R | 含特殊原因(第18子组偏移)→ 失控,讲"判异" |
| examples/xbar_r_clean.csv | Xbar-R | 受控 + 能力达标(规格 9~11),讲"正常基线" |
| examples/cap_low.csv | Xbar-R | 受控但 Cpk<1.33,讲"受控 ≠ 合格" |
| examples/imr_demo.csv | I-MR | 单值序列标准受控对照 |
| examples/p_demo.csv | P | 属性型不良率,第10/20子组偏高 → 判异 |
典型演示命令(投屏即用)
# 将 SKILL_DIR 替换为 Skill 实际安装目录,例如:
# Windows: C:/Users/Administrator/.workbuddy/skills/spc
# macOS/Linux: ~/.workbuddy/skills/spc
SKILL_DIR="C:/Users/Administrator/.workbuddy/skills/spc"
SP="$SKILL_DIR/scripts/spc.py"
EX="$SKILL_DIR/examples"
# 1) 失控演示(最抓眼球):轴承内径 Xbar-R,第18子组异常
python $SP analyze --input $EX/xbar_r_demo.csv --chart auto \
--product "轴承内径" --line "机加线A-3" --analyst "老黄" --date 2026-08-08 \
--out ./demo --prefix demo_ooc --report all
# 2) 受控 + 能力达标:同产品正常基线
python $SP analyze --input $EX/xbar_r_clean.csv --chart auto \
--usl 11 --lsl 9 --target 10 \
--product "轴承内径" --line "机加线A-3" --analyst "老黄" --date 2026-08-08 \
--out ./demo --prefix demo_ok --report all
# 3) 受控≠合格:Cpk 不足(演示核心认知)
python $SP analyze --input $EX/cap_low.csv --chart auto \
--usl 11 --lsl 9 --target 10 \
--product "轴承内径" --line "机加线C" --analyst "老黄" --date 2026-08-08 \
--out ./demo --prefix demo_low --report all
# 4) 属性型 P 图(不良率判异)
python $SP analyze --input $EX/p_demo.csv --chart p \
--defects-col defects --size-col size \
--product "焊接不良" --line "焊装线B" --analyst "老黄" --date 2026-08-08 \
--out ./demo --prefix demo_p --report all
生成的 demo/demo_ooc.html 等即带元信息卡 + 综合结论横幅(稳定性 / 能力双维度)+ 改进建议的投屏级报告,浏览器直接打开即可讲解。
关键说明与边界
- 受控 ≠ 合格:控制图说明"过程稳定",能力指数说明"是否满足规格",二者需联合解读。
- 正态性前提:Cp/Cpk 基于正态假设;若 Anderson-Darling A² ≥ 0.752(α=0.05)提示非正态,结论需谨慎,建议先做数据变换。
- 属性型不做经典能力指数:P/NP/C/U 输出平均质量水平(p̄/c̄/ū)与不良率,不计算 Cp/Cpk。
- 控制限基准:基于当前数据估计;量产后宜用历史数据建立控制限,再监控新数据。
- 详细公式与常数见
references/formulas.md、references/constants.md;判异规则释义见references/we_rules.md。
交付建议(面向咨询场景)
将 analyze 生成的 HTML 报告作为客户交付物主干,配合一段结论性文字:先陈述"过程是否统计受控"(判异结果),再给出"过程能力等级"(Cp/Cpk 与 PPM),最后给出改进建议(如 Cpk<1.33 需降低变异或调整中心)。
微信扫一扫