可以使用哪种方法检测数据的季节性?


56

我想检测收到的数据的季节性。我发现了一些方法,例如季节性子序列图和自相关图,但问题是我不了解如何读取图表,有人可以帮忙吗?另一件事是,是否有其他方法可以在有或没有图形的最终结果的情况下检测季节性?


1
您可能会包括难以理解的实际图形。
卡尔

更优选地,可以用于生成“麻烦的” ACF的原始数据。
IrishStat


1
参见:journals.ametsoc.org/doi/abs/10.1175/JCLI-D-10-05012.1 Qian C.,Zu Wu,Cfu和Wang Wang,2011:关于改变厄尔尼诺现象:时变年鉴周期,年际变化和平均状态。J. Climate,24(24),6486-6500

Answers:


70

在任何规则的数据序列中查找周期性的一种好方法是在消除任何总体趋势之后检查其功率谱。(当将总功率归一化为标准值(例如,单位为1)时,这很适合自动筛选。)初步趋势消除(和可选的差分来消除序列相关性)对于避免时间段与其他行为混淆是必不可少的。

功率谱是原始序列的适当平滑版本的自协方差函数的离散傅里叶变换。如果您将时间序列视为对物理波形的采样,则可以估算每个频率中波的总功率中有多少。功率谱(或周期图)绘制了功率与频率的关系曲线。周期性(即重复或季节性模式)将显示为位于其频率处的大峰值。

例如,考虑一年(365个值)的每日测量中的残差(模拟)时间序列。

一系列残差

值在附近波动,没有任何明显的趋势,表明所有重要趋势均已消除。波动似乎是随机的:没有明显的周期性。0

这是同一数据的另一图,旨在帮助我们查看可能的周期性模式。

一系列残差,填充为0

如果您看起来努力,也许可以辨别出11次至12次出现的嘈杂但重复的模式。零以上和零以下值的较长序列至少表明存在一些正自相关,表明该序列不是完全随机的。

这是周期图,显示的频率最高为91(总序列长度的四分之一)。它是用Welch窗口构建的,并已归一化为单位面积(对于整个周期图,而不仅仅是此处显示的部分)。

周期图

功率看起来像“白噪声”(小的随机波动)加上两个明显的尖峰。他们很难错过,不是吗?较大的周期为12,较小的周期为52。因此,该方法已在这些数据中检测到每月周期和每周周期。真的就是全部。要自动检测周期(“季节”),只需扫描周期图(值列表)以获取相对较大的局部最大值。

现在该揭示如何创建这些数据了。

数据分解为信号加噪声

这些值是从两个正弦波的总和中产生的,一个正弦波的频率为12(振幅为平方的3/4),另一个正弦波的频率为52(振幅为平方的1/4)。这些就是检测到的周期图中的峰值。它们的总和显示为黑色粗曲线。Iid然后添加方差2的正常噪声,如从黑色曲线到红色点的浅灰色条所示。这种噪声在周期图的底部引入了低水平的摆动,否则将只是一个平坦的0。值的总变化中,有三分之二是非周期性和随机的,这非常嘈杂:这就是为什么很难仅通过观察点来确定周期性。但是,(部分由于数据太多)可以很容易地找到带有周期图的频率,并且结果很清楚。

有关计算周期图的说明和好的建议,请参见“ 数字食谱”网站:查找有关“使用FFT进行功率谱估计”的部分。 R用于周期图估计的代码。这些插图是在Mathematica 8 中创建的;周期图通过“傅立叶”函数进行计算。


2
假设“消除任何总体趋势之后”是跟腱,因为可能存在许多时间趋势,在您的示例中未包括所有的水平移动。输入序列本质上是确定性的想法在可能的情况下会飞存在季节性和常规的ARIMA结构。由于周期图估计值的向下偏差会导致不重要,因此未经处理的异常一次性值会扭曲任何基于周期图的识别方案。如果过去每周或/或每月的影响在某个时候发生变化,基于周期图的过程将失败
IrishStat

@爱尔兰我认为您的评论可能会有些夸大。查找和处理“异常一次性值”(又称为离群值)是最基本的,因此仅需提及以强调某些时间序列估计量可能对离群值敏感。“本质上是确定性”错误地表达了基本思想:没有人认为存在确定性(通过仿真中的大量噪声证明)。该模拟将确定的周期性信号作为模型并入模型(实际上始终近似),仅用于说明周期图和季节性之间的关系。(续...)
ub

2
是的,季节性变化可能会使周期图(和acf等)模糊,尤其是频率(不太可能)或相位(可能)的变化。我帖子中的参考文献提供了一种解决方案:建议将移动窗口用于周期图估计。这是一门艺术,并且显然存在陷阱,因此,正如您所主张的,很多时间序列分析都将受益于专家的处理。但问题是,是否存在“其他检测季节变化的方法”,不可否认,周期图是一种统计上有效,计算效率高,易于解释的选择。
ub

在我的世界中,使用正弦/余弦是“确定性影响”,就像年度指标一样。拟合任何预先指定的模型会将拟合值限制为用户指定的模式,通常不符合标准。数据应“收听”,以帮助分析人员/高级计算机软​​件有效地区分固定输入和随机输入nb我将ARIMA滞后结构称为随机或自适应“驱动器”,因为拟合值会调整/适应历史变化系列中的。在我看来,利用周期图“超卖”简单的统计模型
IrishStat

2
@whuber重复同一件事可能没有用。但是,也可以将周期图下方的段落固定为说尖峰位于“每年”的频率为“ 12”到“ 52”,而不是“周期”。如果您认为它不太烦人,那么也可以将图固定为“频率”而不是“周期”,这也可能很好。
Celelibi '16

19

这是一个使用新泽西州某城市的原木失业索赔月度数据的示例(来自Stata,仅因为这是我最初分析这些数据所依据的)。 季节性ACF

线条的高度指示变量与变量本身的滞后时间之间的相关性;灰色区域可让您了解此相关性是否显着(此范围仅作为参考,并且不是测试显着性的最可靠方法)。如果此相关性很高,则有串行相关性的证据。请注意在周期12、24和36周围出现的驼峰。由于这是月度数据,因此,当您仔细查看正好1、2或3年之前的周期时,这表明相关性会增强。这是每月季节性的证据。

您可以通过对指示季节性成分的虚拟变量(这里是月份虚拟变量)进行回归来统计地测试这些关系。您可以测试这些假人的共同意义以测试季节性。

此过程不太正确,因为测试要求错误项不能序列相关。因此,在测试这些季节性假人之前,我们需要删除剩余的序列相关性(通常通过包括变量的滞后性)。为了从测试中获得合适的结果,可能还存在一些脉冲,中断以及所有其他时间序列问题,您需要更正这些问题。您没有问这些,所以我将不做详细介绍(此外,关于这些主题的简历问题很多)。(只是为了满足您的好奇心,本系列文章需要一个月的虚拟变量,其自身的一个时滞和一个移位成分来摆脱序列相关性。)


4

季节性会并且确实会随着时间而变化,因此,摘要性措施可能不足以检测结构。人们需要测试ARIMA系数的瞬变性,并且经常更改“季节性假人”。例如,在10年的时间范围内,前k年可能没有六月效应,但是最后10 k年中有六月效应的证据。一个简单的复合六月效应可能并不重要,因为该效应随时间变化并不恒定。以类似的方式,季节性ARIMA分量也可能已更改。应注意包括本地级别转换和/或本地时间趋势,同时确保误差的方差随时间保持恒定。不应评估GLS /加权最小二乘之类的变换或对数/平方根之类的幂变换等。根据原始数据,但基于临时模型的错误。高斯假设与观察到的数据无关,而与模型中的误差有关。这是由于统计检验的基础,该检验使用了非中心卡方变量与中心卡方变量之比。

如果您想发布来自您的世界的示例系列,我将很高兴为您和列表提供详尽的分析,以发现季节性结构。


1

查理的答案很好,这就是我要开始的地方。如果不想使用ACF图,则可以为存在的k个时间段创建k-1个虚拟变量。然后,您可以查看虚拟变量在与虚拟变量(可能还有趋势项)的回归中是否显着。

如果您的数据是每季度一次:如果这是第二季度,则虚拟Q2为1;如果这是第三季度,则为0虚拟Q3为1;如果这是第四季度,则为0虚拟Q4为1,否则为0注意,季度1为基本情况(所有3个虚拟变量均为零)

您可能还需要检查Minitab中的“时间序列分解”-通常称为“经典分解”。最后,您可能想使用更现代的功能,但这是一个简单的起点。


0

我想从IrishStat用户或其他任何我的真实世界示例系列中获得帮助。我正在尝试根据原油期货价格的最近5年产生季节性指数。我已经设法制作了一个可以在这里查看的简单平均季节。

但是,我想复制一个滚动的年度季节性图表(我猜滚动意味着该年的开始和结束是相同的值),并且缩放比例为0到100,如下图所示: 在此处输入图片说明

电子表格中有15年的每日价格水平数据,可以下载。有关如何实现上述目标的示例或任何提示将不胜感激。


-1

我本人对R有点陌生,但是我对ACF函数的理解是,如果垂直线超过顶部虚线或底部虚线之下,则存在一些自回归(包括季节性)。尝试创建正弦向量


拟合正弦/余弦等对于某些物理/电气时间序列很有用,但是您必须了解MSB,模型规范偏差。
IrishStat

1
自回归并不意味着季节性。
詹斯(Jens)2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.