4. 时间序列基础:时间序列概念、平稳性与非平稳性、自相关与偏自相关
各位工程师朋友,咱们今天聊聊时间序列。说实话,我在工业现场摸爬滚打这么多年,最深的体会就是——设备不会突然坏掉,它一定会提前“说话”。而时间序列分析,就是听懂这些“话”的耳朵。
你想想看,一台泵的振动值、一条生产线的温度曲线、一个电机的电流波形……这些数据按时间顺序排下来,就是时间序列。我习惯把时间序列比作设备的“心电图”,每一次波动、每一个异常,都藏着设备健康的秘密。
4.1 时间序列的基本概念
时间序列,说白了就是一组按时间顺序排列的观测值。在工业物联网里,我们最常见的就是传感器每隔几秒、几分钟采集一次数据。
举个例子,我去年帮一家水泥厂做设备预测性维护,他们回转窑的轴承温度每5分钟记录一次。连续采集了三个月,这就是一个典型的时间序列。嗯,这里要注意:时间序列有两个核心要素——时间点和观测值,缺一不可。
时间序列的三要素:
- 趋势(Trend):长期上升或下降的走向。比如设备老化,振动值会缓慢爬升。
- 季节性(Seasonality):固定周期内的规律波动。比如空压机每天早晚负荷不同。
- 随机性(Randomness):无法解释的噪声。比如偶尔的测量误差或外部干扰。
我个人习惯拿到数据后,第一件事就是画个时序图。别小看这一步,肉眼能看出很多门道。比如趋势明显上升,那设备大概率在退化;如果突然出现尖峰,可能是某个部件出了问题。
4.2 平稳性与非平稳性
这个概念很多初学者容易绕晕。我换个说法:平稳性就是数据的“脾气”稳定不稳定。
什么是平稳时间序列?
简单说,就是数据的统计特性不随时间变化。均值恒定、方差恒定、自相关结构恒定。你想想看,如果一台设备的振动值均值一直在变,那你怎么设定报警阈值?
非平稳序列长什么样?
- 均值漂移:比如设备磨损,振动值整体往上走
- 方差变化:比如间隙性故障,数据一会儿平稳一会儿剧烈波动
- 趋势项:明显的上升或下降
我的经验:工业现场的数据,90%以上都是非平稳的。设备在老化、环境在变化、工况在切换,数据怎么可能一成不变?所以别指望拿到手的数据直接就能用,预处理是必须的。
怎么判断平稳性?
我常用的方法有两个:
- 肉眼观察法:画个时序图,看看均值有没有明显变化
- 单位根检验(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 知识体系总览
说了这么多,咱们用一张图把时间序列基础串起来。这是我做课程时习惯画的框架图,帮你理清思路。
这张图把咱们今天讲的内容串起来了。你看,从时间序列概念出发,到平稳性判断,再到自相关分析,最终都指向一个目标——预防性维护。说白了,我们做这些分析,不是为了炫技,而是为了在设备出问题之前,提前发现苗头。
最后说句实在话:时间序列分析不是万能的,但没有它,做预测性维护就是盲人摸象。我建议你拿到数据后,先画图、再检验、后建模,一步步来,别跳步。嗯,今天就聊到这儿,下次咱们接着聊ARIMA模型的具体应用。