次のデータフレームがあるとします。
df <- data.frame(x1 = c(26, 28, 19, 27, 23, 31, 22, 1, 2, 1, 1, 1),
x2 = c(5, 5, 7, 5, 7, 4, 2, 0, 0, 0, 0, 1),
x3 = c(8, 6, 5, 7, 5, 9, 5, 1, 0, 1, 0, 1),
x4 = c(8, 5, 3, 8, 1, 3, 4, 0, 0, 1, 0, 0),
x5 = c(1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0),
x6 = c(2, 3, 1, 0, 1, 1, 3, 37, 49, 39, 28, 30))
そのような
> df
x1 x2 x3 x4 x5 x6
1 26 5 8 8 1 2
2 28 5 6 5 1 3
3 19 7 5 3 1 1
4 27 5 7 8 1 0
5 23 7 5 1 1 1
6 31 4 9 3 0 1
7 22 2 5 4 1 3
8 1 0 1 0 0 37
9 2 0 0 0 0 49
10 1 0 1 1 0 39
11 1 0 0 0 0 28
12 1 1 1 0 0 30
階層的なクラスターを使用して、距離の尺度として相関関係を使用して、これらの12人をグループ化したいと思います。これが私がしたことです:
clus <- hcluster(df, method = 'corr')
そして、これはのプロットですclus
:
これdf
は、実際に私がクラスター分析を行っている69のケースの1つです。カットオフポイントを思いつくために、私はいくつかのデンドグラムを見て、ほとんどの場合に意味のある結果に満足するまでh
パラメーターをいじっていましたcutree
。その数はだったk = .5
。したがって、これが後でグループ化したグループです。
> data.frame(df, cluster = cutree(clus, h = .5))
x1 x2 x3 x4 x5 x6 cluster
1 26 5 8 8 1 2 1
2 28 5 6 5 1 3 1
3 19 7 5 3 1 1 1
4 27 5 7 8 1 0 1
5 23 7 5 1 1 1 1
6 31 4 9 3 0 1 1
7 22 2 5 4 1 3 1
8 1 0 1 0 0 37 2
9 2 0 0 0 0 49 2
10 1 0 1 1 0 39 2
11 1 0 0 0 0 28 2
12 1 1 1 0 0 30 2
ただし、この場合、.5カットオフの解釈に問題があります。私は、ヘルプページを含め、インターネット周りを見て撮影した?hcluster
、?hclust
と?cutree
、ない成功を収めました。私がプロセスを理解するのに最も遠くなったのはこれを行うことです:
まず、マージがどのように行われたかを見てみましょう。
> clus$merge
[,1] [,2]
[1,] -9 -11
[2,] -8 -10
[3,] 1 2
[4,] -12 3
[5,] -1 -4
[6,] -3 -5
[7,] -2 -7
[8,] -6 7
[9,] 5 8
[10,] 6 9
[11,] 4 10
つまり、観測9と11、次に観測8と10、次にステップ1と2(つまり、9、11、8、10の結合)などですべてが始まります。のmerge
値について読むと、hcluster
上記のマトリックスを理解するのに役立ちます。
次に、各ステップの高さを確認します。
> clus$height
[1] 1.284794e-05 3.423587e-04 7.856873e-04 1.107160e-03 3.186764e-03 6.463286e-03
6.746793e-03 1.539053e-02 3.060367e-02 6.125852e-02 1.381041e+00
> clus$height > .5
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
これは、クラスタリングが最後のステップでのみ停止したことを意味し、高さは最終的に.5を上回ります(デンドグラムがすでに指摘しているように、BTW)。
さて、私の質問です:高さをどのように解釈しますか?それは「相関係数の残り」ですか(心臓発作を起こさないでください)?最初のステップ(観測値9と11の結合)の高さを次のように再現できます。
> 1 - cor(as.numeric(df[9, ]), as.numeric(df[11, ]))
[1] 1.284794e-05
また、次のステップでは、観測8と10を結合します。
> 1 - cor(as.numeric(df[8, ]), as.numeric(df[10, ]))
[1] 0.0003423587
しかし、次のステップはこれらの4つの観測を結合することであり、私にはわかりません。
- このステップの高さを計算する正しい方法
- これらの高さのそれぞれが実際に意味するもの。