Analisis gerombol (cluster analysis) adalah sebuah teknik statistik yang digunakan untuk mengelompokkan objek atau data ke dalam kelompok-kelompok (gerombol atau cluster) berdasarkan kesamaan karakteristik atau atribut tertentu yang diperoleh dari peubah-peubah penciri yang ada. Tujuan utama dari penggerombolan adalah untuk mengidentifikasi pola atau struktur dalam data yang memungkinkan objek-objek dalam kelompok memiliki kesamaan yang tinggi dan sebaliknya memiliki perbedaan yang tinggi antara kelompok-kelompok yang berbeda.
Konsep dasar dalam penggerombolan adalah mengukur sejauh mana
objek-objek dalam data mirip satu sama lain menggunakan dengan ukuran
kesamaan atau jarak. Ukuran ini dapat berbeda tergantung pada metode
pengelompokan yang digunakan. Jarak antara 2 objek a dan
b dinotasikan dengan d(a,b), di mana:
d(a,b) ≥ 0)d(a,a) = 0)d(a,b) = d(b,a))d(a,c) ≤ d(a,b) + d(b,c))Beberapa konsep jarak yang sering dipakai antara lain:
Jarak Euclidean : mengukur jarak antara dua titik berdimensi p, di mana biasanya digunakan ketika data berdimensi rendah.
\(d(a,b) = \sqrt{\sum_{i=1}^p{(a_i - b_i)^2}}\)
Jarak Manhattan : dikenal sebagai jarak L1, jarak taksi, atau jarak city-block, mengukur jarak antara dua titik sebagai jumlah perpindahan vertikal dan horizontal yang diperlukan untuk bergerak dari satu titik ke titik lainnya. Jika ingin mengurangi dampak pencilan pada data, maka jarak ini dapat dipilih.
\(d(a,b) = \sum_{i=1}^p{|a_i - b_i|}\)
Jarak Chebyshev : mengukur jarak maksimum antara dua titik dalam semua dimensi.
\(d(a,b) = (\max_{i=1}^p{|a_i - b_i|})\)
Jarak Minkowski : merupakan generalisasi dari jarak Euclidean dan Manhattan.
\(d(a,b) = (\sum_{i=1}^p{|a_i - b_i|^p})^{1/p}\)
Jarak Hamming : Jarak Hamming digunakan untuk data kategorikal atau biner. Ini menghitung jumlah atribut yang berbeda antara dua objek. Jarak Hamming biasanya digunakan dalam pengelompokan data seperti data teks atau data genetik.
Jarak Mahalanobis : mempertimbangkan kovariabilitas antara peubah, di mana jarak ini berguna saat peuabah-peubahnya saling berkorelasi.
\(d(a,b) = \sqrt{(\mathbf{a} - \mathbf{b})' \mathbf{S}^{-1}(\mathbf{a} - \mathbf{b})}\)
Ada tiga jenis teknik penggerombolan, sebagai berikut:
K-Means adalah salah satu metode pengelompokan yang paling populer.
Tujuannya adalah membagi objek ke dalam k gerombol yang
telah ditentukan sebelumnya, di mana k adalah jumlah
gerombol yang diinginkan. Algoritma K-Means mencari pusat
(centroid) kelompok yang optimal dengan cara mengoptimalkan
jarak rata-rata antara anggota kelompok dan pusat kelompok. Objek-objek
kemudian ditempatkan dalam kelompok terdekat (berdasarkan jarak
Euclidean atau metrik jarak lainnya) ke pusat kelompok. Kelebihan metode
ini adalah efisiensi dan kemudahannya.
K-Means rentan terhadap kehadiran outlier, yang dapat memengaruhi lokasi pusat kelompok. Untuk mengatasi ini, mungkin perlu mengidentifikasi dan mengatasi outlier sebelum atau setelah menjalankan K-Means. K-Means dilakukan dengan mengikuti prosedur berikut:
#install.packages("factoextra")
library("factoextra")
## Warning: package 'factoextra' was built under R version 4.3.2
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(readxl)
data_mall <- read_excel("D:/Kuliah S1 Statistika/Semester 5/TPG/data UAS_APG_2023.xlsx")
head(data_mall)
## # A tibble: 6 × 11
## No `Kab/Kota` SI SP SKL SPT SSP SPL SB SPN Akreditasi
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
## 1 1 Kabupaten Ba… 100 100 79 92.5 82.5 100 100 100 A
## 2 2 Kabupaten Ba… 76.7 85 73 66.2 64.2 81.2 72 78.8 B
## 3 3 Kabupaten Sl… 96.7 92.5 94 80 93.3 98.8 95 86.2 A
## 4 4 Kabupaten Sl… 93.3 82.5 81 92.5 91.7 91.2 96 90 A
## 5 5 Kabupaten Sl… 78.3 82.5 91 96.2 88.3 88.8 95 82.5 A
## 6 6 Kabupaten Sl… 91.7 92.5 93 90 75.8 95 86 85 A
str(data_mall)
## tibble [142 × 11] (S3: tbl_df/tbl/data.frame)
## $ No : num [1:142] 1 2 3 4 5 6 7 8 9 10 ...
## $ Kab/Kota : chr [1:142] "Kabupaten Bantul" "Kabupaten Bantul" "Kabupaten Sleman" "Kabupaten Sleman" ...
## $ SI : num [1:142] 100 76.7 96.7 93.3 78.3 ...
## $ SP : num [1:142] 100 85 92.5 82.5 82.5 92.5 85 80 60 82.5 ...
## $ SKL : num [1:142] 79 73 94 81 91 93 75 85 68 89 ...
## $ SPT : num [1:142] 92.5 66.2 80 92.5 96.2 ...
## $ SSP : num [1:142] 82.5 64.2 93.3 91.7 88.3 ...
## $ SPL : num [1:142] 100 81.2 98.8 91.2 88.8 ...
## $ SB : num [1:142] 100 72 95 96 95 86 89 78 77 92 ...
## $ SPN : num [1:142] 100 78.8 86.2 90 82.5 ...
## $ Akreditasi: chr [1:142] "A" "B" "A" "A" ...
data_mall <- data_mall[,c("SI","SP","SKL", "SPT", "SSP", "SPL","SB", "SPN")]
head(data_mall)
## # A tibble: 6 × 8
## SI SP SKL SPT SSP SPL SB SPN
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 100 100 79 92.5 82.5 100 100 100
## 2 76.7 85 73 66.2 64.2 81.2 72 78.8
## 3 96.7 92.5 94 80 93.3 98.8 95 86.2
## 4 93.3 82.5 81 92.5 91.7 91.2 96 90
## 5 78.3 82.5 91 96.2 88.3 88.8 95 82.5
## 6 91.7 92.5 93 90 75.8 95 86 85
Standardisasi peubah merupakan proses transformasi peubah menjadi peubah yang memiliki rata-rata = 0 dan simpangan baku = 1. Proses standardisasi ini dilakukan jika kita melihat perbedaan satuan pengukuran peubah-peubah yang digunakan contoh (umur dan pendapatan). Standardisasi dilakukan karena metode K-Means menggunakan konsep jarak antara objek/amatan, yang mana sensitif terhadap satuan pengukuran. Formula untuk standardisasi data adalah sebagai berikut:
\(y' = \frac{y-\bar{y}}{\sigma_y}\)
Di mana:
Dengan R, standardisasi dilakukan dengan fungsi
scale().
data_mall_standardize <- scale(data_mall)
Jika kita perhatikan rata-rata peubah setelah distandardisasi mendekati nol.
apply(data_mall_standardize, 2, mean)
## SI SP SKL SPT SSP
## -5.168499e-16 3.707666e-16 2.802311e-16 -1.202128e-16 -2.077140e-16
## SPL SB SPN
## 6.810133e-16 -1.876823e-16 1.801089e-16
Dan simpangan baku dari peubah setelah distandardisasi mendekati satu.
apply(data_mall_standardize, 2, sd)
## SI SP SKL SPT SSP SPL SB SPN
## 1 1 1 1 1 1 1 1
| Note |
|---|
| Dalam tahapan pre-processing data, kita menyiapkan data agar metode K-Means bisa diterapkan secara maksimal. Dua hal yang umumnya dilakukan pada tahap ini adalah memilih peubah yang digunakan dan melakukan standarisasi peubah. |
Umumnya, banyaknya gerombol dapat ditentukan dengan menggunakan beberapa kriteria statistik, seperti koefisien silhouette dan **WSS* (Within Sum of Square).
Kriteria koefisien silhouette dihitung berdasarkan jarak antar amatan. Koefisien ini mengukur seberapa dekat suatu amatan dengan amatan lain yang berada di gerombol yang sama (dikenal sebagai ukuran cohesion) dibandingkan dengan jarak terhadap amatan lain yang berada di gerombol berbeda (dikenal sebagai ukuran separation). Koefisien yang nilainya semakin besar menunjukkan bahwa gerombol yang terbentuk sudah sesuai.
Kriteria WSS merupakan kriteria yang menghitung keragamaan dalam gerombol yang terbentuk. Semakin kecil keragaman dalam gerombol yang terbentuk menunjukkan bahwa gerombol yang terbentuk sudah sesuai.
Dengan menggunakan kriteria tersebut, kita bisa membandingkan
banyaknya gerombol yang paling sesuai pada data yang kita sedang
analisis. Dalam R, fungsi fviz_nbclust() dari
package 1factoextra1 dapat digunakan untuk memilih banyaknya
gerombol.
fviz_nbclust(data_mall_standardize, FUNcluster = kmeans, method = "silhouette")
fviz_nbclust(data_mall_standardize, FUNcluster = kmeans, method = "wss")
Untuk kriteria koefisien silhouette, banyaknya gerombol dengan nilai koefisien tertinggi yang kita pilih. Sedangkan pada WSS, banyaknya gerombol yang kita pilih didasarkan pada banyaknya gerombol yang mana garisnya berbentuk seperti siku (elbow). Pada gambar diatas garis membentuk siku saat berada di gerombol keempat. Karena penentuan ini berdasarkan visual, jadi setiap orang mungkin berbeda melihat pola sikunya.
Berdasarkan kedua kriteria tersebut, banyaknya gerombol terbaik yang dipilih berbeda. Jika demikian, banyaknya gerombol bisa ditentukan berdasarkan kemudahan interpretasi gerombol yang terbentuk. Pada tulisan ini kita akan menggunakan 2 serta 4 gerombol.
| Note |
|---|
Secara default banyaknya gerombol yang dicobakan pada fungsi
fviz_nbclust() adalah 10, jika ingin merubah hal tersebut
bisa dilakukan dengan menggunakan argumen kmax dalam
fungsi, misal kmax = 20. |
Setelah kita mendapatkan banyaknya gerombol terbaik, maka selajutnya
kita akan menerapkan metode K-Means untuk mendapatkan label gerombol
pada setiap amatan. Fungsi eclust dari package
factoextra digunakan untuk menerpkan metode K-Means. Pada
fungsi eclust(), kita cukup memasukan data yang sebelum
distandardisasi, karena dalam fungsi tersebut terdapat argumen
stand, yang jika diatur stand = TRUE secara
otomatis data yang kita gunakan akan distandardisasi.
kmeans_mall <- eclust(data_mall, stand = TRUE, FUNcluster = "kmeans", k=2, graph = F)
Memanggil label gerombol untuk setiap amatan dilakukan dengan:
kmeans_mall$cluster
## [1] 1 2 1 1 1 1 2 2 2 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2
## [38] 2 1 1 1 1 1 1 1 1 1 1 2 1 1 2 2 2 1 1 1 1 1 2 2 2 2 2 2 2 1 1 2 2 2 2 2 1
## [75] 1 1 2 2 2 1 1 2 1 1 1 1 2 1 1 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
## [112] 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 2 1 1
Kemu- dian,interpretasi setiap gerombol yang terbentuk dapat
dilakukan dengan menggunakan bantuan nilai rata-rata dari masing-masing
peubah dihitung berdasarkan gerombol. Informasi ini bisa diperoleh
dengan menggunakan $centers. Karena kita melakukan
standardisasi peubah, maka nilai rata-rata yang diperoleh juga dalam
skala standardisasi.
kmeans_mall$centers
## SI SP SKL SPT SSP SPL SB
## 1 0.5039767 0.5083519 0.5055834 0.4821044 0.543549 0.5564135 0.4764561
## 2 -0.9869544 -0.9955224 -0.9901008 -0.9441211 -1.064450 -1.0896431 -0.9330599
## SPN
## 1 0.5156149
## 2 -1.0097458
kmeans_mall <- eclust(data_mall, stand = TRUE, FUNcluster = "kmeans", k=4, graph = F)
Memanggil label gerombol untuk setiap amatan dilakukan dengan:
kmeans_mall$cluster
## [1] 1 4 1 2 2 2 4 4 3 2 4 2 3 1 1 1 1 1 1 1 2 2 2 2 2 2 2 4 4 4 4 4 4 3 3 3 3
## [38] 3 1 1 1 1 2 2 2 2 2 2 4 1 2 4 4 4 1 1 1 2 2 4 4 3 3 3 3 3 1 2 4 4 4 4 4 2
## [75] 2 1 4 3 3 2 1 3 1 2 2 2 3 2 2 4 3 3 3 4 1 1 2 1 1 2 1 1 2 1 1 1 1 1 2 1 4
## [112] 1 1 1 2 1 1 4 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 3 4 1 1 1 2 4 1 1
Kemu- dian,interpretasi setiap gerombol yang terbentuk dapat
dilakukan dengan menggunakan bantuan nilai rata-rata dari masing-masing
peubah dihitung berdasarkan gerombol. Informasi ini bisa diperoleh
dengan menggunakan $centers. Karena kita melakukan
standardisasi peubah, maka nilai rata-rata yang diperoleh juga dalam
skala standardisasi.
kmeans_mall$centers
## SI SP SKL SPT SSP SPL
## 1 0.7329614 0.7539850 0.83598499 0.807056827 0.8217473 0.7573147
## 2 0.1665255 0.1463661 0.01867575 0.003227142 0.1335725 0.2603486
## 3 -1.5699897 -1.5548476 -1.73237778 -1.397601816 -1.3968804 -1.4912738
## 4 -0.5705006 -0.5960044 -0.45990295 -0.620206336 -0.8269999 -0.8027641
## SB SPN
## 1 0.7053882 0.7343391
## 2 0.1390826 0.1932845
## 3 -1.7346781 -1.4011392
## 4 -0.3604754 -0.7301791
Berdasarkan 2 gerombol dapat diinterpretasikan sebagai berikut :
Gerombol 1 : gerombol ini merupakan sekolah berdasarkan kabupaten/kota
yang memiliki nilai Standar Nasional Pendidikan (SNP) tinggi pada semua
peubah, yang terdiri dari delapan kriteria minimal dalam pelaksanaan
sistem pendidikan di Indonesia yaitu Standar Kompetensi Lulusan (SKL),
Standar Isi (SI), Standar Proses (SPR), Standar Pendidikan dan Tenaga
Kependidikan (SPT), Standar Sarana dan Prasarana (SSP), Standar
Pengelolaan (SPL), Standar Pembiayaan (SB) dan Standar Penilaian
Pendidikan (SPN).
Gerombol 2 : gerombol ini merupakan sekolah berdasarkan kabupaten/kota
yang memiliki nilai Standar Nasional Pendidikan (SNP) rendah pada semua
peubah, yang terdiri dari delapan kriteria minimal dalam pelaksanaan
sistem pendidikan di Indonesia yaitu Standar Kompetensi Lulusan (SKL),
Standar Isi (SI), Standar Proses (SPR), Standar Pendidikan dan Tenaga
Kependidikan (SPT), Standar Sarana dan Prasarana (SSP), Standar
Pengelolaan (SPL), Standar Pembiayaan (SB) dan Standar Penilaian
Pendidikan (SPN).
Berdasarkan 4 gerombol dapat diinterpretasikan sebagai berikut :
Gerombol 1 : gerombol ini merupakan sekolah berdasarkan kabupaten/kota
yang memiliki nilai Standar Nasional Pendidikan (SNP) tinggi pada semua
peubah, yang terdiri dari delapan kriteria minimal dalam pelaksanaan
sistem pendidikan di Indonesia yaitu Standar Kompetensi Lulusan (SKL),
Standar Isi (SI), Standar Proses (SPR), Standar Pendidikan dan Tenaga
Kependidikan (SPT), Standar Sarana dan Prasarana (SSP), Standar
Pengelolaan (SPL), Standar Pembiayaan (SB) dan Standar Penilaian
Pendidikan (SPN).
Gerombol 2 : gerombol ini merupakan sekolah berdasarkan kabupaten/kota
yang memiliki nilai Standar Nasional Pendidikan (SNP) cukup tinggi pada
semua peubah, yang terdiri dari delapan kriteria minimal dalam
pelaksanaan sistem pendidikan di Indonesia yaitu Standar Kompetensi
Lulusan (SKL), Standar Isi (SI), Standar Proses (SPR), Standar
Pendidikan dan Tenaga Kependidikan (SPT), Standar Sarana dan Prasarana
(SSP), Standar Pengelolaan (SPL), Standar Pembiayaan (SB) dan Standar
Penilaian Pendidikan (SPN).
Gerombol 3 : gerombol ini merupakan sekolah berdasarkan kabupaten/kota
yang memiliki nilai Standar Nasional Pendidikan (SNP) cukup rendah pada
semua peubah, yang terdiri dari delapan kriteria minimal dalam
pelaksanaan sistem pendidikan di Indonesia yaitu Standar Kompetensi
Lulusan (SKL), Standar Isi (SI), Standar Proses (SPR), Standar
Pendidikan dan Tenaga Kependidikan (SPT), Standar Sarana dan Prasarana
(SSP), Standar Pengelolaan (SPL), Standar Pembiayaan (SB) dan Standar
Penilaian Pendidikan (SPN).
Gerombol 4 : gerombol ini merupakan sekolah berdasarkan kabupaten/kota
yang memiliki nilai Standar Nasional Pendidikan (SNP) rendah pada semua
peubah, yang terdiri dari delapan kriteria minimal dalam pelaksanaan
sistem pendidikan di Indonesia yaitu Standar Kompetensi Lulusan (SKL),
Standar Isi (SI), Standar Proses (SPR), Standar Pendidikan dan Tenaga
Kependidikan (SPT), Standar Sarana dan Prasarana (SSP), Standar
Pengelolaan (SPL), Standar Pembiayaan (SB) dan Standar Penilaian
Pendidikan (SPN).
Jika sulit membaca hasil dalam bentuk skala standardisasi maka kita
bisa menggunakan fungsi aggregate() untuk melihat
rata-ratanya dalam skala aslinya. Fungsi ini dapat menghitung rata-rata
setiap peubah berdasarkan gerombol yang terbentuk.
aggregate(data_mall, by =list(gerombol = kmeans_mall$cluster), FUN = mean)
## gerombol SI SP SKL SPT SSP SPL SB
## 1 1 96.43381 93.46830 93.64286 91.47321 94.59839 96.85268 95.72321
## 2 2 90.74228 87.10132 82.92105 83.25658 85.48202 91.67763 89.12610
## 3 3 73.29383 69.27500 59.95000 68.93750 65.20783 73.43750 67.29792
## 4 4 83.33667 79.32232 76.64286 76.88393 72.75714 80.60714 83.30655
## SPN
## 1 95.07699
## 2 89.69420
## 3 73.83176
## 4 80.50694
fviz_cluster(kmeans_mall)
Cara lain untuk menginterpretasikan hasil gerombol adalah menggunakan scatterplot. Jika peubah untuk membangun cluster lebih dari dua, maka sebelum dibentuk scatterplot peubah tersebut direduksi terlebih dahulu menggunakan analisis komponen utama menjadi dua komponen utama. Namun, untuk interpretasinya setiap gerombolnya kita harus mengetahui interpretasi dari kedua komponen utama dan belum tentu dengan dua komponen utama tersebut sudah mampu menjelaskan keragaman data asal dengan baik.
Interpretasi dua komponen utama bisa dilihat dengan akar cirinya.
pca_mall <- prcomp(data_mall_standardize)
pca_mall$rotation
## PC1 PC2 PC3 PC4 PC5 PC6
## SI -0.3490052 -0.47564694 -0.1010388 0.4376045 0.003407636 -0.53923576
## SP -0.3563458 -0.32960295 0.1749772 0.2698125 -0.452955464 0.43357542
## SKL -0.3598889 0.07068885 -0.3613996 0.2903713 0.440748350 0.57383665
## SPT -0.3485441 0.41510575 0.5004850 0.2968528 0.280420903 -0.30372576
## SSP -0.3609729 0.47753814 0.2363533 -0.1409162 -0.172848868 0.12217286
## SPL -0.3655969 0.09443504 -0.1481044 -0.2843141 -0.570279491 -0.10681216
## SB -0.3517772 0.17974350 -0.6186600 -0.2589296 0.126436990 -0.26369877
## SPN -0.3354107 -0.46748670 0.3428427 -0.6289118 0.388385123 0.06186463
## PC7 PC8
## SI -0.21029556 -0.33946686
## SP 0.50372961 0.11859155
## SKL -0.35076697 0.06303042
## SPT 0.10428746 0.43108729
## SSP -0.04041102 -0.72076326
## SPL -0.50809564 0.39982849
## SB 0.55432302 0.03691831
## SPN -0.03241418 0.01279675
Hierarchical clustering menghasilkan hierarki yang dapat dilihat dalam bentuk dendrogram. Dendrogram ini menunjukkan cara objek-objek tersebut dikelompokkan dalam kelompok-kelompok yang berjenjang, dan dapat dipilih sejauh mana tingkat hierarki yang ingin dieksplorasi dengan memotong dendrogram pada tingkat yang sesuai.
Dua jenis hierarchical clustering:
Pemilihan jenis linkage (cara mengukur jarak antara kelompok) dalam hierarchical clustering adalah keputusan penting dalam analisis gerombol ini. Linkage mempengaruhi bagaimana kelompok-kelompok dibentuk dan hierarki yang dihasilkan dalam dendrogram. Beberapa jenis linkage antara lain:
Tahap analisis gerombol dengan hierarchical clustering: 1. Pre-processing data 2. Memilih metode linkage dan banyaknya gerombol 3. Menerapkan Hierarchical Clustering 4. Interprestasi gerombol yang terbentuk
Contoh kasus yang digunakan adalah kasus yang sama dengan contoh sebelumnya, dengan data yang dipakai adalah data numerik yang distandardisasi sebagaimana data pada contoh sebelumnya.
head(data_mall_standardize)
## SI SP SKL SPT SSP SPL
## [1,] 1.0878781 1.37732256 -0.2802210 0.9075068 -0.09153335 1.0595559
## [2,] -1.2339848 -0.05416815 -0.7375932 -1.6605187 -1.47522415 -0.7410297
## [3,] 0.7564677 0.66157721 0.8632095 -0.3153625 0.72599918 0.9395168
## [4,] 0.4240622 -0.29274993 -0.1277636 0.9075068 0.60068949 0.2192826
## [5,] -1.0687772 -0.29274993 0.6345234 1.2743676 0.34856034 -0.0207955
## [6,] 0.2588546 0.66157721 0.7869808 0.6629329 -0.59503677 0.5793997
## SB SPN
## [1,] 1.0725133 1.2291782
## [2,] -1.3310449 -0.9067791
## [3,] 0.6433065 -0.1529118
## [4,] 0.7291478 0.2240218
## [5,] 0.6433065 -0.5298454
## [6,] -0.1292658 -0.2785564
Untuk memilih metode linkage dan banyaknya gerombol bisa menggunakan
Untuk ilustrasi kita akan menggunakan metode silhouette saja karena lebih mudah menentukan jumlah gerombolnya.
# complete
fviz_nbclust(data_mall_standardize, FUNcluster = hcut, method = "silhouette", hc_method = "complete", hc_metric = "euclidean")
# average
fviz_nbclust(data_mall_standardize, FUNcluster = hcut, method = "silhouette", hc_method = "average", hc_metric = "euclidean")
# centroid
fviz_nbclust(data_mall_standardize, FUNcluster = hcut, method = "silhouette", hc_method = "centroid", hc_metric = "euclidean")
# ward
fviz_nbclust(data_mall_standardize, FUNcluster = hcut, method = "silhouette", hc_method = "ward.D", hc_metric = "euclidean")
Berdasarkan koefisien silhouette, metode complete dan average memilih 5 gerombol, sedangkan metode centroid dan ward masing-masing memilih 2 dan 6 gerombol. Untuk saat ini, kita akan mencoba menggunakan 5 gerombol dengan metode complete (Jika dua metode linkage memilih banyaknya gerombol yang sama, gerombol yang terbentuk akan relatif mirip, oleh karena itu bisa pilih salah satu).
Penggunaan dendogram untuk data yang memiliki amatan yang banyak mungkin tidak efektif karena memilih gerombol dengan dendogram dilakukan secara visual.
linkage_methods <- c("complete", "average", "centroid", "ward.D")
hc_mall_dend <- lapply(linkage_methods, function(i)
hclust(dist(data_mall_standardize, method = 'euclidean'), method = i)
)
# complete
fviz_dend(hc_mall_dend[[1]])
## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## ℹ The deprecated feature was likely used in the factoextra package.
## Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
# average
fviz_dend(hc_mall_dend[[2]])
# centroid
fviz_dend(hc_mall_dend[[3]])
# ward
fviz_dend(hc_mall_dend[[4]])
Jika diperhatikan dari keempat dendogram pada masing-masing metode linkage, banyaknya gerombol yang terbentuk sama seperti menggunakan keofisien silhouette diatas.
hc_mall <- eclust(data_mall,stand = TRUE,FUNcluster = "hclust", k=2, hc_method = "complete", hc_metric = "euclidean")
hc_mall$cluster
## [1] 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 2 2
## [38] 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 1 1 1 1 1 1 1 1 1
## [75] 1 1 1 2 2 1 1 2 1 1 1 1 2 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [112] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1
Coba lakukan interpretasi gerombol seperti metode kmeans diatas.
aggregate(data_mall,by =list(gerombol=hc_mall$cluster), FUN = mean)
## gerombol SI SP SKL SPT SSP SPL SB
## 1 1 91.45541 87.96080 85.80000 85.16200 86.23085 91.16600 90.07900
## 2 2 71.52216 67.97059 59.70588 68.97059 65.19569 72.79412 68.58578
## SPN
## 1 89.92509
## 2 71.93442
fviz_cluster(hc_mall)
Interpretasi dua komponen utama bisa dilihat dengan akar cirinya.
pca_mall <- prcomp(data_mall_standardize)
pca_mall$rotation
## PC1 PC2 PC3 PC4 PC5 PC6
## SI -0.3490052 -0.47564694 -0.1010388 0.4376045 0.003407636 -0.53923576
## SP -0.3563458 -0.32960295 0.1749772 0.2698125 -0.452955464 0.43357542
## SKL -0.3598889 0.07068885 -0.3613996 0.2903713 0.440748350 0.57383665
## SPT -0.3485441 0.41510575 0.5004850 0.2968528 0.280420903 -0.30372576
## SSP -0.3609729 0.47753814 0.2363533 -0.1409162 -0.172848868 0.12217286
## SPL -0.3655969 0.09443504 -0.1481044 -0.2843141 -0.570279491 -0.10681216
## SB -0.3517772 0.17974350 -0.6186600 -0.2589296 0.126436990 -0.26369877
## SPN -0.3354107 -0.46748670 0.3428427 -0.6289118 0.388385123 0.06186463
## PC7 PC8
## SI -0.21029556 -0.33946686
## SP 0.50372961 0.11859155
## SKL -0.35076697 0.06303042
## SPT 0.10428746 0.43108729
## SSP -0.04041102 -0.72076326
## SPL -0.50809564 0.39982849
## SB 0.55432302 0.03691831
## SPN -0.03241418 0.01279675
hc_mall <- eclust(data_mall,stand = TRUE,FUNcluster = "hclust", k=4, hc_method = "complete", hc_metric = "euclidean")
hc_mall$cluster
## [1] 1 2 1 1 3 1 2 3 4 3 3 2 2 1 1 1 1 1 1 3 1 2 1 3 1 2 1 3 2 2 2 2 4 4 2 4 4
## [38] 4 1 1 1 1 1 1 1 1 1 1 2 1 1 3 3 2 1 1 1 1 1 2 2 4 4 4 4 2 1 1 2 2 2 2 3 1
## [75] 1 1 2 4 4 1 1 4 1 1 1 1 4 1 1 2 2 4 4 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3
## [112] 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 2 1 1 1 1 3 1 1
Coba lakukan interpretasi gerombol seperti metode kmeans diatas.
aggregate(data_mall,by =list(gerombol=hc_mall$cluster), FUN = mean)
## gerombol SI SP SKL SPT SSP SPL SB
## 1 1 94.71448 91.11006 89.95402 88.06034 91.29318 94.87069 93.46312
## 2 2 85.42590 80.81442 72.57692 74.67308 71.43026 79.35577 79.35897
## 3 3 80.89111 80.61250 84.33333 86.87500 81.59694 89.89583 88.77083
## 4 4 71.52216 67.97059 59.70588 68.97059 65.19569 72.79412 68.58578
## SPN
## 1 93.14875
## 2 83.72456
## 3 79.98799
## 4 71.93442
fviz_cluster(hc_mall)
Interpretasi dua komponen utama bisa dilihat dengan akar cirinya.
pca_mall <- prcomp(data_mall_standardize)
pca_mall$rotation
## PC1 PC2 PC3 PC4 PC5 PC6
## SI -0.3490052 -0.47564694 -0.1010388 0.4376045 0.003407636 -0.53923576
## SP -0.3563458 -0.32960295 0.1749772 0.2698125 -0.452955464 0.43357542
## SKL -0.3598889 0.07068885 -0.3613996 0.2903713 0.440748350 0.57383665
## SPT -0.3485441 0.41510575 0.5004850 0.2968528 0.280420903 -0.30372576
## SSP -0.3609729 0.47753814 0.2363533 -0.1409162 -0.172848868 0.12217286
## SPL -0.3655969 0.09443504 -0.1481044 -0.2843141 -0.570279491 -0.10681216
## SB -0.3517772 0.17974350 -0.6186600 -0.2589296 0.126436990 -0.26369877
## SPN -0.3354107 -0.46748670 0.3428427 -0.6289118 0.388385123 0.06186463
## PC7 PC8
## SI -0.21029556 -0.33946686
## SP 0.50372961 0.11859155
## SKL -0.35076697 0.06303042
## SPT 0.10428746 0.43108729
## SSP -0.04041102 -0.72076326
## SPL -0.50809564 0.39982849
## SB 0.55432302 0.03691831
## SPN -0.03241418 0.01279675