STL(Seasonal and Trend decomposition using Loess)分解是一種用於時間序列數據的分析方法,它將時間序列數據分解為趨勢項、季節項和殘餘項。這種方法基於Loess(Local Regression, Local Weighting, or LOcally WEighted Scatterplot Smoothing),即局部加權回歸散點平滑法。
STL分解的原理涉及兩個主要的循環:內循環和外循環。內循環包括以下步驟:
去趨勢(Detrending),即從數據中減去當前趨勢分量的估計值。
周期子序列平滑,使用Loess對每個周期內的子序列進行平滑處理。
對平滑後的周期子序列進行低通濾波處理。
去除平滑周期子序列的低通量,得到季節項。
去周期(Deseasonalizing),即從數據中減去季節項分量。
外循環則引入了一個穩健性權重項,以控制數據中異常值的影響。這個權重項會在內循環的下一個階段中被考慮進去。趨勢分量和季節分量都是在內循環中得到的。由於在每個截口中進行平滑,季節項在重排後可能無法保證相鄰時段的平滑性,因此還需要進行季節項的後平滑,這個後平滑是基於局部二次擬合的,並且不需要在Loess中進行穩健性疊代。
STL分解的參數包括季節性周期(period)、季節性平滑器的長度(season)、趨勢平滑器的長度(trend)等。這些參數的選擇會影響分解的結果,例如,季節性周期通常可以根據數據的類型和特性來確定,而趨勢平滑器的長度通常要大於季節性周期的1-1.5倍。