1

この質問を読んでくれてありがとう。R でクラスター化する 1 次元データがいくつかあります。基本的なhclustコマンドは正常に機能します。ただし、pvclustコマンドは 1 次元データを使用せず、次のように言い続けます。

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

まず最初に、これらのメソッドはいずれも 1 次元データを対象としていないことを述べておきます。

1 次元データの場合は、データがソートできることを利用した方法を使用してください。たとえば、カーネル密度推定に基づく方法を使用します。

「クラスター分析」という用語は、通常、多次元データのみで使用されます。一次元では、はるかに優れた方法があります。「自然中断の最適化」も参照してください。ただし、私見では、カーネル密度推定を使用する必要があります。KDE の極小値でデータを分割します。

今あなたの実際の質問に。おそらく問題は、あなたが... 1次元データを渡していることです。これは、ディメンションを持つ 1 つのレコードdとして解釈されるため、メソッドは 1 つのサンプルしかないことについて不平を言います。最初にレコードを転置することで成功する場合があります。

ゼロ レコードを追加するというハックにより、結果が偽物になる可能性が高くなります。おそらく、データを含む 1 つのベクトルと、すべてゼロの 3 つのベクトルを持つデータセットをクラスタリングしています...

しかし、結局のところ、とにかくここでこれらのメソッドを使用するべきではありません! データをソートできることを利用する方法を使用してください。

于 2013-05-21T12:08:59.300 に答える