時間序列預(yù)測之decompose數(shù)據(jù)分解python實(shí)現(xiàn)和原理介紹

時間序列簡介

時間序列是時間間隔不變的情況下收集的時間點(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é)果圖。


example.png

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容