R
R中的時間序列“聚類”
我有一組時間序列數據。每個系列都涵蓋同一時期,儘管每個時間系列中的實際日期可能並不完全“排列”。
也就是說,如果將時間序列讀入二維矩陣,它看起來像這樣:
date T1 T2 T3 .... TN 1/1/01 100 59 42 N/A 2/1/01 120 29 N/A 42.5 3/1/01 110 N/A 12 36.82 4/1/01 N/A 59 40 61.82 5/1/01 05 99 42 23.68 ... 31/12/01 100 59 42 N/A etc
我想編寫一個 R 腳本,將時間序列 {T1, T2, … TN} 分成“家庭”,其中一個家庭被定義為一組“傾向於相互同情”的系列。
對於“聚類”部分,我需要選擇/定義一種距離度量。我不太確定如何解決這個問題,因為我正在處理時間序列,並且可能在一個間隔內以同情的方式移動的一對系列在隨後的間隔內可能不會這樣做。
我相信這裡有比我更有經驗/更聰明的人,所以我將不勝感激任何建議,關於使用什麼算法/啟發式來測量距離以及如何使用它來對時間序列進行聚類的想法。
我的猜測是,沒有一種既定的穩健統計方法可以做到這一點,所以我很想看看人們如何處理/解決這個問題——像統計學家一樣思考。
在時間序列數據庫的數據流和挖掘中,一種常見的方法是將序列轉換為符號表示,然後使用相似度度量,例如歐幾里得距離,對序列進行聚類。最流行的表示是 SAX (Keogh & Lin) 或更新的 iSAX (Shieh & Keogh):
上面的頁面還包含對距離度量和聚類的引用。Keogh 和工作人員正在從事可重複的研究,並且非常樂於發布他們的代碼。所以你可以給他們發郵件問問。我相信他們傾向於在 MATLAB/C++ 中工作。
最近有一個嘗試生成 Java 和 R 實現:
我不知道它走了多遠——它是為尋找主題而設計的,但是,根據他們已經走了多遠,它應該有必要的部分,你需要把一些東西放在一起以滿足你的需要(iSAX 和距離指標:因為這部分對於聚類和主題發現是常見的)。