2013-11-27 110 views
2

我在R中使用聚类时间序列时遇到问题。 我搜索了很多并没有找到符合我的问题的东西。R中的聚类时间序列

我做了时间序列的STL分解。 趋势分量位于64列的矩阵中,每个系列一个。 现在我想要将这些系列聚类在同组中,涉及曲线形状和及时移位。我发现了一些暗示这些方面之一但不是两者的功能。

首先,我试图计算距离矩阵与dtw距离,所以我 找到基于值的集群,并inply时移,但没有时间序列的形状。在此之后,我尝试了一些基于相关性的聚类,但随后我们没有及时转移 ,结果不满足我的说法。

是否有一个功能可以覆盖我的问题,或者我自己建立一些东西 。我感谢各种帮助,经过两天的教程和例子我总是没有受到启发。我希望我能够向你解释这个问题。

我附上了一张照片。在这里您可以看到一些示例时间序列。 在那里你可以看到问题。中间的两个系列被设置为一个簇, ,尽管上部和底部的一个与中间的一个具有相同的形状。

enter image description here

+1

如果你不想把价值考虑,也许你应该试着计算DTW距离之前,这些中心系列? 你试过'dtw'包吗? – BartekCh

+0

是的,我试过dtw。我不知道集中系列将 扭曲的结果。这些值是每100人的相对价值,所以适应性就在那里。 – Logi

+0

好吧,也许它会,但是如果你想根据它们的行为方式对时间序列进行聚类,那么你必须以某种方式消除这些值的巨大差异,而集中是实现它的一种方式。这只是我的想法,我不敢确定,但肯定会尝试:) – BartekCh

回答

0

您可以使用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