2011-09-28 102 views
0

我有一系列的數據,我將使用集羣,我想看看這些數據是如何隨着時間的推移而聚集的。隨着時間的推移集羣R

因此,基本上每個人都是從一個組開始的,因爲他們什麼都沒做,但隨着時間的推移,他們會根據他們的行爲將他們分成不同的組,並且我想跟蹤它。

我一直在尋找一種方法在R中執行此操作(用Python中的某些數據預處理),並以圖形方式表示它。我現在認爲做這件事的唯一方法是將時間段打破3周,然後將這3週中的每一週都集中起來。唯一的問題是我真的不知道如何跟蹤那些在3周內集羣之間的人員移動(例如,看看是否有人採取行動將他們從組A移到組B)。我可以把它放在一個表格中,但是以圖形方式顯示它會很好(比如隨着時間的推移或者某個東西在集羣之間出現紅線)。

關於如何做到這一點的任何想法將不勝感激,或者如果有一種很好的方式跟蹤隨着時間的推移集羣,我一直想念,請指向我。

+0

退房'kmeans.ani()'的'animation'包。它應該給你一個關於如何考慮動畫聚類的想法。 – Ramnath

+1

這聽起來像某種馬爾可夫或半馬爾可夫過程。您需要更明確地定義「隨着時間的推移,他們將根據他們的行爲將不同的事情放入不同的組中」,從而更明確地定義您的意思。這些「不同的小組」是否預先指定? –

回答

4

我已經使用MfuzzR集羣時間過程的微陣列數據集。 Mfuzz使用「軟聚類」。基本上,個人可以出現在多個組中。下面是一些模擬數據爲例:

library(Mfuzz) 

tps = 6;cases = 90 
d = rnorm(tps*cases, 1) ##Poisson distribution with mean 1 
m = matrix(d, ncol=tps, nrow=cases) 

##First 30 individuals have increasing trends 
m[1:30,] = t(apply(m[1:30,], 1, cumsum)) 

##Next 30 have decreasing trends 
##A bit hacky, sorry 
m[31:60,] = t(apply(t(apply(m[31:60,], 1, cumsum)), 1, rev)) 

##Last 30 individuals have random numbers from a Po(1) 

##Create an expressionSet object 
tmp_expr = new('ExpressionSet', exprs=m) 

##Specify c=3 clusters 
cl = mfuzz(tmp_expr, c=3, m=1.25) 
mfuzz.plot(tmp_expr,cl=cl, mfrow=c(2, 2)) 

這給:

enter image description here

相關問題