Diberikan bingkai data berikut:
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))
Seperti yang
> 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
Saya ingin mengelompokkan 12 orang ini menggunakan kelompok hierarkis, dan menggunakan korelasi sebagai ukuran jarak. Jadi ini yang saya lakukan:
clus <- hcluster(df, method = 'corr')
Dan ini adalah plot dari clus
:
Ini df
sebenarnya salah satu dari 69 kasus yang saya lakukan analisis cluster. Untuk mendapatkan titik potong, saya telah melihat beberapa dendogram dan bermain-main dengan h
parameter cutree
sampai saya puas dengan hasil yang masuk akal untuk kebanyakan kasus. Jumlah itu k = .5
. Jadi ini adalah pengelompokan yang kita miliki setelahnya:
> 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
Namun, saya mengalami kesulitan menafsirkan batas 0,5 dalam kasus ini. Saya telah melihat-lihat Internet, termasuk halaman bantuan ?hcluster
, ?hclust
dan ?cutree
, tetapi tidak berhasil. Yang paling jauh saya memahami proses adalah dengan melakukan ini:
Pertama, saya melihat bagaimana penggabungan dibuat:
> 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
Yang berarti semuanya dimulai dengan bergabung dengan pengamatan 9 dan 11, kemudian pengamatan 8 dan 10, kemudian langkah 1 dan 2 (yaitu, bergabung dengan 9, 11, 8 dan 10), dll. Membaca tentang merge
nilai hcluster
membantu memahami matriks di atas.
Sekarang saya perhatikan ketinggian setiap langkah:
> 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
Yang berarti pengelompokan berhenti hanya pada langkah terakhir, ketika ketinggian akhirnya naik di atas 0,5 (seperti Dendogram sudah menunjuk, BTW).
Sekarang, inilah pertanyaan saya: bagaimana cara menafsirkan ketinggian? Apakah itu "sisa dari koefisien korelasi" (tolong jangan terkena serangan jantung)? Saya dapat mereproduksi ketinggian langkah pertama (bergabung dengan pengamatan 9 dan 11) seperti:
> 1 - cor(as.numeric(df[9, ]), as.numeric(df[11, ]))
[1] 1.284794e-05
Dan juga untuk langkah berikut, yang menggabungkan pengamatan 8 dan 10:
> 1 - cor(as.numeric(df[8, ]), as.numeric(df[10, ]))
[1] 0.0003423587
Tapi langkah selanjutnya melibatkan bergabung dengan 4 pengamatan itu, dan saya tidak tahu:
- Cara menghitung ketinggian langkah ini dengan benar
- Apa sebenarnya arti dari masing-masing ketinggian itu.