1、引言
seasonal-trend decomposition procedures based on loess (STL)就是时序分解中一种常见的算法,基于LOESS将某时刻的数据Yv分解为趋势分量(trend component)、季节周期分量(seasonal component)和剩余分量(remainder component),如下式所示,这种方法是Cleveland于1990年在论文:STL: A seasonal-trend decomposition procedure based on loess中提出的。
Yv=Tv+Sv+Rv v=1,⋯,N
2、各分量详解
- 趋势分量:这里指时间序列的大体趋势,比如整体上升趋势,或先增加后降低的整体趋势
- 季节周期分量:以一定的时间为固定周期,呈现循环的特性
- 其余分量:在时间序列除上述两种分量的其余分量,这种分量一般在以不固定周期不断震荡,有时可能出现奇异值
Yv=Tv+Sv+Rv v=1,⋯,N
其中St为季节周期分量,Tt为趋势分量,Et为其余分量
先看一下原论文中的图:
下面通过2002年到2014年某物品价格举例:
3、分解步骤
- 1、去趋势(Detrending),减去上一轮结果的趋势分量,Yv−T(k)v,T(k)v,k为迭代次数,一般将初始值T(0)取0
- 2、 周期子序列平滑(Cycle-subseries smoothing),用LOESS (q=n(s), d=1)对每个子序列做回归,并向前向后各延展一个周期;平滑结果组成temporary seasonal series,记为C(k+1)v,v=−n§+1,⋯,−N+n§;
- 3、周期子序列的低通量过滤(Low-Pass Filtering),对上一个步骤的结果序列C(k+1)v依次做长度为n§、n§、3的滑动平均(moving average),然后做LOESS (q=nn(l), d=1)回归,得到结果序列L(k+1)v,v=1,⋯,N;相当于提取周期子序列的低通量;
- 4、去除平滑周期子序列趋势(Detrending of Smoothed Cycle-subseries),S(k+1)v=C(k+1)v−L(k+1)v
- 5、去周期(Deseasonalizing),减去周期分量,Yv−S(k+1)v;
- 6、趋势平滑(Trend Smoothing),对于去除周期之后的序列做LOESS (q=nn(t), d=1)回归,得到趋势分量T(k+1)v。