STL (Seasonal-Trend decomposition procedure based on Loess) 为时序分解中一种常见的算法,基于LOESS将某时刻的数据分解为趋势分量(trend component)、周期分量(seasonal component)和余项(remainder component):
STL分为内循环(inner loop)与外循环(outer loop),其中内循环主要做了趋势拟合与周期分量的计算。假定为内循环中第次pass结束时的趋势分量、周期分量,初始时;并有以下参数:
内层循环数,
外层循环数,
为一个周期的样本数,
为Step 2中LOESS平滑参数,
为Step 3中LOESS平滑参数,
为Step 6中LOESS平滑参数。
每个周期相同位置的样本点组成一个子序列(subseries),容易知道这样的子序列共有共有个,我们称其为cycle-subseries。内循环主要分为以下6个步骤:
外层循环主要用于调节robustness weight。然后每一次迭代的内循环中,在Step 2与Step 6中做LOESS回归时,邻域权重(neighborhood weight)需要乘以,以减少outlier对回归的影响。STL的具体流程如下:
为了使得算法具有足够的robustness,所以设计了内循环与外循环。特别地,当足够大时,内循环结束时趋势分量与周期分量已收敛;若时序数据中没有明显的outlier,可以将设为0。
参考:https://www.cnblogs.com/en-heng/p/7390310.html