【问题标题】:Clustering time series in RR中的聚类时间序列
【发布时间】:2013-12-13 10:59:50
【问题描述】:

我在 R 中对时间序列进行聚类时遇到问题。 我用谷歌搜索了很多,没有找到适合我的问题。

我已经对时间序列进行了 STL 分解。 趋势组件在一个有 64 列的矩阵中,每个系列一个。 现在我想将这些系列聚集在类似的组中,涉及曲线形状和及时移动。我发现一些功能暗示了这些方面之一,但不是两者兼而有之。

首先我尝试用 dtw 距离计算距离矩阵,所以我 根据值找到聚类并推断时间偏移,而不是时间序列的形状。在此之后我尝试了一些基于相关性的聚类,但随后及时转移 我们不被认可,结果不符合我的要求。

是否有一个功能可以解决我的问题或让我建立一些东西 靠我自己。我感谢各种帮助,经过两天的教程和示例,我完全没有灵感。我希望我能很好地向你解释这个问题。

我附上了一张图片。在这里,您可以看到一些示例时间序列。 在那里你可以看到问题。中间的两个系列设置为一个集群, 虽然上部和底部的形状与中间的形状相同。

【问题讨论】:

  • 如果您不想考虑值,也许您应该在计算 dtw 距离之前尝试将这些系列居中?你试过dtw 包吗?
  • 是的,我试过 dtw。我不知道将系列居中会扭曲结果。这些值是每 100 人的相对值,所以适应是存在的。
  • 好吧,也许它会,但是如果你想只根据它们的行为方式对时间序列进行聚类,你必须以某种方式摆脱如此大的值差异,而居中是一种方法.这只是我的想法,我不确定,但肯定会尝试:)
  • 有许多潜在的解决方案,但如果没有示例数据集,我不能推荐任何解决方案。请提供可重现的示例,如here 所述。

标签: r time-series cluster-analysis


【解决方案1】:

你试过 R 包 dtwclust

https://cran.r-project.org/web/packages/dtwclust/index.html

(我刚刚开始探索这个包,但它似乎涵盖了时间序列聚类的很多方面,并且有很多很好的参考资料。)

【讨论】:

    【解决方案2】:

    您可以使用 kml 包。它专门用于纵向数据。你可以咨询它的帮助。它有下一个例子:

    ### Generation of some data
    
    cld1 <- generateArtificialLongData(25)
    
    ### We suspect 3, 4 or 6 clusters, we want 3 redrawing.
    ###   We want to "see" what happen (so printCal and printTraj are TRUE)
    kml(cld1,c(3,4,6),3,toPlot='both')
    
    ### 4 seems to be the best. We want 7 more redrawing.
    ###   We don't want to see again, we want to get the result as fast as possible.
    kml(cld1,4,10)
    

    Example cluster

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-31
      • 2015-07-22
      • 2020-06-15
      • 2018-09-24
      • 2022-01-19
      • 1970-01-01
      • 2018-05-28
      相关资源
      最近更新 更多