3. 时序数据探索性分析

在工业设备时序预测项目中,拿到一段振动、温度、电流或转速数据后,第一步不是急着套模型,而是做探索性分析(EDA)。EDA 的目标是回答三个问题:这段信号里有哪些可解释的结构?哪些结构可以被预测?哪些部分本质上是不可预测的随机扰动?只有把趋势、季节性、周期性和噪声拆开看清楚,后续的特征工程和模型选择才有依据。

一、四类成分的物理含义

经典时序分解把观测序列 y(t) 表示为趋势、季节性、周期性和噪声的组合。在工业场景中,这四类成分往往对应明确的物理来源:

  • 趋势:设备磨损、结垢、轴承劣化导致的缓慢单调变化,例如主轴温度随运行小时数缓慢上升。
  • 季节性:固定周期内重复出现的波动,周期已知且稳定,如冷却水温随昼夜环境温度变化,周期为 24 小时。
  • 周期性:周期不固定或与生产节拍相关的重复模式,如换班、批次投料引起的负载波动,周期可能是 8 小时或一个生产批次。
  • 噪声:传感器量化误差、电磁干扰、随机振动,表现为高频、无规律、不可预测的残差。

需要强调的是,趋势与季节性并非总是线性叠加。工业信号常出现趋势与季节性的交互,例如夏季环境温度高时,同一负载下的温升趋势更陡。因此分解前应先做可视化,再决定采用加法模型还是乘法模型。

工业时序信号的四成分分解示意 观测序列 = 趋势 + 季节性 + 周期性 + 噪声 观测序列 y(t) t 趋势 T(t):磨损 / 结垢 / 温升 缓慢单调上升 季节性 S(t):昼夜环境温度,周期 24h 固定周期重复 周期性 C(t):换班 / 批次投料,周期不固定 生产节拍驱动 噪声 ε(t):传感器误差 / 电磁干扰 高频无规律

二、分解方法与操作流程

工业实践中最常用的分解方法有三类:经典 STL 分解、移动平均分离趋势、以及基于频域的 FFT 周期识别。推荐流程如下:

  1. 先画原始序列与滚动均值、滚动标准差,判断趋势是否稳定、方差是否随时间变化。
  2. 用 STL 或经典分解得到趋势项、季节项和残差项,观察残差是否接近白噪声。
  3. 对残差做 ACF/PACF 与 FFT,确认是否还有未提取的周期成分。
  4. 提取统计特征:均值、方差、偏度、峰度、过零率、均方根、峭度、谱峰位置。
  5. 将特征与设备工况标签对齐,筛选对预测目标有区分度的特征。
import pandas as pd
from statsmodels.tsa.seasonal import STL

# df: 时间索引 + 温度列 temp,采样间隔 1 分钟
df = df.asfreq('1min')
stl = STL(df['temp'], period=1440, robust=True)  # 1440 分钟 = 24 小时
res = stl.fit()

df['trend'] = res.trend
df['seasonal'] = res.seasonal
df['resid'] = res.resid

# 统计特征提取
feat = {
    'mean': df['temp'].mean(),
    'std': df['temp'].std(),
    'skew': df['temp'].skew(),
    'kurt': df['temp'].kurt(),
    'rms': (df['temp']**2).mean()**0.5,
    'zcr': ((df['temp'].diff() > 0).astype(int).diff() != 0).sum()
}
print(feat)

三、可视化方法与统计特征对照

不同可视化手段回答不同问题,不能只画一张折线图就下结论。下表给出工业时序 EDA 中常用的可视化方法与对应统计特征。

可视化方法 回答的问题 配套统计特征 工业场景示例
原始折线 + 滚动均值 是否存在趋势、趋势是否线性 均值、斜率、滚动方差 轴承温度随运行时长上升
STL 分解图 季节项与残差是否干净 季节强度、残差标准差 冷却水温昼夜波动
ACF / PACF 自相关长度、周期滞后 自相关系数、滞后阶数 振动信号 1 天周期确认
FFT 频谱图 主频与谐波位置 谱峰频率、谱能量占比 电机转频与倍频识别
箱线图 / 小提琴图 分布形态、异常值 偏度、峰度、四分位距 不同班次负载分布对比
时频图(STFT) 频率随时间的变化 时频能量、瞬时频率 启停过程冲击成分定位

四、案例:空压机排气温度 EDA

某空压机排气温度序列采样间隔 1 分钟,共 30 天数据。EDA 发现:趋势项在 30 天内上升约 6℃,与油品劣化周期吻合;季节项周期为 1440 分钟,振幅约 3℃,对应昼夜环境温度;残差项在每天 8:00 和 20:00 出现尖峰,经排查为换班时负载突变,属于周期性而非噪声。若直接把残差当噪声丢弃,就会丢失换班冲击这一关键预测信息。

提示:分解前先确认采样间隔是否均匀。工业现场常因网络抖动出现缺采样,需先重采样到固定频率,否则 STL 和 FFT 的周期参数会失真。

五、常见误区与复盘

  • 把周期性当噪声:周期不固定不等于随机,换班、批次投料都有物理节拍,应结合工单日志确认。
  • 过度分解:STL 的 period 参数设错会把趋势误判为季节项,建议先用 FFT 或 ACF 验证主周期。
  • 忽略量纲:温度、振动、电流的统计特征量纲不同,跨设备对比前必须标准化。
  • 只看均值:设备劣化往往先体现在方差和峭度上,均值可能长期不变。
  • 用未来信息:滚动统计特征必须只使用当前时刻及之前的数据,避免数据泄漏。
注意:EDA 阶段提取的统计特征若直接用于训练,需保证训练集与验证集按时间切分,不能随机打乱,否则趋势和季节项会跨集泄漏,导致离线指标虚高。

完成本节探索后,应形成一份特征清单:趋势斜率、季节振幅、主频、残差标准差、峭度、过零率等,并标注每个特征对应的物理含义与提取窗口。这份清单将直接决定后续预测模型是采用差分、去季节还是直接建模,是工业时序预测从数据走向模型的关键桥梁。