1

感谢您花时间阅读这个问题。我有一些一维数据要在 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 背后的数学原理。谁能告诉我我是对还是错,以及我的问题是否有更好的解决方案?

谢谢!

4

1 回答 1

2

首先,让我声明,这些方法都不适用于一维数据

对于一维数据,请使用数据可以排序的方法。例如,使用基于核密度估计的方法。

术语“聚类分析”通常仅用于多维数据。在一维上,有很多更好的方法。另请参阅“自然中断优化”,但恕我直言,您应该使用内核密度估计:在 KDE 中以局部最小值拆分数据。

现在到你的实际问题。最有可能的问题是您正在...传递一维数据。这被解释为一个记录,具有d维度,因此该方法抱怨只有一个样本。您可以通过首先转换您的记录来获得成功。

随着您添加零记录的技巧,结果很可能会变得虚假。您可能正在对具有 1 个包含您的数据的向量和 3 个全为零的向量的数据集进行聚类...

但最后,无论如何,你不应该在这里使用这些方法!使用可以对数据进行排序的方法。

于 2013-05-21T12:08:59.300 回答