中盾观察
首页 / 趋势观察 / 正文

异常值识别:那些被忽略的数据信号

栏目:趋势观察 | 约1354字 | 2026-09-06

做数据观察的人,迟早会撞上同一个问题:一组看起来平稳的走势里,突然冒出一个偏离很远的点。比如某城市连续30天的地铁客流量都在800万到850万之间,第31天却只有320万。这个320万就是异常值。它可能是数据录入错误,也可能是一次极端天气、一场临时管控,甚至是一次系统故障。麻烦在于,你无法仅凭这个数字本身判断它属于哪一种。

最常见的问题,是把异常值直接当成脏数据删掉。删除确实能让图表更“好看”,但也会掩盖真实信号。2021年某零售研究团队复盘时发现,他们把疫情期间单日销售额骤降的7个点当作录入错误剔除了,结果季度预测模型高估了约12%的恢复速度。异常值有时恰恰是趋势转折的第一个证据。反过来,另一个极端是过度敏感,把每一次波动都当成异常,导致模型频繁报警,最后没人再看。

识别异常值,第一类方法是基于分布。假设一组数据近似正态分布,通常把偏离均值超过3倍标准差的值标记为异常。这个方法简单,但对样本量有要求。如果只有15个观测点,标准差本身就不稳定,3倍标准差的边界会变得很宽或很窄。更稳妥的做法是改用四分位距(IQR):计算第25百分位和第75百分位,两者之差为IQR,低于Q1减1.5倍IQR或高于Q3加1.5倍IQR的点视为异常。它对极端值不敏感,适合偏态分布。比如某平台日活跃用户数长期在50万左右,某天突然冲到180万,IQR方法会立刻标出这个点,而均值标准差法可能因为均值被拉高而漏掉。

第二类方法是基于时间序列的走势判断。很多数据有周期性,周末高、工作日低,或者月初月末有波动。这时候用全局分布去判断异常,会把正常的周期峰值误判为异常。更合理的做法是先分解趋势、季节性和残差,再对残差部分设阈值。举个例子,某外卖平台日均订单量工作日约120万单,周末约160万单。如果直接用全局均值140万加2倍标准差,周末的160万很容易被标成异常。但按星期几分组后,周末160万完全在正常范围内,真正需要关注的是某个周二突然掉到80万。

第三类方法是基于业务规则和上下文。统计方法能告诉你“这个点很特别”,但无法告诉你“它为什么特别”。一个电商运营团队曾发现,某款商品的退货率连续三周稳定在4%左右,第四周突然升到11%。统计上这是明显异常,但真正有价值的观察是:那周该商品换了一家物流合作方。异常值识别到最后,往往需要回到具体场景里找解释。没有上下文,阈值只是数字游戏。

实操中有两个容易被忽略的误区。一是忽略缺失值对异常判断的干扰。如果某天数据缺失,系统补了0,这个0会被当成极端异常值。某数据团队曾因此每周一早上收到大量报警,排查两个月才发现是周末数据同步延迟导致的批量补零。二是阈值固定不变。业务在增长,数据的均值和方差也在变化。用三个月前的阈值判断今天的数据,要么漏报,要么误报。比较务实的做法是每月或每季度重新校准一次阈值,并记录每次调整的原因。

回到开头那个地铁客流的例子。320万这个点,如果结合当天新闻发现有一条主要线路因故障停运6小时,那它就不是错误,而是一个值得保留的观察样本。异常值识别真正要回答的问题,不是“这个点该不该删”,而是“这个点是否携带了其他数据点没有的信息”。在趋势解读里,最有价值的部分往往不是平稳的主线,而是那些偏离主线的瞬间。识别它们,理解它们,比单纯清理它们更重要。