第四章:数据采集与准备:如何抽样?样本量要求、数据清洗与异常值处理

各位工程师朋友,咱们今天聊聊CPK计算前最容易被忽视、但恰恰最要命的一步——数据采集与准备。

说实话,我见过太多人上来就把数据往Minitab里一丢,算出个CPK值就交差了。结果呢?过程明明稳定,CPK却低得离谱;或者过程已经失控了,CPK反而很好看。问题出在哪?十有八九是数据本身有问题。

数据采集,说白了就是“垃圾进,垃圾出”。你采集的数据质量不行,后面算出来的CPK就是自欺欺人。今天我就把我在产线上摸爬滚打多年的经验,掰开了揉碎了讲给你听。

4.1 抽样策略:不是随便抓几个数据就行

先问大家一个问题:你准备从生产线上取多少个数据?取哪些数据?

我刚开始做质量工程师那会儿,觉得抽样嘛,简单。拿个游标卡尺,去产线上量20个零件就完事了。结果被老工程师骂了一顿——你取的这20个零件,全是同一个操作工、同一台机器、同一个时间段做的,能代表整个生产过程吗?

所以,抽样策略的核心就一句话:样本要能代表总体

4.1.1 随机抽样 vs 分层抽样

咱们常用的抽样方式有两种:

  • 简单随机抽样:每个产品被选中的概率相等。适合过程稳定、没有明显分层因素的情况。
  • 分层抽样:先按班次、设备、操作员等分层,再从每层中随机抽样。我建议你优先用这个,尤其是多机台、多班次的生产线。

重要提醒:千万不要只抽“好”的零件,也不要只抽“坏”的零件。我曾经有个项目,操作工为了数据好看,专门挑合格品给我测。结果CPK算出来1.67,实际过程能力连1.0都不到。后来我要求自己到产线上随机取样,才发现了问题。

4.1.2 子组抽样:时间顺序很重要

CPK计算通常需要按子组(Subgroup)来组织数据。子组怎么抽?

  • 合理子组原则:每个子组内的数据,应该是在尽可能短的时间内、相同的条件下采集的。这样能最大程度反映短期的过程变异。
  • 子组间的间隔:子组之间要有足够的时间间隔,才能捕捉到过程的长期变化。

举个例子:你每小时取5个零件作为一个子组,连续取20个子组。这样,子组内的变异是“短期的”,子组间的变异是“长期的”。CPK算出来,才能真实反映过程能力。

4.2 样本量要求:到底取多少数据才够?

这个问题,几乎每次培训都有人问。我的回答是:没有绝对的标准,但有实用的经验法则

4.2.1 最少样本量:25个子组

按照SPC(统计过程控制)的惯例,计算CPK至少需要25个子组,每个子组至少3-5个数据。也就是说,总样本量至少75-125个。

为什么是25?因为25个子组能比较稳定地估计出过程的均值和标准差。少于25个,CPK的置信区间会非常宽,算出来也没太大意义。

应用场景 建议子组数 每个子组样本量 总样本量
初步评估 20-25 3-5 60-125
正式验证 25-30 5-10 125-300
高精度要求 30-50 5-10 150-500

我的经验:如果条件允许,我一般取30个子组,每个子组5个数据,总共150个。这个量级,既不会让产线觉得取样太频繁,又能保证CPK的可靠性。你想想看,150个数据,做一次正态性检验、异常值排查,工作量也还能接受。

4.2.2 样本量不足怎么办?

有时候产线刚启动,或者试产阶段,确实拿不到那么多数据。怎么办?

  • 方法一:用移动极差法(I-MR Chart)先做初步评估,但CPK的置信区间要标注清楚。
  • 方法二:如果只有20-30个数据,可以用Bootstrap法(自助法)来估计CPK的分布范围。这个在Minitab和Python里都能做。

但说实话,样本量不足时算出来的CPK,我一般只用来做“方向性参考”,不会作为放行依据。你想想看,就20个数据,万一有一个异常值,CPK能差出去0.3-0.5,你敢信吗?

4.3 数据清洗:别让脏数据毁了你的CPK

数据采集回来了,别急着算。先做数据清洗。这一步,我建议你养成习惯,每次必做。

4.3.1 缺失值处理

产线上偶尔会有漏测、仪器故障导致数据缺失。怎么处理?

  • 如果缺失比例小于5%:直接删除该行数据。但要注意,删除后子组大小会变化,需要重新计算子组均值。
  • 如果缺失比例在5%-20%:可以用该子组的均值或中位数填充。我个人习惯用中位数,因为它对异常值不敏感。
  • 如果缺失比例超过20%:建议重新采集数据。缺失太多,说明数据采集过程本身就有问题。

4.3.2 重复值检查

这个坑我踩过。有一次做项目,发现CPK异常高,怎么查都查不出原因。后来发现,操作工把同一个零件测了5次,当成5个不同的数据录进去了。你想想看,5个一模一样的数据,标准差直接变成0,CPK当然高得离谱。

所以,数据清洗时一定要检查重复值。如果发现完全相同的测量值,尤其是连续出现,要核实是否重复录入。

4.4 异常值处理:该不该剔除?

异常值,是CPK计算中最让人头疼的问题。处理不好,CPK要么虚高,要么虚低。

4.4.1 如何识别异常值?

常用的方法有:

  • 箱线图法(IQR法):数据超出Q1-1.5×IQR或Q3+1.5×IQR,视为异常值。
  • Z-score法:Z-score绝对值大于3,视为异常值。
  • Grubbs检验:适用于正态分布数据的异常值检验,一次只能检测一个异常值。

我个人最常用的是箱线图法,简单直观,而且不要求数据严格正态。你可以在Minitab或Python里快速画出箱线图,一眼就能看出哪些点不对劲。

4.4.2 异常值处理原则:先调查,后处理

发现异常值后,不要急着剔除。先问三个问题:

  1. 这个异常值有物理原因吗?比如刀具磨损、材料批次变化、操作失误。如果有,记录原因,然后剔除。
  2. 这个异常值是测量错误吗?比如仪器故障、读数错误。如果是,直接剔除,并重新测量。
  3. 这个异常值找不到原因?那就先保留,用稳健统计方法(如中位数、MAD)重新计算CPK,看看影响有多大。

我曾经犯过的错:有一次,我发现一个数据点明显偏离,想都没想就剔除了。结果CPK从1.2变成了1.5,客户审核时发现了问题——那个异常值其实是过程开始出现漂移的信号。剔除后,我们错过了预警,后来产线出了批量不良。从那以后,我给自己定了个规矩:异常值必须追溯原始记录,确认原因后才能处理。

4.4.3 异常值剔除后的CPK计算

如果确实需要剔除异常值,要注意:

  • 剔除比例不要超过5%。超过5%说明过程本身不稳定,或者数据采集有问题。
  • 剔除后要重新计算子组均值和极差。不能直接用原来的子组统计量。
  • 在报告中注明异常值处理情况。包括:异常值数量、剔除原因、对CPK的影响。

4.5 本章知识体系总览

下面这张图,是我自己总结的数据采集与准备的核心流程。你照着这个步骤走,基本不会出大问题。

数据采集与准备核心流程 ① 抽样策略 随机/分层/子组 ② 样本量要求 ≥25子组,≥125数据 ③ 数据清洗 缺失值/重复值处理 ④ 异常值处理 识别→调查→处理 ⑤ 数据验证 正态性/独立性检验 ⑥ CPK计算 输出可靠CPK值 反馈循环:数据异常时返回步骤①重新评估 关键要点: • 抽样必须代表总体,避免人为筛选 • 样本量不足时,CPK置信区间会非常宽 • 异常值处理原则:先调查原因,再决定是否剔除

好了,数据采集与准备这部分就讲到这里。记住一句话:CPK的精度,取决于你数据的质量。抽样策略、样本量、数据清洗、异常值处理,每一步都马虎不得。下一章,咱们聊聊正态性检验——为什么CPK计算前必须先做这个检验?到时候我会分享一个我踩过的坑,保证让你印象深刻。


公众号:蓝海资料掘金营,微信deep3321