2. 常见静态阈值方法的局限性:固定上下限、移动平均、百分比法
做质控这些年,我见过最多的坑,就是老老实实用静态阈值。你设定一个固定值,前三个月还挺好,第四个月开始天天报警。为什么?因为数据不走寻常路。机器会磨损,原料批次会变,环境温湿度会波动。你用死线去卡活数据,它不报警才怪。
这章我就帮你拆一拆,三种最常见的静态阈值方法,到底哪里不好使。你对照自己的业务,看看中了几枪。
2.1 固定上下限法(硬阈值)
这是最原始的做法。设定上界 UCL、下界 LCL,数据一出界就报警。
# 固定上下限示例
UCL = 105.0
LCL = 95.0
if value > UCL or value < LCL:
print("报警:超出固定阈值")
我见过一个产线,压力监控设了上下限,结果冬天供暖后压力整体上漂,固定上限没调,一整个月都在误报。后来干脆把报警给屏蔽了——那才是最可怕的事。
固定上下限还有个大问题:你很难找到完美的边界。设宽了漏报,设窄了虚警。我曾在一个半导体项目中,根据三天调试数据定了阈值,结果换了一个批次材料,虚警率窜到 40%。
说白了,固定上下限只适合那些物理约束明确的场合——比如温度绝对不能超过某个熔点,或者压力不能超过容器耐受值。对普通的过程控制,它就是个睁眼瞎。
2.2 移动平均法(滑动窗口均值)
很多人觉得固定阈值不行,那就做个移动平均吧,抵消短时波动。想法没错,但移动平均有它的致命伤。
# 移动平均示例
window = 5
rolling_mean = data.rolling(window).mean()
if abs(rolling_mean[-1] - rolling_mean[-2]) > limit:
print("报警:滑动均值变化过大")
移动平均的问题出在“滞后”上。窗口越大,曲线越平滑,但信号越晚才到报警。我记得有一次排查 PCB 厚度数据,窗口设了 20 个点,等均值线跨过阈值,不合格的产品已经堆了 80 个。
- 滞后性问题:窗口宽了,报警延迟;窗口窄了,噪声过滤不掉。
- 突变弱化:单个剧烈异常被周围正常点稀释,平均值看着还行,但其实过程已经坏了。
- 边界丢失:窗口头部的数据只有短暂的移动平均,初期检测基本是空的。
- 周期数据失效:数据有日周期或班次周期时,移动平均把周期性当噪声平滑掉,你根本看不到规律。
2.3 百分比法(固定倍率警戒线)
另一种省事的做法:取历史均值的 ±5% 作为阈值,或者设定当前值超出均值 30% 就报警。这个做法,我愿称之为“最伪的量化管理”。
# 百分比法示例
mean_val = 100.0
threshold = 0.05 # ±5%
upper = mean_val * (1 + threshold)
lower = mean_val * (1 - threshold)
if value > upper or value < lower:
print("报警:超出百分比阈值")
百分比法有一个根本缺陷——它不知道你的数据本来有多散。对于一个标准差只有 1 的过程,±5% 的窗口已经很大了,等数据跑出去,已经是严重事故;但一个标准差 10 的过程,±5% 根本不够用,天天误报。你调一个百分比,对两种场景不可能都合适。
我曾经在一条电子元件生产线上踩过这个坑。老板说:设定 ±10% 当阈值。结果一个型号的电阻测量值本来就很集中,±10% 的窗口几乎从不报警;换了另一个型号,测量值散布很大,±10% 天天报警。为什么?因为百分比不知道“变异系数”是什么概念。
- 无视数据真实分布,用相对比例代替统计特性。
- 对零点和量纲敏感,换算单位后比例数值不变,但业务含义变了。
- 无法区分正常波动和异常漂移——百分比只关心中间值的位置,不关心散布。
更让我难受的是,很多团队用百分比法给 KPI 定指标,比如“响应时间不能超过均值的 20%”。你想想看,当均值自己也在漂的时候,这个 20% 什么也拦不住。
2.4 三类方法局限性的横向对比
| 对比维度 | 固定上下限法 | 移动平均法 | 百分比法 |
|---|---|---|---|
| 均值漂移检测 | 不敏感 | 有滞后 | 完全失效 |
| 散布变化检测 | 不敏感 | 不敏感 | 不敏感 |
| 应对周期性数据 | 不适用 | 破坏周期 | 不适用 |
| 初期数据需求 | 需要历史极限 | 窗口积累后才工作 | 需要稳定均值 |
| 对噪声容忍度 | 极低 | 中等 | 极低 |
| 主观调参风险 | 高 | 中 | 极高 |
这张表你仔细瞄一眼。你会发现,三种方法有一个共同的死穴——它们都关注“位置”而不关注“散布”。数据散开了,均值没变,三种方法一个也发现不了异常。
看完这些局限性,你就明白了——静态阈值不是不能用,但它的使用条件非常苛刻。数据必须稳定、周期不允许有、散布不能变、均值不能漂……这些条件在真实产线上几乎凑不齐。
我个人习惯是,只有当过程处于认证后的初期稳定期(而且我确认过没有季节性波动)才敢用静态阈值,并且每周至少检查一次是否需要调整参数。即便如此,风险仍然在。
那怎么办?别急。阈值设定一定要跟着数据的节奏走。后面的章节,我会告诉你什么是真正的动态阈值——让阈值自己去适应数据的变化。