時間序列簡介
時間序列是時間間隔不變的情況下收集的時間點(diǎn)集合,沒有其他數(shù)據(jù)輔助。這些集合被分析用來了解長期發(fā)展趨勢,為了預(yù)測未來或者表現(xiàn)分析的其他形式。
最近完成一個基于時間序列ARIMA預(yù)測的項(xiàng)目,為了處理非平穩(wěn)化的數(shù)據(jù),需要將數(shù)據(jù)分解成長期趨勢項(xiàng)、季節(jié)性周期項(xiàng)以及殘差項(xiàng)幾部分,然后分別“對癥下藥”。以下寫寫數(shù)據(jù)的具體分解函數(shù)代碼及原理。
decompose數(shù)據(jù)分解
python代碼
數(shù)據(jù)分解的代碼可直接調(diào)用python的statsmodels庫,如下,就分解成了三部分?jǐn)?shù)據(jù)。
from statsmodels.tsa.seasonal import seasonal_decompose
decomposition = seasonal_decompose(timeseries) #timeseries時間序列數(shù)據(jù)
trend = decomposition.trend
seasonal = decomposition.seasonal
residual = decomposition.resid
但到底是如何分解成這三部分呢,還是值得探究一下。以下寫寫數(shù)據(jù)的具體分解過程。
數(shù)據(jù)分解原理
decompose數(shù)據(jù)分解模型主要有兩類:相加模型(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]是趨勢項(xiàng),S[t]是季節(jié)性周期項(xiàng),e[t]是殘值項(xiàng)。一般的,理想的分解模型中殘值項(xiàng)應(yīng)該是一個均值為0的隨機(jī)變量。
兩種模型的分解思路一致,這里以相加模型(additive)為例介紹。
-
step1:分解趨勢項(xiàng),采用中心化移動均值的方法。
1.png -
step2:分解季節(jié)性周期項(xiàng)。
2.png step3:計(jì)算殘值項(xiàng)。
e[t] = Y[t] - T[t] - S[t]
以下是一個數(shù)據(jù)分解后的結(jié)果圖。

最后,針對對數(shù)據(jù)分解結(jié)果的分析,我們可采取移動均值、差分等方式對數(shù)據(jù)進(jìn)行平穩(wěn)化處理,用于時間序列預(yù)測。

