文章目录

  • 统计学 时间序列预测
  • 时间序列的成分与预测方法
  • 时间序列的成分
  • 预测方法的选择与评估
  • 平稳序列的预测
  • 移动平均预测
  • 简单指数平滑预测
  • 趋势预测
  • 线性趋势预测
  • 非线性趋势预测
  • 多成分序列的预测
  • Winter 指数平滑预测
  • 引入季节哑变量的多元回归预测
  • 分解预测


统计学 时间序列预测

时间序列:按时间顺序记录的一组数据,这里用 季节性arima模型预测python 季节性变动的预测方法_大数据 表示所观察的时间,季节性arima模型预测python 季节性变动的预测方法_大数据_02 表示再时间 季节性arima模型预测python 季节性变动的预测方法_数据分析_03

时间序列的成分与预测方法

时间序列的成分

一个时间序列通常由四种要素组成:趋势、季节变动、循环波动和不规则波动

趋势 trend:时间序列在一段较长时期内呈现出来的持续向上或者持续向下的变动。趋势在一定观察期内可能是线性变化,但随着时间的推移也可能呈现出非线性变化。

季节变动 seasonal fluctuation:时间序列呈现出的以年为周期长度的固定变动模式,这种模式年复一年地出现。

循环波动 cyclic fluctuation:时间序列呈现出的非固定长度的周期性波动。循环波动的周期可能会持续一段时间,并且是涨落相间的交替波动。

不规则波动 irregular variations:时间序列中除去趋势、季节变动和循环波动之后的随机波动。

时间序列的四个组成部分可以用乘法模型加法模型表示,乘法模型更为常见:
季节性arima模型预测python 季节性变动的预测方法_季节性arima模型预测python_04

预测方法的选择与评估

预测方法的选择需要考虑以下因素:

  • 历史数据的变化模式,即时间序列所包含的成分
  • 能获得的历史数据的多少
  • 所要求的预测期的长短

预测方法

适合的数据模式

对数据的要求

预测期

移动平均

平稳序列

数据个数与移动平均的步长相等

非常短

简单指数平滑

平稳序列

5个以上

短期

Holt 指数平滑

线性趋势

5个以上

短期至中期

一元线性回归

线性趋势

10个以上

短期至中期

指数模型

非线性趋势

10个以上

短期至中期

多项式函数

非线性趋势

10个以上

短期至中期

Winter 指数平滑

趋势和季节成分

至少有4个周期的季度或月份数据

短期至中期

含季节哑变量的多元回归

趋势和季节成分

至少有4个周期的季度或月份数据

短期、中期、长期

分解预测

趋势、季节和循环成分

至少有4个周期的季度或月份数据

短期、中期、长期

预测方法的评估:预测方法的好坏取决于预测误差的大小,即预测值与实际值的差距。常用的度量方法有:平均误差、平均绝对误差、均方误差、平均百分比误差、平均绝对百分比误差,较为常用的是均方误差:
季节性arima模型预测python 季节性变动的预测方法_大数据_05
季节性arima模型预测python 季节性变动的预测方法_季节性arima模型预测python_06 是第 季节性arima模型预测python 季节性变动的预测方法_季节性arima模型预测python_07 期的实际值,季节性arima模型预测python 季节性变动的预测方法_大数据_08 是第 季节性arima模型预测python 季节性变动的预测方法_季节性arima模型预测python_07 期的预测值,季节性arima模型预测python 季节性变动的预测方法_时间序列_10

平稳序列的预测

平稳序列:不含趋势、季节变动和循环波动的序列,波动主要是随即成分所致,序列的平均值不随时间的推移而变化。常用预测方法有:简单平均、移动平均、简单指数平滑等。

移动平均预测

移动平均预测:选择固定长度的移动间隔,对时间序列逐期移动求得平均数作为下一期的预测值。设移动间隔长度为 季节性arima模型预测python 季节性变动的预测方法_时间序列_11季节性arima模型预测python 季节性变动的预测方法_季节性arima模型预测python_12),则 季节性arima模型预测python 季节性变动的预测方法_机器学习_13 期的移动平均预测值为:
季节性arima模型预测python 季节性变动的预测方法_机器学习_14
预测时可采用不同的移动步长进行预测,然后选择一个使均方误差达到最小的移动步长。

简单指数平滑预测

简单指数平滑预测:加权平均,把 季节性arima模型预测python 季节性变动的预测方法_数据分析_03 期的实际值 季节性arima模型预测python 季节性变动的预测方法_大数据_02季节性arima模型预测python 季节性变动的预测方法_数据分析_03 期的平滑值 季节性arima模型预测python 季节性变动的预测方法_时间序列_18 加权平均作为 季节性arima模型预测python 季节性变动的预测方法_机器学习_13 期的预测值。观测的时间离现时期越远,其权数呈现指数下降,因而称为指数平滑:
季节性arima模型预测python 季节性变动的预测方法_时间序列_20

  • 简单指数平滑预测中,季节性arima模型预测python 季节性变动的预测方法_数据分析_21 ;初始时,可选择 季节性arima模型预测python 季节性变动的预测方法_季节性arima模型预测python_22 或者 季节性arima模型预测python 季节性变动的预测方法_机器学习_23
  • 平滑系数季节性arima模型预测python 季节性变动的预测方法_时间序列_24 的取值为 季节性arima模型预测python 季节性变动的预测方法_数据分析_25季节性arima模型预测python 季节性变动的预测方法_季节性arima模型预测python_26 ,仅仅重复上一次的预测结果;季节性arima模型预测python 季节性变动的预测方法_时间序列_27 ,预测值就是上一期的实际观察值;季节性arima模型预测python 季节性变动的预测方法_时间序列_24 越接近 季节性arima模型预测python 季节性变动的预测方法_数据分析_29
  • 可以多比较几个 季节性arima模型预测python 季节性变动的预测方法_时间序列_24 ,选择预测误差最小的那个。若 季节性arima模型预测python 季节性变动的预测方法_时间序列_24
  • 优点是只需要少数几个观测值就能进行预测,方法相对简单;缺点是预测值往往滞后于实际值,而且无法考虑趋势和季节成份。

趋势预测

线性趋势预测

线性趋势:时间序列按照一个固定的常数(固定斜率)增长或下降。

一元回归预测:使用最小二乘法得到回归系数:
季节性arima模型预测python 季节性变动的预测方法_机器学习_32
预测趋势的误差可用线性回归中的估计标准误差来衡量。

Holt 指数平滑预测:改进了简单指数平滑预测,将趋势考虑进来,改善了指数平滑滞后的问题:
季节性arima模型预测python 季节性变动的预测方法_时间序列_33

  • 初始时,可设 季节性arima模型预测python 季节性变动的预测方法_机器学习_34季节性arima模型预测python 季节性变动的预测方法_机器学习_35季节性arima模型预测python 季节性变动的预测方法_机器学习_36
  • 新增的平滑系数 季节性arima模型预测python 季节性变动的预测方法_时间序列_37 取值也在 季节性arima模型预测python 季节性变动的预测方法_数据分析_25

非线性趋势预测

指数曲线:用于描述以几何级数递增或递减的现象:
季节性arima模型预测python 季节性变动的预测方法_机器学习_39
其中 季节性arima模型预测python 季节性变动的预测方法_数据分析_40季节性arima模型预测python 季节性变动的预测方法_时间序列_41

多阶曲线:当现象变化形态较为复杂时,可以拟合多项式函数。当有 季节性arima模型预测python 季节性变动的预测方法_大数据_42 个拐点时,需要拟合 季节性arima模型预测python 季节性变动的预测方法_时间序列_11 阶曲线:
季节性arima模型预测python 季节性变动的预测方法_季节性arima模型预测python_44
将数据的幂次作为特征/变量加入模型(线性化)后可以通过最小二乘法求解

多成分序列的预测

当时间序列同时包含趋势、季节变动和随机波动等多种成分时,可以使用 Winter 指数平滑预测、引入季节哑变量的多元回归预测、分解预测等方法进行预测。

Winter 指数平滑预测

Winter 模型:Holt 指数平滑模型只能判断趋势,不能判断季节成分;winter 模型再引入了一个平滑系数 季节性arima模型预测python 季节性变动的预测方法_机器学习_45 来预测季节成分:
季节性arima模型预测python 季节性变动的预测方法_时间序列_46

  • 计算平滑值时,季节性arima模型预测python 季节性变动的预测方法_大数据_47
  • 季节性arima模型预测python 季节性变动的预测方法_机器学习_48 是季节周期的长度,例如对于月份数据,季节性arima模型预测python 季节性变动的预测方法_数据分析_49
  • 使用 Winter 模型进行预测,要求数据至少是按季度或者月份来收集的,并且要有 4 年以上的数据

引入季节哑变量的多元回归预测

如果序列含有趋势和季节等多种成分,可以将季节变量作为哑变量加入回归模型,这样都可以归为趋势,例如季度数据可以引入:
季节性arima模型预测python 季节性变动的预测方法_季节性arima模型预测python_50
以第1季度为参照季度,即基础水平;最后得到含有季节哑变量的多元回归方程为:
季节性arima模型预测python 季节性变动的预测方法_时间序列_51
其中 季节性arima模型预测python 季节性变动的预测方法_时间序列_41 是趋势成分的系数,季节性arima模型预测python 季节性变动的预测方法_季节性arima模型预测python_53

分解预测

分解预测:先将时间序列的各个成分依次分解出来,然后再进行预测。该方法适合于含有趋势、季节、循环等多种成分序列预测的一种古典方法。该方法容易理解、可解释性强,并且预测效果较好,一直得到广泛运用。步骤为:

① 确定并分离季节成分。季节成分一般用季节指数来表示,然后用序列的每一个观察值除以相应的季节指数,以消除季节成分

② 建立预测模型并进行预测。对消除季节成分后的序列建立各种预测模型,根据这一模型进行预测

③ 将预测值乘以相应的季节指数,得到最终的预测值

季节成分分离比较复杂,写代码的话可以考虑直接调包或者用数据分析软件;常用方法有经验模态分解(EMD)、小波变化和傅里叶变化。其中傅里叶变换和小波变换适用于平稳季节性成分分离,而 EMD 适用于非平稳季节性成分分离。