Jaccardの共通係数からRでクラスター分析
グループ間の類似度を表す係数に「Jaccardの共通係数」というのがある。
これを元に樹形図を作成したいのだけど、以下でいいのだろうか。
元データは、対角線(同じグループ同士の比較)が1になっている、いわゆるsimilarity matrix。
これをタブ区切りテキストとして保存しておく。
> x<-read.table("sim.txt", header=T, row.names=1) > x [,1] [,2] [,3] [,4] [1,] 1.0 0.9 0.5 0.2 [2,] 0.9 1.0 0.7 0.3 [3,] 0.5 0.7 1.0 0.4 [4,] 0.2 0.3 0.4 1.0
これをdissimilarity matrixに変換したいので、全ての要素が1になっている行列から引き算する。
> i <- matrix(1,4,4) > i [,1] [,2] [,3] [,4] [1,] 1 1 1 1 [2,] 1 1 1 1 [3,] 1 1 1 1 [4,] 1 1 1 1 > d<-i-x > d [,1] [,2] [,3] [,4] [1,] 0.0 0.1 0.5 0.8 [2,] 0.1 0.0 0.3 0.7 [3,] 0.5 0.3 0.0 0.6 [4,] 0.8 0.7 0.6 0.0
これで対角線が0のmatrixに変換できた。
あとは、これでhclust関数を使って群平均法でクラスタリング。plotで表示する。
> hc<-hclust(as.dist(d),method="average") > plot(hc)