如何应对季节性或其他模式变化的时间序列?


22

背景

我正在研究电度表读数的时间序列数据集。系列的长度因米而异-有的我有几年,有的则只有几个月,等等。许多都表现出明显的季节性,并且通常是多层的-在一天,一周或一年之内。

我一直在努力的事情之一就是这些时间序列的聚类。目前,我的工作是学术性的,在我也对数据进行其他分析时,我有一个特定的目标来进行一些聚类。

我做了一些初步工作,计算了各种功能(周末与工作日使用的百分比,不同时间段使用的百分比,等等)。然后,我继续着眼于使用动态时间规整(DTW)获得不同序列之间的距离,以及基于差值进行聚类,并且发现了与此相关的几篇论文。

特定系列的季节性变化会导致我的聚类不正确吗?如果是这样,我该如何处理?

我担心的是,在时间序列中的模式已更改的情况下,DTW获得的距离可能会产生误导。这可能导致不正确的群集。

如果以上不清楚,请考虑以下示例:

例子1

仪表从午夜到晚上8点具有较低的读数,然后读数在接下来的一个小时内急剧增加,从上午9点直到5PM保持较高的读数,然后在接下来的一个小时内急剧下降,然后从6PM直到午夜保持较低的读数。仪表连续数月每天都保持这种模式,但随后变为一天中读数始终保持在恒定水平的模式。

例子2

仪表显示每个月消耗的能量大致相同。几年后,它变成一种模式,在夏季,能源使用量较高,然后恢复到正常水平。

可能的方向

  • 我想知道是否可以继续比较整个时间序列,但是如果模式发生很大变化,可以将它们分开并考虑为一个单独的序列。但是,为此,我需要能够检测到此类更改。另外,我只是不知道这是合适的方法还是处理数据。
  • 我还考虑过拆分数据并将其视为许多单独的时间序列。例如,我可以将每天/米的组合视为一个单独的系列。但是,如果我想考虑每周/每月/每年的模式,则需要做类似的事情。我认为这行得通,但可能会很繁重,如果我找不到更好的方法,我不愿意走这条路。

进一步说明

这些是评论中出现的事情,或者由于评论而我想到的事情,这可能是相关的。我把它们放在这里,这样人们就不必阅读所有内容来获取相关信息。

  • 我正在使用Python工作,但是在R更适合的地方使用了rpy。不过,我不一定要寻找Python答案-如果有人对应该做什么有实际的答案,我很乐意自己找出实现细节。
  • 我有很多工作的“草稿”代码-我已经完成了一些DTW运行,已经完成了几种不同类型的集群,等等。我想我在很大程度上理解了我的发展方向以及我的目标。我真正寻找的是与我在查找距离,运行聚类等之前处理数据的方式有关。鉴于此,我怀疑答案是相同的,无论是通过DTW还是通过更简单的欧氏距离(ED)计算序列之间的距离。
  • 我发现这些论文特别有助于您了解时间序列和DTW,如果需要主题领域的某些背景知识,它们可能会有所帮助:http : //www.cs.ucr.edu/~eamonn/selected_publications.htm

+1非常好的问题,很高兴看到这么多的热情!我认为您可以将您的问题略微弄清楚,因此它更能吸引他人阅读,然后给您答案。
鲁本斯2014年

@Rubens谢谢!今天晚上我回家时,我将对其进行重新处理,我可以看到在其中包含一些有关如何达到这一点以及为什么的更多信息的有用之处。我担心它的时间太长,但是我会把背景分开,然后再问更多问题,以免它变得不可读。
Jo Douglass 2014年

它可能不是一个“纯粹的统计数据”问题,但需要一个纯粹的统计数据答案。您将一直奋斗,直到您可以用纯统计术语来考虑它。
Spacedman 2014年

@Spacedman-我欢迎人们以任何认为是最佳答案的方式来回答问题,同时需要警告的是,如果答案过于依赖公式或对我尚不了解的统计概念的引用,我可能还会有进一步的疑问。
乔·道格拉斯

乔找到您问题的正确答案了吗?我处于同样的情况,需要帮助。谢谢
LSola

Answers:


14

看完您的问题后,我对时间序列聚类动态时间规整(DTW)感到好奇。因此,我进行了有限的搜索,并得出了基本的理解(对我来说)和以下与IMHO 相关的参考集(对您来说)。我希望您会发现这很有用,但请记住,由于对主题的实际方面更感兴趣,因此我有意跳过了研究论文。

资源:


1
其中许多是我一直在寻找的资源-例如,我在第2点和第4点实现了工作的修改版本-因此我们现在可能位于同一页。我所知道的绝大多数都是基于Eamonn Keogh的论文或基于它们的文章。但是这里有些我还没有读过,关于自行车共享时间序列聚类的文章很有趣-谢谢!我没有看到任何能具体回答我的问题的东西,但是如果我在阅读时错过了一些东西,请务必指出。
Jo Douglass 2014年

1
另外,如果您仍然觉得这很有趣,那么Keogh的论文确实值得一读。考虑到专注于使用许多数据集,并且提供了足够的信息供其他人重新创建所有实验,它们非常易于阅读且非常实用。最近的一个很有趣,那就是当我被问题搁置一旁时,我正在经历的事情。cs.ucr.edu/~eamonn/selected_publications.htm
Jo Douglass

1
@JoDouglass:不客气!我不打算直接回答您的问题(由于我对该主题的了解有限),但希望它会有所帮助,事实就是如此。感谢您的宝贵意见和参考-我将浏览这些论文并尝试获得更好的主意。有太多东西要学,这令人不知所措。
Aleksandr Blekh

1
压倒性的是对的,我踢了一段时间选择这个话题!不过,我感觉自己要到达那里-而且学习真的很有趣。我已经完成了许多工作,并且将其作为我需要做的工作的粗略版本,我认为这更多的是关于在现在通过模型运行数据之前弄清楚如何处理我的数据。该自行车共享链接对我来说很有趣,因为这是自阅读我最近提到的Keogh论文以来我第一次看到讨论时间序列的平均值。
乔·道格拉斯

1
@JoDouglass:当我说“压倒性的”时,我指的是整个数据科学领域(特别是AI / ML和统计)。我还没有找到一种资源,它提出了一个高层次的各种讨论的方法和/或方法主题的,集成到一个综合性的,但吝啬的框架
Aleksandr Blekh 2014年

4

如果您只想获取季节性模式,请研究自相关。如果您正在寻找一个可以学习季节性模式并据此做出预测的模型,那么Holt-Winters是一个不错的开始,而ARIMA则是一个很好的跟进对象。 这里[PDF]是让我掉在地上的教程。


这项工作(目前)是学术性的,而不是纯粹实用的。我可能会在很晚或将来进行一些预测,但是现在我对探索过去的数据更感兴趣。聚类本身就是一个目标,也是我想要探讨的一些想法。
乔·道格拉斯

抱歉,过早按下Enter键。我在某种程度上已经研究了自相关,并在整个数据集上运行了自相关,但是对我来说我还不清楚我能从中得到什么。数据非常嘈杂。季节性模式有时在可视化上很明显,但时间却不精确-因此我可能正在寻找类似的模式,但并不是按好的时间表进行。有人告诉我,在这种数据上自相关可能会出现问题,但很高兴再次查看其中是否有价值。我不想只是找到季节性,但了解它是一个目标。
乔·道格拉斯

至少要遍历该教程(至少包括2.5)。它使用R,这对您的学术环境特别有用。它会教您自相关,听起来就像您要查找的内容(因为您不知道所要查找的内容,或者数据实际上太嘈杂,所以无法确定它是否不合适)。如果问题是噪声,则指数平滑是解决此问题的一种方法,这将作为霍尔特-冬天模型的一部分进行教授。即使所有这些都不能给您答案,也一定会使您的下一步工作变得更加清晰。
TheGrimmScientist 2014年

我已经通读了本教程,但是大部分内容都是我已经知道的。我实际上是在Python中工作,对于切换到R的事情我有点过头了,尽管我打算在某个时候抓取rpy以防万一我在任何Python库中都找不到某些东西。我已经重写了我的问题,以防万一有帮助-就像我说的那样,集群本身就是一个目标,我并没有寻求一个完全不同的方向。恐怕教程不会不能真正回答我的问题。
乔·道格拉斯
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.