web-dev-qa-db-ja.com

対称行列を「dist」オブジェクトに変換する方法は?

hclustを使用してデータをクラスター化したい。しかし、distオブジェクトを生成するために「dist()」を使用したくありません。その後、対称行列を距離行列としてhclustに渡すことができないことがわかりました。

対称行列を「dist」オブジェクトに変換する方法は?

25
SolessChong

すでに計算された行列があり、hclustでそれを使用したいようです。 @shadowが言ったように、as.dist(yourMatrix)を使用してdist形式に変換できます。

距離の対称表を考える:

> yourMatrix<-matrix(c(1,2,3,4,2,1,2,1,3,2,1,3,4,1,3,1), nrow=4)
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    2    1    2    1
[3,]    3    2    1    3
[4,]    4    1    3    1
>
>as.dist(yourMatrix)
  1 2 3
2 2    
3 3 2  
4 4 1 3

マトリックスの値が非類似度、または類似度スコアではなく距離メトリックであることを確認してください。

27
JasonRDalton

これが必要ですか? dist(matrix(1:16, nrow=4))

0
geotheory