- 社会报道
-
季节性的分析才不简单,小心不要在随机数据中也分析出季节性
时间:2018/12/28 17:44:42 作者:王小语 来源:中国培训之家 阅读:534 评论:0雷锋网 AI 科技评论按:这篇文章来自 Automattic 的数据科学家 Carly Stambaugh,她研究了一个看似简单的问题:分析序列数据中的季节性。「季节性」说起来很简单,但是真的分析的时候,你要如何知道你分析出的季节性是切实存在的呢?雷锋网(公众号:雷锋网) AI 科技评论全文编译如下。
最近有人找我帮忙,具体是要某个时间序列中的「季节性」程度如何。听起来仿佛很轻松的样子,对吧?要知道在 Python 的模块包 statsmodels 中就有一个看起来很好用的 seasal_decompose 函数,并且你能在谷歌上很轻易的找到它!但实际上,这事儿却比我预期的要复杂点儿。在这篇文章中,我将分享我在处理这个项目时遇到的一些问题以及我是如何应对的。
在试图找到那些能够量化时间序列受季节性因素影响程度的帖子或论文时,我将遇到的所有例子分为两大类:
• 给出了几行代码,可以生成时间序列分解的可视化。
• 给出了如何移除时间序列中的季节性成分,从而在构建预测模型之前可以先拥有一个稳定的时间序列。
此外,每个例子都以「这是一个季节性趋势的时间序列」开头。所以,当你想去确定一个特定时间序列,它的季节性因素有多大时,这就提供不了什么帮助。
我发现没有任何人写过如何量化时间序列受季节性因素影响的程度。甚至,我还发现了一些与季节指数相矛盾的信息,于是决定继续探索下去。当然了,如果说我继续去寻找这样的信息,我想我最终也能找到些什么。但我偏不继续找,而是决定自己动手进行实验!
系列分解
首先,我将时间序列分解为趋势,季节性和噪声成分。这些成分看起来像这个样子。
这个时间序列有多季节性?ˉ\ _(ツ)_ /ˉ (自上到下:观测数据,趋势分量,季节性分量,残差)
从季节分解分量的周期性来看,乍一看,数据明显是季节性的。但是,在谷歌搜索季节性分解的几个例子中,我遇到的每个季节性成分都显示出周期性。
所以,我制作了一个 0 到 1000 之间随机数据点组成的时间序列,并对其进行了分解。分解以后看起来像这样。
神圣的周期,蝙蝠侠!
它竟然也显示出了周期性!不过,如果仔细查看每个成分中的 y 轴,就能注意到噪声成分在随机时间序列中具有最大范围。
不过,在所讨论的时间序列中,季节性成分的范围比趋势或噪声显然要小得多。
• 趋势范围:2000(3000至5000)
• 季节范围:500(-250至250)
• 噪声范围:2000(-1000至1000)
(我注意到这里的趋势和噪声范围有相同的幅度,但却不知道这意味着什么。如果你知道的话,请毫不吝啬的在评论中分享给我们吧!)
接下来,出于好玩的目的,这里还做了一个完全季节性时间序列的分解。其每年 1 月的值为 100,每月增加 100,直到 12 月达到 1200,并在 1 月再次回落到 100。
纯季节性时间序列。也说得过去吧。
正如你在纯粹由季节性趋势驱动的数据中所预期的那样,趋势和噪声分量是一个常量值0。
考虑到我们的系列看起来更接近随机数据,而不是纯粹的季节性数据,季节性分解如果说会有结果的话,那它似乎将指向一个弱季节性。在此,我对这个结论持怀疑态度,于是决定寻找更多的证据。那么接下来我们就开始使用另一种方法吧!
去趋势算法
这是一个消除趋势依赖的过程,这种依赖可能在时间序列中出现。我使用差分方法来检查数据的趋势依赖性。
假设你有一个数据集,它具有很强的年度季节性趋势。比如:如果你想预测 6 月的价值是多少,看看去年 6 月的价值,你就会得到关于你能预期的信息。
再假设你有一个趋势,它不以周期性的方式波动,而只是增加或减少。这种情况下,如果你想预测自己 6 月份的销售额,就可以通过查看 6 月份之前的月份来获得比只查看去年同期更多的信息。
这两种趋势都可以从时间序列中剔除。在差分中,你基本上是减去最相关的先前值来考虑趋势。
例如,从时间序列中删除一个「向右上方」的趋势,本质上就是将图形在平面上旋转,留下「向右走」,但消掉「向上走」。「去除季节性趋势基本上可以消除图表中的起伏。」时间序列的去趋势通常用于生成一个固定序列,从中可以建立一个预测模型。下面就是从数据集中移除向上向右的趋势的例子。
之前和之后:稳定时间序列
因此,我推断,通过移除特定类型的趋势,并将结果序列与原始序列进行比较,我们可以判断特定序列对原始时间序列的「影响」程度。
下面是每个不同的过程如何影响序列。这其中包含了原始序列的一个图作为参考。
去趋势结果的比较
从这些数据来看,除去每日趋势(或者如上文所说仅仅是趋势组成部分)对原始系列的影响比除去季节性趋势更大。不过,去除季节性趋势也有一些影响。这巩固了我之前的结论;如果数据中有季节性因素,那么与整体趋势相比就显得很弱。
对我而言,这似乎还不足以佐证,所以我又检查了一件事。
自相关函数
在那个周末,我正喝着每月一售的数学啤酒(是的!就是有这么个东西!),我在研究生院的一个朋友建议我研究自相关函数(ACF)。
自相关函数显示了数据集与自身随着时间的推移而变化的版本的关联程度。它计算了许多可能的时间变化的相关性(称为滞后),和表面重复的相关性模式。
回到我们制作的数据集,我们纯季节性时间序列的 ACF 看起来像这样。
ACF非常季节性的时间序列
注意每隔 12 秒出现的尖峰。这意味着,当该变化是 12 个时间段(在我们的例子中是几个月)的倍数时,原始序列和其移位版本之间的相关性最高,表明了每年的季节性趋势。
这些图中的蓝色区域表示这些相关度量的置信区间。因此落在这个锥体之外的尖刺不太可能是偶然的。
牢记这一点之后,再让我们看看随机级数的ACF。
随机生成的时间序列的ACF
在这里,有一些尖峰,但它们都非常牢固地在锥体内,所以这个ACF不支持季节性趋势的存在。
这是我们时间序列的 ACF。
我们时间系列的ACF
这里,我们看到一些类似尖峰的区域,但是其余大多数都在圆锥体内。圆锥体外的尖峰指的是比12小得多的间隔,也就是说,当你把数据从它自身移得更远时,相关性就会降低。在我看来,时间序列的总体趋势比季节趋势对时间序列的影响要大得多。
所以,长话短说,(不好意思,其实说来话长!)我并没有找到压倒性的证据来表明,季节性在我们的序列中扮演了很重要的角色。但尽管我什么也没发现(生活可不就是这样么?让我们勇敢对面这个屡战屡败的事实呗~),我还是认为这是一个非常有意思的分析。你也会常干这种类似的事情吗?
via investigating-seasonality-in-a-time-series-a-mystery-in-three-parts,雷锋网 AI 科技评论编译
雷锋网版权文章,未经授权禁止转载。详情见转载须知。
原文链接:https://www.leiphone.com/news/201811/0AejtMBSYeC91RC7.html
- 本类更新
-
-
01-20施强国际:官方支持!这趟海外投资的车你可要坐稳了!
-
01-20走进1600米海拔,跨越300米高峰,英伦金融启山区助学行动
-
01-20万唯中考庆贺新春 新年贺辞感动千万师生
-
01-20施强教育:每年投入300亿,我们的英语学费都花在哪儿?
-
01-20核桃编程促进东北地区少儿编程普及 获评黑龙江考评中心优秀合作伙伴
-
01-20《京东教育白皮书》今日发布,2020四大业务方向全景呈现
-
01-17爱学习教育集团:AI赋能,让每个孩子爱上学习收获成长
-
01-16法国蒙彼利埃第三大学丨学术研究要遵循五大基本流程
-
01-142019年必须关注的少儿编程10件大事
-
01-13爽提高校智慧食堂在全国开放服务商加盟,与你携手共赢2020!
-
- 本类推荐
- 本类排行
-
-
01-22别找了,你要的“佩奇”就在博实乐碧桂园十里银滩学校!
-
05-28上海源盛国际独家项目:新西兰连锁幼儿园投资良机
-
11-19山木培训 中国式管理之探寻与创举
-
03-25专注互动教学 全方位解析爱普生解决方案
-
04-18“同和公益 善行天下” 同和公益书院落户广西北海
-
12-20ESWI网络学习空间 亮相教育部人人通中小学校长培训
-
07-03详解”预科” – 什么是预科?
-
08-24名副其实的学霸神器,卡西欧E-F800测评
-
08-02悦学机构专注消防培训6年 打造消防培训行业先锋
-
10-18凡骐国际幼托中心在沪开业 品牌微电影发布
-