可以使用什么方法来检测数据中的季节性?

机器算法验证 时间序列 季节性
2022-02-09 00:49:53

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

4个回答

在任何常规数据系列中找到周期性的一个非常好的方法是在去除任何整体趋势后检查其功率谱。(当总功率归一化为标准值时,这非常适合自动筛选,例如统一。)初步趋势去除(以及可选的差分以去除序列相关性)对于避免与其他行为混淆的时期至关重要。

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

例如,考虑这个(模拟的)残差时间序列,该序列来自为期一年的每日测量(365 个值)。

残差系列

价值在0 美元左右波动,没有任何明显的趋势,表明所有重要趋势都已被删除。波动看起来是随机的:没有明显的周期性。

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

残差系列,填充为 0

如果你仔细观察你可能能够辨别出出现 11 到 12 次的嘈杂但重复的模式。高于零值和低于零值的较长序列至少表明存在一些正自相关,表明该序列并非完全随机。

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

周期图

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

是时候揭示这些数据是如何创建的了。

数据分解为信号加噪声

这些值由两个正弦波的总和生成,一个频率为 12(平方幅度 3/4),另一个频率为 52(平方幅度 1/4)。这些是周期图中检测到的尖峰。它们的总和显示为粗黑色曲线。然后添加方差为 2 的 Iid Normal 噪声,如从黑色曲线延伸到红点的浅灰色条所示。这种噪声在周期图的底部引入了低水平的摆动,否则它只会是一个平坦的 0。值的总变化中有三分之二是非周期性和随机的,这非常嘈杂:这就是它的原因仅通过查看点很难分辨出周期性。尽管如此(部分是因为有太多数据)用周期图找到频率很容易,结果也很清楚。

计算周期图的说明和好的建议出现在Numerical Recipes网站上:查找“使用 FFT 进行功率谱估计”部分。 R周期图估计的代码这些插图是在Mathematica 8 中创建的;周期图是用其“傅立叶”函数计算的。

这是一个使用新泽西州一个城市的月度失业救济申请记录数据的示例(来自 Stata,只是因为我最初分析了这些数据)。 季节性 ACF

线的高度表示变量与其自身滞后的相关性;灰色区域让您了解这种相关性是否显着(此范围仅供参考,并不是测试显着性的最可靠方法)。如果这种相关性很高,则有证据表明存在序列相关性。请注意出现在周期 12、24 和 36 周围的驼峰。由于这是月度数据,这表明当您查看恰好 1、2 或 3 年前的周期时,相关性会变得更强。这是每月季节性的证据。

您可以通过对表示季节性成分的虚拟变量(此处为月份虚拟变量)的变量进行回归来统计测试这些关系。您可以测试这些假人的联合显着性以测试季节性。

这个过程不太正确,因为测试要求误差项不是序列相关的。因此,在测试这些季节性虚拟变量之前,我们需要去除剩余的序列相关性(通常包括变量的滞后)。可能存在脉冲、中断和所有其他时间序列问题,您还需要纠正这些问题才能从测试中获得适当的结果。你没有问这些,所以我不会详细介绍(另外,关于这些主题有很多简历问题)。(只是为了满足您的好奇心,这个系列需要月份虚拟变量、自身的一个滞后和一个移位组件来消除序列相关性。)

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

如果您想发布您的世界中的示例系列,我很乐意为您和列表提供导致检测季节性结构的全面分析。

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

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

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