第四章:数据采集与准备:如何抽样?样本量要求、数据清洗与异常值处理
各位工程师朋友,咱们今天聊聊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 异常值处理原则:先调查,后处理
发现异常值后,不要急着剔除。先问三个问题:
- 这个异常值有物理原因吗?比如刀具磨损、材料批次变化、操作失误。如果有,记录原因,然后剔除。
- 这个异常值是测量错误吗?比如仪器故障、读数错误。如果是,直接剔除,并重新测量。
- 这个异常值找不到原因?那就先保留,用稳健统计方法(如中位数、MAD)重新计算CPK,看看影响有多大。
我曾经犯过的错:有一次,我发现一个数据点明显偏离,想都没想就剔除了。结果CPK从1.2变成了1.5,客户审核时发现了问题——那个异常值其实是过程开始出现漂移的信号。剔除后,我们错过了预警,后来产线出了批量不良。从那以后,我给自己定了个规矩:异常值必须追溯原始记录,确认原因后才能处理。
4.4.3 异常值剔除后的CPK计算
如果确实需要剔除异常值,要注意:
- 剔除比例不要超过5%。超过5%说明过程本身不稳定,或者数据采集有问题。
- 剔除后要重新计算子组均值和极差。不能直接用原来的子组统计量。
- 在报告中注明异常值处理情况。包括:异常值数量、剔除原因、对CPK的影响。
4.5 本章知识体系总览
下面这张图,是我自己总结的数据采集与准备的核心流程。你照着这个步骤走,基本不会出大问题。
好了,数据采集与准备这部分就讲到这里。记住一句话:CPK的精度,取决于你数据的质量。抽样策略、样本量、数据清洗、异常值处理,每一步都马虎不得。下一章,咱们聊聊正态性检验——为什么CPK计算前必须先做这个检验?到时候我会分享一个我踩过的坑,保证让你印象深刻。
公众号:蓝海资料掘金营,微信deep3321