2、时间序列基础概念:趋势、季节性、周期性、随机性、平稳性与非平稳性

各位同学,欢迎来到第二章。

说实话,时间序列分析入门最怕什么?就是一堆概念砸过来,你还没分清谁是谁,就开始上模型了。我当年刚入行时也踩过这个坑——拿到数据直接套ARIMA,结果预测出来一条直线,被领导骂了一下午。

所以这一章,咱们把地基打牢。趋势、季节性、周期性、随机性、平稳性,这几个词你搞懂了,后面80%的模型你都能驾驭。

2.1 趋势(Trend)

趋势,说白了就是数据长期往哪个方向走。

比如你观察一家公司的季度营收,连续三年都在涨,这就是上升趋势。反过来,某个传统行业的销量逐年下滑,那就是下降趋势。当然,也有横着走的——比如某些成熟市场的用户数,基本稳定在一个区间。

核心要点:趋势是长期、持续的变化方向,不是短期波动。

我个人习惯把趋势分成两类:

  • 线性趋势:数据大致沿着一条直线走。比如每年增长5%。
  • 非线性趋势:曲线上升或下降。比如指数增长、对数增长。

我在项目中遇到过最典型的案例:某电商平台的日活数据,看起来每年都在涨,但仔细一拆,其实是疫情期间的爆发式增长,后面就平了。如果你直接用线性模型去拟合,预测结果会严重偏高。

避坑指南:我曾经犯过一个错误——看到数据一直涨,就以为趋势会永远持续。结果忽略了市场饱和度的天花板。记住:趋势是会变的,尤其是长期预测时,一定要结合业务逻辑判断。

2.2 季节性(Seasonality)

季节性,就是数据在固定时间间隔内重复出现的模式。

你想想看,每年双十一销量暴涨,每年春节前后物流爆仓,每年夏天冰淇淋销量飙升——这些都是季节性。

季节性的周期通常是固定的:一天、一周、一个月、一个季度、一年。比如:

  • 小时级别的用电量:白天高、晚上低
  • 周级别的餐厅客流:周末人多、工作日人少
  • 月级别的零售数据:12月最高、2月最低

嗯,这里要注意:季节性和我们平时说的“四季”不完全是一回事。在时间序列里,“季节”指的是任何固定周期的重复模式。哪怕你的数据是每5分钟采集一次,只要每24小时重复一次,那也叫季节性。

关键区别:季节性 = 固定周期 + 可预测的重复模式。

2.3 周期性(Cyclicity)

周期性,很多人容易和季节性搞混。我刚开始学的时候也分不清。

周期性,指的是数据在非固定时间间隔内出现的波动模式。它没有固定的周期长度,周期长度可能几年、十几年,甚至不确定。

举个例子:经济周期——繁荣、衰退、萧条、复苏。这个周期可能是5年,也可能是10年,没人能精确预测下一次衰退什么时候来。

特征 季节性 周期性
周期长度 固定(如12个月) 不固定(如3-10年)
驱动因素 日历、气候、节假日 经济、政策、技术变革
可预测性
常见场景 零售、能源、交通 宏观经济、股票市场

我在项目中遇到过:某制造业企业的订单量,看起来有周期性波动,但周期长度从3年到7年不等。后来发现,这跟设备更新换代周期有关。如果你用季节性模型去拟合,结果会一塌糊涂。

警告:千万别把周期性当成季节性来处理。季节性可以用差分或季节模型解决,周期性则需要更复杂的分解方法,比如STL分解或小波变换。

2.4 随机性(Randomness / Irregularity)

随机性,也叫不规则成分。就是数据中那些无法被趋势、季节性、周期性解释的“噪音”。

说白了,就是运气成分。比如某天突然下暴雨,导致外卖订单暴增;或者某个工厂突发停电,产量骤降。这些都属于随机波动。

随机性有两个特点:

  • 不可预测:你没法提前知道它什么时候发生
  • 无规律:没有固定的模式

但注意,随机性不等于“没用”。在时间序列建模中,我们通常假设随机成分是白噪声——均值为0、方差恒定、彼此独立。如果你的模型把随机成分也拟合进去了,那就是过拟合。

我的经验:判断一个序列的随机成分是否合理,可以看残差的自相关图。如果残差还有明显的自相关,说明你的模型没把信息提取干净。我曾经有个项目,残差一直有周期性,后来发现是忘了加星期几的虚拟变量。

2.5 平稳性(Stationarity)

平稳性,是时间序列分析里最重要的概念之一。没有之一。

什么叫平稳?简单说:数据的统计性质不随时间变化。

具体来说,一个平稳时间序列满足:

  • 均值恒定:长期来看,数据围绕一个固定值波动
  • 方差恒定:波动幅度不随时间变化
  • 自协方差只与时间间隔有关:比如相隔1天的两个点,它们的相关性只取决于“相隔1天”这个事实,而不取决于具体是哪一天

你想想看,如果数据均值一直在变,你怎么用历史数据预测未来?所以大多数时间序列模型(比如ARIMA)都要求数据是平稳的。

核心原则:建模前先检验平稳性,不平稳就做差分或变换。

常用的平稳性检验方法:

  • ADF检验(Augmented Dickey-Fuller Test):最常用,原假设是“序列非平稳”
  • KPSS检验:原假设是“序列平稳”,和ADF互补使用
  • 观察法:看时序图、自相关图(ACF),如果自相关衰减很慢,通常是非平稳
# Python示例:ADF检验
from statsmodels.tsa.stattools import adfuller

result = adfuller(data)
print(f'ADF统计量: {result[0]}')
print(f'p值: {result[1]}')
# p值 < 0.05 通常认为序列平稳

2.6 非平稳性(Non-stationarity)

非平稳性,就是平稳性的反面。大多数原始时间序列都是非平稳的。

非平稳的来源主要有三种:

  1. 趋势非平稳:均值随时间变化(比如持续上升)
  2. 季节性非平稳:存在固定周期的波动
  3. 方差非平稳:波动幅度随时间变化(比如金融数据的波动聚集)

处理非平稳的常用方法:

  • 差分:一阶差分消除线性趋势,二阶差分消除二次趋势
  • 季节差分:消除季节性(比如对月度数据做12阶差分)
  • 对数变换:稳定方差(比如对指数增长的数据取log)
  • Box-Cox变换:更通用的方差稳定方法

注意:差分不是万能的。过度差分会导致信息丢失,甚至引入虚假的自相关。我见过有人对平稳数据也做差分,结果模型反而变差了。记住:差分的目的是让数据变平稳,不是为差分而差分。

2.7 知识体系总览

下面这张图,是我自己总结的时间序列基础概念框架。你把它存下来,后面学任何模型都可以回来对照。

时间序列基础概念框架 时间序列 可分解成分 统计性质 建模前提 趋势 季节性 周期性 随机性 平稳性 非平稳性 平稳性检验(ADF/KPSS) 差分/变换处理 均值恒定 方差恒定 自协方差稳定 趋势非平稳 季节非平稳 方差非平稳 图:时间序列基础概念知识体系

这张图把本章的核心概念串起来了。你从“时间序列”出发,左边是它的可分解成分,中间是统计性质,右边是建模前的准备工作。每个分支之间其实是有联系的——比如非平稳性往往来源于趋势或季节性,而平稳性检验又是建模的前提。

好了,这一章的内容就到这里。概念虽然多,但别急,后面每一章都会反复用到这些知识。你先把这张图刻在脑子里,后面学模型会轻松很多。


专注资料整理