1

R で hclust 関数を使用して階層的クラスタリングを実行する場合。最終的な合流の高さはどうやってわかりますか?

したがって、いくつかのRのデフォルトデータで明確にするために:

hc <- hclust(dist(USArrests))
dendrogram1 = as.dendrogram(hc)
plot(hc)

すべてのクラスタリング情報を含む変数 hc になります。

R クラスタリングの出力

そしてデンドログラム:

Rデンドログラム

樹状図でわかるように、最終的なマージは高さ > 200 (約 300) で発生します。しかし、デンドログラムはどのように知っているのでしょうか? この情報は hc.height 変数にも dendrogram1 変数にもありません。言及された最高のマージは169です。

可変デンドログラム1

dendrogram1 変数にこの情報が含まれていない場合、プロット関数は、300 の高さでマージが発生する必要があることをどのように認識しますか?

デンドログラム R トップマージ

他のアプリケーションでこの数 (+- 300) が必要であり、プロットからそれを読み取るのはまったく非現実的であるため、私はこれを求めています。

喜んで助けてくれる人に前もって感謝します!

4

2 に答える 2

6

これらの値は、次のように計算できますstats::cophenetic()

クラスター化された 2 つの観測値間のコフェネティック距離は、2 つの観測値が最初に 1 つのクラスターに結合されるグループ間非類似度として定義されます。

これにより、例では次のようになります。

sort(unique(cophenetic(hc)))
#  [1]   2.291   3.834   3.929   6.237   6.638   7.355   8.027   8.538  10.860
# [10]  11.456  12.425  12.614  12.775  13.045  13.297  13.349  13.896  14.501
# [19]  15.408  15.454  15.630  15.890  16.977  18.265  19.438  19.904  21.167
# [28]  22.366  22.767  24.894  25.093  28.635  29.251  31.477  31.620  32.719
# [37]  36.735  36.848  38.528  41.488  48.725  53.593  57.271  64.994  68.762
# [46]  87.326 102.862 168.611 293.623
于 2014-09-04T12:24:16.953 に答える
3

@rcsの答えは正しいです。

dendextendパッケージのget_nodes_attr関数を使用して、別の解決方法を示します。

# install.packages("dendextend")
library(dendextend)

dend <- as.dendrogram(hclust(dist(USArrests[1:5,])))
# Like: 
# dend <- USArrests[1:5,] %>% dist %>% hclust %>% as.dendrogram

# The height for all nodes:
get_nodes_attr(dend, "height")

そして、各ノードの高さを簡単に確認できます。

> get_nodes_attr(dend, "height")
[1] 108.85192   0.00000  63.00833  23.19418   0.00000   0.00000  37.17701   0.00000   0.00000

パッケージの詳細については、そのビネットをご覧ください。

于 2015-01-31T09:53:38.090 に答える