勵志

勵志人生知識庫

stl分解

STL(Seasonal and Trend decomposition using Loess)是一種用於時間序列數據分解的方法,它可以將時間序列數據分解為趨勢季節性殘差三個主要分量。STL 算法基於 Loess(局部加權回歸散點平滑法)進行時間序列的分解,通過內循環外循環的過程來實現。

內循環:

去趨勢:從原始數據中去除趨勢分量。

周期子序列平滑:對季節性周期進行平滑處理。

低通濾波處理:對平滑後的周期子序列進行低通濾波,以獲取趨勢分量。

更新季節性和殘差分量。

外循環:

引入穩健性權重項:控制數據中異常值的影響。

更新內循環中的權重:考慮到下一階段內循環的臨近權重。

STL 分解的過程不僅涉及到趨勢和季節性的分離,還包括了對殘差的處理,以確保分解後的各個分量之和等於原始時間序列。這種方法能夠有效地處理時間序列中的非線性和非平穩性,特別是在存在季節性和趨勢變化的情況下。

STL 分解的一個關鍵參數是季節性周期(period),它定義了時間序列中季節性變化的基本周期。如果時間序列是 numpy 的 array 類型,需要手動指定 period;如果是 pandas 的 series 或 dataframe 類型,STL 方法可以根據索引自動推斷出 period。此外,季節性平滑器和趨勢平滑器的長度也是重要的參數,它們必須為奇數,並且需要根據時間序列的特性來選擇合適的值。

在實際套用中,STL 分解可以通過 statsmodels 庫中的 STL 方法來實現。例如,可以使用 statsmodels 對航空公司的乘客數據進行分解,並獲取各個分量的結果,從而更好地理解時間序列數據的結構和變化趨勢。