4. 时间序列基础:时间序列概念、平稳性与非平稳性、自相关与偏自相关

各位工程师朋友,咱们今天聊聊时间序列。说实话,我在工业现场摸爬滚打这么多年,最深的体会就是——设备不会突然坏掉,它一定会提前“说话”。而时间序列分析,就是听懂这些“话”的耳朵。

你想想看,一台泵的振动值、一条生产线的温度曲线、一个电机的电流波形……这些数据按时间顺序排下来,就是时间序列。我习惯把时间序列比作设备的“心电图”,每一次波动、每一个异常,都藏着设备健康的秘密。

4.1 时间序列的基本概念

时间序列,说白了就是一组按时间顺序排列的观测值。在工业物联网里,我们最常见的就是传感器每隔几秒、几分钟采集一次数据。

举个例子,我去年帮一家水泥厂做设备预测性维护,他们回转窑的轴承温度每5分钟记录一次。连续采集了三个月,这就是一个典型的时间序列。嗯,这里要注意:时间序列有两个核心要素——时间点和观测值,缺一不可。

时间序列的三要素:

  • 趋势(Trend):长期上升或下降的走向。比如设备老化,振动值会缓慢爬升。
  • 季节性(Seasonality):固定周期内的规律波动。比如空压机每天早晚负荷不同。
  • 随机性(Randomness):无法解释的噪声。比如偶尔的测量误差或外部干扰。

我个人习惯拿到数据后,第一件事就是画个时序图。别小看这一步,肉眼能看出很多门道。比如趋势明显上升,那设备大概率在退化;如果突然出现尖峰,可能是某个部件出了问题。

4.2 平稳性与非平稳性

这个概念很多初学者容易绕晕。我换个说法:平稳性就是数据的“脾气”稳定不稳定。

什么是平稳时间序列?

简单说,就是数据的统计特性不随时间变化。均值恒定、方差恒定、自相关结构恒定。你想想看,如果一台设备的振动值均值一直在变,那你怎么设定报警阈值?

非平稳序列长什么样?

  • 均值漂移:比如设备磨损,振动值整体往上走
  • 方差变化:比如间隙性故障,数据一会儿平稳一会儿剧烈波动
  • 趋势项:明显的上升或下降

我的经验:工业现场的数据,90%以上都是非平稳的。设备在老化、环境在变化、工况在切换,数据怎么可能一成不变?所以别指望拿到手的数据直接就能用,预处理是必须的。

怎么判断平稳性?

我常用的方法有两个:

  1. 肉眼观察法:画个时序图,看看均值有没有明显变化
  2. 单位根检验(ADF检验):这是统计学方法,给出一个p值,小于0.05就认为是平稳的
# Python代码示例:ADF检验
from statsmodels.tsa.stattools import adfuller

# 假设data是你的时间序列
result = adfuller(data)
print(f'ADF统计量: {result[0]}')
print(f'p值: {result[1]}')

if result[1] < 0.05:
    print('序列平稳')
else:
    print('序列非平稳,需要差分处理')

我曾经遇到过一个案例:某化工厂的泵出口压力数据,ADF检验p值高达0.8,明显非平稳。后来发现是管道结垢导致压力缓慢上升。差分一次后,p值降到0.01,这才能用。

避坑指南:千万不要对非平稳序列直接建模!我曾经见过有人拿非平稳数据跑ARIMA模型,结果预测值直接飞上天。记住:非平稳数据必须先做差分或变换,让它变平稳。

4.3 自相关与偏自相关

这两个概念,我当年学的时候也迷糊过。后来在项目里用多了,才真正理解它们的价值。

自相关(ACF):衡量当前值和过去值之间的相关性。比如今天上午10点的振动值,和昨天上午10点的振动值有没有关系?

偏自相关(PACF):剔除中间变量影响后,当前值和某个过去值的直接相关性。说白了,就是“去掉干扰项,看真实关系”。

为什么这两个指标重要?

在预防性维护中,我们经常用ARIMA模型做预测。而ACF和PACF图,就是帮我们确定ARIMA模型参数(p、d、q)的“地图”。

  • ACF图:看拖尾还是截尾,决定MA阶数q
  • PACF图:看拖尾还是截尾,决定AR阶数p

举个例子,我去年做风机轴承预测时,画出ACF图发现前3阶显著相关,后面突然掉到置信区间内——这就是“截尾”。PACF图则是缓慢衰减——这是“拖尾”。结合这两个特征,我判断应该用AR(3)模型,也就是p=3。

# Python代码示例:绘制ACF和PACF图
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import matplotlib.pyplot as plt

# 假设data_diff是差分后的平稳序列
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 6))

plot_acf(data_diff, lags=20, ax=ax1)
ax1.set_title('自相关函数 (ACF)')

plot_pacf(data_diff, lags=20, ax=ax2)
ax2.set_title('偏自相关函数 (PACF)')

plt.tight_layout()
plt.show()

我的小技巧:看ACF/PACF图时,别死盯着统计显著性。工业数据往往有噪声,偶尔一两个点超出置信区间很正常。我习惯先看整体形态——是快速衰减还是缓慢衰减?这比单个点重要得多。

4.4 知识体系总览

说了这么多,咱们用一张图把时间序列基础串起来。这是我做课程时习惯画的框架图,帮你理清思路。

时间序列基础 时间序列概念 平稳性/非平稳性 自相关/偏自相关 三要素 趋势 · 季节性 · 随机性 时序图:肉眼观察第一步 工业数据90%非平稳 判断方法 ADF检验 · 肉眼观察 差分处理:一阶/二阶 非平稳不能直接建模 ACF vs PACF ACF:整体相关性 PACF:剔除干扰后相关性 用于确定ARIMA参数 预防性维护核心应用 设备退化趋势识别 提前发现异常 剩余寿命预测 制定维修计划 报警阈值优化 减少误报漏报

这张图把咱们今天讲的内容串起来了。你看,从时间序列概念出发,到平稳性判断,再到自相关分析,最终都指向一个目标——预防性维护。说白了,我们做这些分析,不是为了炫技,而是为了在设备出问题之前,提前发现苗头。

最后说句实在话:时间序列分析不是万能的,但没有它,做预测性维护就是盲人摸象。我建议你拿到数据后,先画图、再检验、后建模,一步步来,别跳步。嗯,今天就聊到这儿,下次咱们接着聊ARIMA模型的具体应用。

专注资料整理