现实生活中,很多数据呈现季节性特征。一个最简单的案例就是羽绒服在“冬季”销售量明显高于“夏季”。所以羽绒服售卖月份与售卖数量的模型就呈现季节性。
在对于季节性的研究中,最终目的为能够进行准确的预估。本文将阐述相关方法,相关判定准确性条件等。

季节性模型

首先,可以直观的观察一下季节性模型数据呈现的波动曲线:

季节性ARIMA模型Python 季节性预测模型_MSE

上图中,图1呈现的是具有趋势的模型数据;图2呈现的是具有循环趋势的数据;图3呈现的是季节性数据曲线;而图4呈现的是同时具有季节性以及趋势的波动曲线。


五种判定预测的方案

通过判定方案,判断我们的预测是否合理,预测模型是否可行。

误差 Bias

季节性ARIMA模型Python 季节性预测模型_季节性ARIMA模型Python_02
上式中, 季节性ARIMA模型Python 季节性预测模型_MSE_03 代表实际值,季节性ARIMA模型Python 季节性预测模型_数据_04 代表预测值,季节性ARIMA模型Python 季节性预测模型_季节性ARIMA模型Python_05 代表误差,即实际值与预测值的差值。
需要注意的是,季节性ARIMA模型Python 季节性预测模型_季节性ARIMA模型Python_06


绝对误差 MAD - Mean Absolute Deviation

绝对误差的平均值。与 季节性ARIMA模型Python 季节性预测模型_季节性ARIMA模型Python_06

季节性ARIMA模型Python 季节性预测模型_python_08


均方误差 MSE - Mean Square Error

误差平方的平均值。均方误差与方差的区别在于:
均方误差计算的是各个数据偏离真实值的平方和;
而方差则是计算各个数据与平均值的之差的平方和。

季节性ARIMA模型Python 季节性预测模型_MSE_09


标准差 Standard Error

标准差为方差的平方根,在本模型中,可为均方误差的平方根,即:

季节性ARIMA模型Python 季节性预测模型_数据_10


平均误差百分比 MAPE - Mean Absolute Percentage Error

平均误差百分比,拆开来理解,首先计算的是绝对误差占真实值的比例,该比例的和的平均值即为MAPE。

季节性ARIMA模型Python 季节性预测模型_python_11


五种预测方案

Naïve 朴素法

“昨天多少今天我就预测是多少”。

季节性ARIMA模型Python 季节性预测模型_季节性ARIMA模型Python_12

季节性ARIMA模型Python 季节性预测模型_大数据_13


季节性ARIMA模型Python 季节性预测模型_数据_14


n-period Moving Average 平均值法

假设 季节性ARIMA模型Python 季节性预测模型_数据_15,“我根据前三天的结果预估今天的结果”。

季节性ARIMA模型Python 季节性预测模型_季节性ARIMA模型Python_12

季节性ARIMA模型Python 季节性预测模型_python_17


季节性ARIMA模型Python 季节性预测模型_季节性ARIMA模型Python_18


季节性ARIMA模型Python 季节性预测模型_大数据_19


n-period Weight Moving Average 权重平均值法

假设n=3,而且“我觉得第二天的结果比第一天重要,第一天结果比第三天重要!”

季节性ARIMA模型Python 季节性预测模型_季节性ARIMA模型Python_12 假设 季节性ARIMA模型Python 季节性预测模型_季节性ARIMA模型Python_21

季节性ARIMA模型Python 季节性预测模型_大数据_22


季节性ARIMA模型Python 季节性预测模型_MSE_23


Simple Exponential smoothing 平滑法

“今天的预估与昨天的实际值以及昨天的预估有关!”

季节性ARIMA模型Python 季节性预测模型_大数据_24
季节性ARIMA模型Python 季节性预测模型_MSE_25

季节性ARIMA模型Python 季节性预测模型_python_26


季节性ARIMA模型Python 季节性预测模型_大数据_27


季节性ARIMA模型Python 季节性预测模型_大数据_28


第五种预测方案:去季节化

去季节化方案,Deaseasonalized,该方案与前几种不同的在于,他试图找到数据之间的规律与趋势,通过趋势与重新季节化得到一个合理的预测结果。

所以我们使用 “去季节化” 这种方案的准确步骤为:去季节化->预测->季节化

季节性ARIMA模型Python 季节性预测模型_季节性ARIMA模型Python_29

季节性ARIMA模型Python 季节性预测模型_python_30

所以我们如果想要通过该方法预测数据,则我们需要得到 季节性ARIMA模型Python 季节性预测模型_数据_31,即季节化模型。

季节性ARIMA模型Python 季节性预测模型_MSE_32

下面我们通过一个案例来得到 Seasonal~Index 以及去季节化

季节性ARIMA模型Python 季节性预测模型_季节性ARIMA模型Python_12

该表含义为2019年上半年,有113个订单,下半年有236个订单…可以很明显的发现上半年的订单明显低于下半年的订单,而且2019年到2020年到2021年存在某种趋势。

季节性ARIMA模型Python 季节性预测模型_季节性ARIMA模型Python_34


计算得到每年销售订单的平均值:

季节性ARIMA模型Python 季节性预测模型_MSE_35


得到Seasonalize Index

季节性ARIMA模型Python 季节性预测模型_季节性ARIMA模型Python_36


进行去季节化

季节性ARIMA模型Python 季节性预测模型_数据_37


通过python绘图,我们发现我们成功的将季节化的影响去除,从而清晰的看出订单在2019、2020到2021年的波动曲线(蓝色部分):红色部分为去季节化前的波动曲线。

季节性ARIMA模型Python 季节性预测模型_数据_38