时间序列预测之decompose数据分解python实现和原理介绍

时间序列简介

时间序列是时间间隔不变的情况下收集的时间点集合,没有其他数据辅助。这些集合被分析用来了解长期发展趋势,为了预测未来或者表现分析的其他形式。

最近完成一个基于时间序列ARIMA预测的项目,为了处理非平稳化的数据,需要将数据分解成长期趋势项、季节性周期项以及残差项几部分,然后分别“对症下药”。以下写写数据的具体分解函数代码及原理。

decompose数据分解

python代码

数据分解的代码可直接调用python的statsmodels库,如下,就分解成了三部分数据。

from statsmodels.tsa.seasonal import seasonal_decompose

decomposition = seasonal_decompose(timeseries)  #timeseries时间序列数据
trend = decomposition.trend
seasonal = decomposition.seasonal
residual = decomposition.resid

但到底是如何分解成这三部分呢,还是值得探究一下。以下写写数据的具体分解过程。

数据分解原理

decompose数据分解模型主要有两类:相加模型(additive)和相乘模型(multiplicative)。
官方解释是:
The additive model is Y[t] = T[t] + S[t] + e[t]
The multiplicative model is Y[t] = T[t] * S[t] * e[t]
其中,T[t]是趋势项,S[t]是季节性周期项,e[t]是残值项。一般的,理想的分解模型中残值项应该是一个均值为0的随机变量。
两种模型的分解思路一致,这里以相加模型(additive)为例介绍。

  • step1:分解趋势项,采用中心化移动均值的方法。


    1.png
  • step2:分解季节性周期项。


    2.png
  • step3:计算残值项。
    e[t] = Y[t] - T[t] - S[t]

以下是一个数据分解后的结果图。


example.png

最后,针对对数据分解结果的分析,我们可采取移动均值、差分等方式对数据进行平稳化处理,用于时间序列预测。

你可能感兴趣的:(时间序列预测之decompose数据分解python实现和原理介绍)