第四章:时间序列分析入门

各位同学好,我是老张。今天咱们聊聊时间序列分析。说实话,这玩意儿在供应链里太常用了——预测销量、监控库存、发现异常,哪样都离不开它。我做了这么多年量化交易和供应链优化,时间序列是我工具箱里最趁手的家伙之一。

时间序列,说白了就是按时间顺序排列的数据点。比如你每天记录的库存水位、每小时的生产量、每周的订单数,这些都是时间序列。但光有数据还不够,你得知道怎么分析它。

4.1 时间序列的基本概念

时间序列有三个核心要素:趋势、季节性和随机波动。趋势是长期走向,比如某款产品销量逐年上升;季节性是以固定周期重复的模式,比如每年双十一前订单暴增;随机波动就是那些没法解释的噪声。

我个人习惯,拿到任何时间序列数据,第一件事就是画图。用眼睛看比用任何统计检验都直观。你想想看,一条曲线是往上走还是往下走,有没有明显的周期性波动,一眼就能看出来。

核心要点:时间序列分析的前提是数据按固定时间间隔采集。如果间隔不固定,你得先做重采样。我在项目中遇到过有人拿不规则间隔的数据直接建模,结果预测值全跑偏了。

4.2 平稳性检验

平稳性是时间序列分析里绕不开的概念。一个平稳的时间序列,它的统计性质——均值、方差、自相关——不会随时间变化。为什么要强调这个?因为大多数时间序列模型都假设数据是平稳的。

怎么判断平稳性?我常用两种方法:

  • 肉眼观察法:看时序图,如果数据围绕一个常数上下波动,且波动幅度大致稳定,那大概率是平稳的。
  • 单位根检验:最常用的是ADF检验(Augmented Dickey-Fuller test)。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('数据非平稳,需要差分处理')

避坑指南:我曾经在分析某电商平台的日订单量时,直接用了原始数据建模,结果模型表现极差。后来才发现数据有明显的周周期性——周末订单量比工作日高30%。差分一次后,模型才正常工作。记住:非平稳数据直接建模,结果基本是废的。

4.3 自相关与偏自相关函数

自相关函数(ACF)和偏自相关函数(PACF)是时间序列分析的两把刷子。ACF衡量的是当前值与过去值之间的相关性,PACF则是在剔除中间变量影响后的相关性。

举个例子:今天的库存水位和昨天的库存水位相关,这叫一阶自相关。但今天的库存也可能间接受到前天的影响——因为前天影响了昨天,昨天又影响了今天。PACF就是去掉这种间接影响,只看直接关系。

怎么用?看ACF和PACF的拖尾和截尾特征:

模型 ACF特征 PACF特征
AR(p) 拖尾(逐渐衰减) p阶后截尾(突然归零)
MA(q) q阶后截尾 拖尾
ARMA(p,q) 拖尾 拖尾

嗯,这里要注意:实际数据往往没这么理想。我见过很多ACF图拖拖沓沓,截尾不明显。这时候别死磕理论,多试几个p和q的组合,用AIC或BIC选最优。

4.4 移动平均与指数平滑

移动平均是最简单的平滑方法。说白了就是取最近N个点的平均值,代替当前值。N越大,曲线越平滑,但对变化的反应越迟钝。

# 简单移动平均
def simple_moving_average(data, window):
    return data.rolling(window=window).mean()

# 加权移动平均(给近期数据更高权重)
def weighted_moving_average(data, window):
    weights = np.arange(1, window+1)
    return data.rolling(window=window).apply(
        lambda x: np.dot(x, weights) / weights.sum()
    )

指数平滑比移动平均更聪明。它给所有历史数据都分配权重,但越近的数据权重越大,而且权重按指数衰减。你想想看,昨天的数据比上个月的数据更有参考价值,这很合理对吧?

指数平滑有个关键参数——平滑系数α。α越大,模型对近期数据越敏感;α越小,历史数据的影响越持久。我一般用0.2到0.3作为起点,然后根据预测误差调整。

个人经验:在供应链预测中,我习惯先用简单指数平滑做个基线。如果数据有趋势,用Holt线性趋势模型;如果有季节性,用Holt-Winters模型。别一上来就上ARIMA,简单模型往往更稳健。

知识体系总览

下面这张图是我自己画的,把本章的核心逻辑串起来了。你保存下来,以后做分析时对照着看。

时间序列分析知识体系 时间序列分析 基本概念 平稳性检验 ACF与PACF 移动平均 指数平滑 趋势 季节性 随机波动 ADF检验 差分处理 模型定阶 参数调优

这张图把时间序列分析的四个核心模块串起来了。从基本概念出发,先做平稳性检验,然后用ACF/PACF判断模型结构,最后用移动平均或指数平滑做预测。每一步都有坑,但每一步也都有解法。

好了,这一章就到这里。记住:时间序列分析不是玄学,是数学。多动手画图、多跑代码、多对比模型,你很快就能上手。

专注资料整理