• STL的算法:
    框架:给定一个周期内包含的点数,首先将周期回归出来,然后再将原始序列和周期分量做一次减法,得到去周期的分量(包含余项噪声),最后对该分量利用平滑进行去噪,得到趋势分量。余项分量则是用原始序列-周期分量-趋势分量。
    学术版本:在实际设计算法的时候,为了追求精准、鲁棒,设计了多次循环的算法来计算得到更准确的周期分量、趋势分量、余项分量。

  • 2.1 LOESS回归:
    STL主要依赖LOESS方法来做回归,本小节首先介绍一下该非参数回归方法。
    LOESS为局部加权非参数回归,做数学和算法相关工作的同学都知道“局部”的意思,它就是当你想回归一个点时,在该点的周围画一个圆,将邻居样本圈进来,之后利用邻居样本的加权求和得到目标点的回归值。更重要的是,回归每一个目标点的时候,对邻居样本的权重都不相同,这个就是局部的意思,每个点都不一样。那么非参数呢?它指的是没有假设数据样本应该服从什么样的关系,例如一般我们做回归会假设y=3x 2这样的因变量-自变量关系,但是在非参数回归中,是没有这个的,它“局部”的回归得到目标点的回归值,不存在一个参数(如y=3x 2中的3)应用全部的情况。
    具体的,LOESS是怎么做的呢?首先假设有一个序列x1,x2,...xn,回归一个值x6时,
    (1)以x6为中心确定一个区间,宽度q可灵活掌握;
    (2)定义区间内邻居的权重,权重由权数函数确定;

    (3)区间内的散点拟合直线或曲线,具体取决于参数d(d=1意味着直线,d=2意味着二阶)
    (4)拟合之后得到目标点的值。
    对序列中的每一个点都做这样的拟合,拟合后的数据就是loess回归的结果。

    2.2 STL分解:
    (1)首先展示STL的算法: