2013-05-20 65 views
1

感謝您花時間閱讀此問題。我有一些一維數據要在R中集羣。基本的hclust命令工作正常。但pvclust命令,但是,不採取一維數據,並口口聲聲說:使用pvclust集羣一維數據

Error in hclust(distance, method = method.hclust) : 
    must have n >= 2 objects to cluster 

我發現了一個變通,我增加了一些全零行的數據。因此,該數據變爲:

 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
[1,] 7.424 14.251 15.957 1.542 2.451 20.836 13.534 20.003 12.555 10.817 
[2,]  0  0  0  0  0  0  0  0  0  0 
[3,]  0  0  0  0  0  0  0  0  0  0 
[4,]  0  0  0  0  0  0  0  0  0  0 

然後我跑pvclust,和它的工作!

但是我擔心這個解決方案會把pvclust背後的數學問題搞砸了。任何人都可以告訴我我是否正確/錯誤,以及是否有更好的解決方案來解決我的問題?

謝謝!

回答

2

首先,讓我指出這些方法都不適用於一維數據

對於一維數據,請使用一種方法,利用該數據可以是排序。例如,使用基於核密度估計的方法。

術語「聚類分析」通常與僅用於多維數據一起使用。在一維中,有更好的方法。另請參閱「自然休息優化」,但恕我直言,您應該使用核心密度估計:在KDE中以當地最小值分割數據。

現在你真正的問題。最可能的問題是你是......傳遞1維數據。這被解釋爲一個記錄,其中d維度,因此該方法抱怨只有單個樣本。您可能已經成功通過調換您的記錄。

隨着您添加零記錄的攻擊,結果很可能會變成虛假。你可能會聚集一個數據集,它有一個包含你的數據的向量,並且有3個向量都是零...

但是最後你不應該在這裏使用這些方法!使用一種利用您的數據可以排序的方法。

+0

謝謝你的回答!這對我來說很有意義! – Qiyun

+0

順便說一下,你是否也知道這個問題的答案:假設我使用了**內核密度估計**,並將局部最小值作爲一個切分。那麼我可以測試左邊的峯值與右邊的峯值有多大的分離嗎?謝謝! – Qiyun

+0

我並沒有使用KDE - 我只使用多維數據。所以我不知道適合的重要性測試的參考。你需要考慮你的假設是什麼:均勻分佈?那麼你可以使用K-S測試。對於這樣的問題,看看stats.stackexchange.com姐妹網站,它更適合統計問題。 –