摘要
STL是一种把时间序列分解为趋势项(trend component)、季节项(seasonal component)和余项(remainder component)的过滤过程。
STL有一个简单的设计,它包含了loess平滑法的一系列应用;这个简单的设计允许对过程的属性进行分析,也可以实现快速计算,即使对于长时间的时间序列、以及大量的趋势和季节性的平滑,也可以进行快速计算。
STL的其它特点是:
1. 关于季节性和趋势平滑的量,这是一种几乎连续的方式,从非常少量的平滑到非常大量的平滑;
2. 稳健的估计趋势项和季节项,而不会被数据中的异常行为扭曲;
3. 可以指定季节项的周期为采样时间间隔任意大于一的整数倍;
4. 可以分解有缺失值的时间序列;
关键词:季节调整;时间序列;loess
序言
STL是一种把时间序列分解为三个部分:趋势项(trend component)、季节项(seasonalcomponent)和余项(remainder component)的过滤程序。图1是一个示例:
第一个面板是夏威夷的茂纳罗亚太阳天文台观测到的每一天大气中二氧化碳的平均测量值,
第二个面板是趋势项:数据的低频变化,同时在水平方向上市非平稳,长期的变化;
第三个面板是季节项:频率的变化是或者接近季节频率,在本示例中周期是一年。
第四个面板是余项:是除了季节性和趋势项的变化。
假定分别用Yv, Tv,Sv,Rv分别代表数据,趋势项、季节项和余项,v的范围为0到N,那么Yv = Tv+ Sv+Rv
图1是由作为世界政府项目监控二氧化碳的浓度的一部分的美国国家海洋和大气管理局(NOAA)测量的。测量的时间跨度为1974年4月12号到1986年12月31日。我们删除了所有的2月29日,假定2月29日不存在,目的是为了使一个周期等于365天;所以删掉了2月29号的数据,跨度为4609天。在这4609天中,有416天的数据是缺失的,所以总共有4193个二氧化碳测量值。
我们STL的目标是开发一个分解过程和一个计算机实现工具,使其满足如下相互依赖的条件:
1. 简单的设计和简单的使用方式;
2. 灵活的指定趋势项和季节项的变量个数;
3. 指定季节项一个周期的观察数量为任意大于一的整数;
4. 分解有缺失值的时间序列的能力;
5. 趋势项和季节项的稳健性,不会被数据中短暂的异常行为扭曲数据;
6. 简单的计算实现,以及快速计算能力,甚至对于长时间的时间序列可以快速计算。
STL由一系列平滑操作组成,每一个平滑操作都有例外,STL使用同样的平滑器:局部权重回归,或者loess。在第二章,我们将会讨论loess,然后给出STL的过渡。
数据据分析师在做STL在的时候有许多参数必须设定。在第三章,讨论了如何设定它们。对于一些参数,可以使用预先设定的值,但是对于另外一些参数的设定必须根据数据的属性来设定;文章将会给出一些诊断方法来帮助数据分析师做这些决策;
计算是一个关键的因素。为了达到尽可能广泛的适用范围,计算机程序实现季节趋势的分解过程必须很快,甚至对于图1的长时间的时间序列也必须很快实现,并且计算机程序应该有简单,模块化的结构。第四章讨论了STL的实现。
STL的设计和实际中参数的设定都是基于时间序列变量一部分变为季节项另一部分变为趋势项的理解。这个理解来自于第五章中特征值和频率响应分析。
第六章对以下的一些主题展开了讨论:实际中STL参数选择的总结;STL重要特征的回顾;用两个例子展现了STL的设计可以得到易于修改易于到达其它目标;把STL和一个时间序列模型结合,得到置信区间;与X-11的对比;如何获取实现STL公共的Fortran代码
第二章、STL的定义
在这章,我们将会讨论Loess平滑法和STL操作。我们的目的是给出细节的简单的描述;各方面的理由将在后面的章节给出
2.1 Loess
假设xi和yi分别(i = 1 to n)是自变量和因变量。Loess(locally weighted regression,局部加权回归)回归曲线,g(x),相当于是对于x,y的一个平滑,g(x)对于任何自变量都可以计算。这就意味着,loess回归不仅仅只能计算xi;正如我们所见,这是一个STL一个重要的特征——可以直接处理缺失值和对季节性去趋势化。事实上,loess可以作为一个函数,这个函数可以对任意的自变量来平滑y,但是对于STL,只需要一个独立变量。
g(x)的计算方法如下:对于一个正整数q,目前假设q小于n,q值代表与x最接近的q个点,并且每一个点xi根据它与x的距离给出一个邻近权重。假设λq(x)指的是xi距离x第q个远的距离。让W等于三次方的方程: