2013-11-27 364 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