感谢您花时间阅读此问题。我有一些一维数据要在R中聚类。基本hclust
命令工作正常。但是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背后的数学。任何人都可以告诉我,我是对还是错,如果我的问题有更好的解决方案吗?
谢谢!
答案 0 :(得分:2)
首先,让我说明这些方法都不适用于一维数据。
对于一维数据,请使用利用数据排序的方法。例如,使用基于核密度估计的方法。
术语“聚类分析”通常仅与多维数据一起使用。在一维中,有更好的方法。另请参阅“自然中断优化”,但恕我直言,您应该使用内核密度估算:将数据拆分为KDE中的本地最小值。
现在回答你的实际问题。最有可能的问题是你是......传递1维数据。这被解释为一个记录,d
维度,因此该方法抱怨只有一个样本。您可以先成功转置您的记录。
随着您添加零记录的破解,结果很可能变成虚假。您可能正在聚类一个数据集,该数据集包含1个包含数据的向量,以及3个全部为零的向量...
但最后,你不应该在这里使用这些方法!使用利用可以对数据进行排序的方法。