时序数据基础:时间序列的定义、平稳性与非平稳性、自相关与偏自相关、趋势与季节性分解

各位同学好,我是你们这门课的主讲。今天咱们来聊聊时序数据的基础。说实话,这部分内容看着有点理论,但你要是真搞懂了,后面做预测模型会顺手很多。我当年刚入行时,就是没重视这些基础,结果模型跑出来一塌糊涂,后来回头补课才明白——地基不牢,房子盖不高。

1. 时间序列到底是什么?

先问个问题:你手机里每天记录的步数,算不算时间序列?当然算。时间序列,说白了就是按照时间顺序排列的一组数据点。比如股票价格、每小时的气温、工厂里传感器的电流值——这些都是。

我个人习惯把时间序列分成两类:

  • 连续时间序列:理论上每个时刻都有值,比如模拟信号。
  • 离散时间序列:只在特定时间点采样,比如每5分钟记录一次功率。

咱们做超短期功率预测,绝大多数情况处理的是离散时间序列。采样间隔可能是1分钟、5分钟或者15分钟。嗯,这里要注意:采样间隔的选择会直接影响模型效果,我后面会专门讲。

2. 平稳性与非平稳性——这俩到底啥意思?

平稳性这个概念,我刚开始学的时候也觉得抽象。其实你想想看:如果一个时间序列的统计性质(比如均值、方差)不随时间变化,那它就是平稳的。反过来,如果均值忽高忽低,方差忽大忽小,那就是非平稳。

举个例子:

  • 平稳序列:白噪声,比如收音机里的沙沙声。均值始终为0,方差恒定。
  • 非平稳序列:股票价格。长期看是上涨趋势,均值一直在变。

我在项目中遇到过最典型的非平稳情况——光伏功率数据。白天有太阳时功率高,晚上为零,均值一天之内波动巨大。这种数据如果不做处理直接建模,预测结果会非常糟糕。

为什么平稳性这么重要?

因为大多数时间序列模型(比如ARIMA)都假设数据是平稳的。非平稳数据会导致模型参数估计不准,预测结果不可靠。说白了,模型会“学歪”。

3. 自相关与偏自相关——数据自己跟自己“聊天”

自相关,就是当前时刻的值与过去某个时刻的值之间的相关性。比如今天下午3点的功率,跟昨天下午3点的功率有没有关系?如果有,那就是存在自相关。

偏自相关呢?它更“纯粹”一些——它衡量的是,在排除了中间时刻的影响之后,当前值与过去某个时刻值的直接相关性。

我画个图帮大家理解:

自相关 vs 偏自相关 示意图 自相关 (ACF) t与t-3相关 偏自相关 (PACF) 直接相关 排除中间影响 自相关:考虑所有路径 偏自相关:只考虑直接路径

在实际项目中,我经常用ACF和PACF图来判断模型阶数。比如:

  • 如果ACF拖尾、PACF截尾——适合用AR模型
  • 如果ACF截尾、PACF拖尾——适合用MA模型
  • 如果两者都拖尾——可能需要ARMA模型

小技巧:用Python的statsmodels.graphics.tsaplots库可以快速画出ACF和PACF图。我一般会先看ACF图,如果自相关衰减很慢,那数据大概率是非平稳的,需要先做差分。

4. 趋势与季节性分解——把复杂数据拆开看

时间序列通常可以拆成三部分:

  1. 趋势(Trend):长期上升或下降的方向。比如某个地区用电量逐年增长。
  2. 季节性(Seasonal):固定周期内的规律波动。比如一天之内用电高峰在晚上。
  3. 残差(Residual):去掉趋势和季节性后剩下的随机波动。

我常用的分解方法是STL(Seasonal-Trend decomposition using LOESS)。它比经典分解法更鲁棒,能处理非线性趋势。

来看一段代码示例:

import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.seasonal import STL

# 假设df是包含功率数据的DataFrame,索引为时间
stl = STL(df['power'], period=96)  # 96个点一天(15分钟间隔)
result = stl.fit()

# 提取各分量
trend = result.trend
seasonal = result.seasonal
residual = result.resid

# 可视化
fig, axes = plt.subplots(4, 1, figsize=(12, 8))
df['power'].plot(ax=axes[0], title='原始数据')
trend.plot(ax=axes[1], title='趋势')
seasonal.plot(ax=axes[2], title='季节性')
residual.plot(ax=axes[3], title='残差')
plt.tight_layout()
plt.show()

避坑指南:我曾经在分解风电功率数据时,把周期设错了。风电的日周期性其实不如光伏明显,因为风速受天气影响更大。如果你发现残差里还有明显的规律,那说明周期参数没选对,或者数据里还有别的周期成分。

5. 知识体系总览

下面这张图总结了本章的核心内容,方便你回顾:

时间序列基础 时间序列定义 按时间顺序排列的数据点 连续 vs 离散 平稳性与非平稳性 均值、方差不随时间变化 非平稳需差分或变换 自相关与偏自相关 ACF:所有路径相关性 PACF:直接路径相关性 趋势与季节性分解 趋势 + 季节性 + 残差 常用方法:STL分解 理解这些,才能做好功率预测

好了,这一章的内容就到这里。记住:平稳性判断是第一步,自相关分析帮你选模型,分解让你看清数据结构。这三板斧练好了,后面建模会轻松很多。


专注资料整理