Analisis Klaster

Author

Bagus Sartono dan M. Rizky Nurhambali

Ilustrasi Kasus

Dataset yang digunakan sebagai ilustrasi merupakan dataset top 50 bank di dunia beserta karakteristik finansialnya (12 variabel). Dataset ini akan digunakan untuk mengelompokkan bank dengan karakteristik yang mirip. Oleh karena itu, analisis yang digunakan adalah analisis klaster (clustering).

Namun, pada ilustrasi ini, karakteristik yang akan dikelompokkan didasarkan pada Profitabilitas & Efisiensi bank tersebut, dilihat dari Pre-tax Profit, Return on capital, Return on assets, Cost Income ratio.

Analisis akan diawali dengan impor data, eksplorasi data, dan melakukan analisis klaster.

Packages

Sebelum melakukan impor data, dilakukan pemanggilan packages untuk fungsi-fungsi yang digunakan sebagai berikut.

library(readxl) #untuk impor data ekstensi .xlsx dari penyimpanan lokal komputer
library(factoextra) #untuk proses clustering
Warning: package 'factoextra' was built under R version 4.4.3
Warning: package 'ggplot2' was built under R version 4.4.3
library(clusterCrit) #untuk menghitung koefisien Silhouette
Warning: package 'clusterCrit' was built under R version 4.4.3
library(clusterSim) #untuk menghitung DBI
Warning: package 'clusterSim' was built under R version 4.4.3

Apabila packages tersebut belum pernah di-install, lakukan instalasi dengan fungsi install.packages()

Data

Data yang digunakan dapat dilihat di sini.

# Impor dari penyimpanan lokal
data <- read_excel("data for clustering.xlsx")

Selanjutnya, kita dapat melihat peubah dan karakter dari peubah tersebut dengan str()

str(data)
tibble [50 × 13] (S3: tbl_df/tbl/data.frame)
 $ Bank Name            : chr [1:50] "ICBC" "China Construction Bank" "JP Morgan Chase & Co" "Bank of China" ...
 $ Assets               : num [1:50] 3368190 2736416 2573126 2492463 2106796 ...
 $ Tier 1 Capital Growth: num [1:50] 19.75 16.17 12.66 23.04 4.66 ...
 $ Asset Growth         : num [1:50] 8.64 8.69 6.52 9.62 0.09 ...
 $ Capital Asset Ratio  : num [1:50] 7.38 7.39 7.25 7.39 8.02 6.42 9.04 9.17 5.8 4.94 ...
 $ Pre-tax Profit       : num [1:50] 6.52 6.59 17.88 8.49 -57.9 ...
 $ Return on capital    : num [1:50] 23.77 24.18 16.37 20.53 4.03 ...
 $ Return on assets     : num [1:50] 1.75 1.79 1.19 1.52 0.32 1.45 0.73 2.01 0.71 0.56 ...
 $ BIS capital ratio    : num [1:50] 14.5 14.9 15.1 13.9 16.5 ...
 $ NPL to total loans   : num [1:50] 1.13 1.19 2.64 1.18 3.24 1.54 1.95 3.92 2.67 1.16 ...
 $ Loans to Assets ratio: num [1:50] 55.6 58.5 30.6 63 43.5 ...
 $ RWA to TA ratio      : num [1:50] 60.5 60.9 57.2 65.1 59.9 ...
 $ Cost Income ratio    : num [1:50] 31.4 31.9 64.2 36 88.3 ...

Dapat kita lihat data yang digunakan terdiri atas 50 baris dan 13 kolom. Baris menunjukkan jumlah observasi / sample, kolom menunjukkan karakteristik dari observasi. Berdasarkan output tersebut, dapat diketahui nama bank merupakan kolom dengan tipe karakter (chr) dan lainnya adalah numerik (num).

Eksplorasi Data

Eksplorasi data paling sederhana yang dapat dilakukan adalah melihat statistika deskriptif dari data. Statistika deskriptif data dapat dilihat dengan summary() sebagai berikut.

summary(data)
  Bank Name             Assets        Tier 1 Capital Growth  Asset Growth     
 Length:50          Min.   : 345243   Min.   :-34.680       Min.   :-19.4900  
 Class :character   1st Qu.: 747733   1st Qu.: -6.607       1st Qu.: -5.4700  
 Mode  :character   Median : 968648   Median :  2.470       Median : -2.0200  
                    Mean   :1312611   Mean   :  2.817       Mean   :  0.3608  
                    3rd Qu.:1803686   3rd Qu.: 10.613       3rd Qu.:  7.3600  
                    Max.   :3368190   Max.   : 28.320       Max.   : 24.1100  
 Capital Asset Ratio Pre-tax Profit   Return on capital Return on assets
 Min.   : 3.390      Min.   :-66.17   Min.   :-1.22     Min.   :-0.050  
 1st Qu.: 4.532      1st Qu.:-13.52   1st Qu.: 8.93     1st Qu.: 0.445  
 Median : 5.600      Median :  4.57   Median :15.51     Median : 0.815  
 Mean   : 5.963      Mean   : 13.33   Mean   :15.28     Mean   : 0.948  
 3rd Qu.: 7.348      3rd Qu.: 12.84   3rd Qu.:22.51     3rd Qu.: 1.448  
 Max.   :10.340      Max.   :302.06   Max.   :31.90     Max.   : 2.550  
 BIS capital ratio NPL to total loans Loans to Assets ratio RWA to TA ratio
 Min.   :10.69     Min.   : 0.500     Min.   :10.21         Min.   :20.79  
 1st Qu.:13.40     1st Qu.: 1.173     1st Qu.:38.34         1st Qu.:34.52  
 Median :15.25     Median : 2.220     Median :52.41         Median :46.56  
 Mean   :15.64     Mean   : 2.698     Mean   :48.81         Mean   :48.99  
 3rd Qu.:17.05     3rd Qu.: 3.295     3rd Qu.:59.70         3rd Qu.:61.35  
 Max.   :25.50     Max.   :10.470     Max.   :77.20         Max.   :92.72  
 Cost Income ratio
 Min.   :21.84    
 1st Qu.:39.47    
 Median :55.99    
 Mean   :54.28    
 3rd Qu.:62.61    
 Max.   :88.27    

Pada data kategorik (nama bank), statistika deskriptif yang dihasilkan adalah panjang data (jumlah observasi), kelas data, dan modus. Pada data numerik, keluaran yang dihasilkan adalah nilai minimum, kuartil 1, kuartil 2 (median), kuartil 3, rata-rata, dan nilai maksimum. Selain itu, fungsi summary() juga menghasilkan keluaran yang menunjukkan jumlah nilai kosong (NA) jika ada.

Selanjutnya, akan dilakukan eksplorasi dengan grafik, yaitu dengan histogram dan density plot.

Histogram

Histogram dapat dibentuk dengan fungsi dasar R, hist() .

Sebagai contoh, akan dibuat histogram untuk variabel Return on assets sebagai berikut.

hist(data$`Return on assets`)

Berdasarkan histogram, mayoritas bank memiliki Return on assets antara 0 s.d. 2.

Density Plot

plot(density(data$`Return on assets`))

Plot densitas menunjukkan adanya 2 puncak, menandakan adanya 2 nilai yang sering muncul, yaitu sekitar 0,5 dan sekitar 1,5.

Apabila ingin digabungkan, dapat menggunakan syntax sebagai berikut.

hist(data$`Return on assets`, prob = TRUE, main = " ")
lines(density(data$`Return on assets`), col = 4, lwd = 2)

Boxplot

Eksplorasi dapat juga dilakukan menggunakan boxplot, terlihat sebara nilai Return on assets banyak di sekitar 0,5 s.d. 1,5. Selain itu, tidak terlihat adanya outlier dari boxplot yang dihasilkan.

boxplot(data$`Return on assets`)

Korelasi

Eksplorasi data dilanjutkan dengan melihat hubungan antarvariabel dengan analisis korelasi. Analisis korelasi dilakukan dengan fungsi cor() .

cor(data[,2:13])
                            Assets Tier 1 Capital Growth Asset Growth
Assets                 1.000000000            0.15793544   0.04110913
Tier 1 Capital Growth  0.157935438            1.00000000   0.75257797
Asset Growth           0.041109132            0.75257797   1.00000000
Capital Asset Ratio   -0.115345991            0.33628848   0.29889447
Pre-tax Profit        -0.093227622            0.07280959  -0.05790793
Return on capital     -0.219802236            0.47565650   0.51076694
Return on assets      -0.183317247            0.49354478   0.54546112
BIS capital ratio     -0.002283944           -0.26583799  -0.46542512
NPL to total loans    -0.038827451           -0.37984657  -0.43110779
Loans to Assets ratio -0.216051607           -0.15310598   0.05424459
RWA to TA ratio       -0.173729990            0.35926034   0.51137936
Cost Income ratio      0.136904445           -0.35858939  -0.45325749
                      Capital Asset Ratio Pre-tax Profit Return on capital
Assets                       -0.115345991    -0.09322762        -0.2198022
Tier 1 Capital Growth         0.336288482     0.07280959         0.4756565
Asset Growth                  0.298894468    -0.05790793         0.5107669
Capital Asset Ratio           1.000000000    -0.03524717         0.2679961
Pre-tax Profit               -0.035247173     1.00000000        -0.1858374
Return on capital             0.267996067    -0.18583743         1.0000000
Return on assets              0.652081489    -0.14441517         0.8757600
BIS capital ratio            -0.003987731     0.28229139        -0.6093802
NPL to total loans           -0.031807077     0.21066275        -0.4941648
Loans to Assets ratio        -0.002532717    -0.07993402         0.3513989
RWA to TA ratio               0.819001906    -0.14662957         0.5339849
Cost Income ratio            -0.168168435    -0.11012935        -0.6585589
                      Return on assets BIS capital ratio NPL to total loans
Assets                      -0.1833172      -0.002283944        -0.03882745
Tier 1 Capital Growth        0.4935448      -0.265837988        -0.37984657
Asset Growth                 0.5454611      -0.465425123        -0.43110779
Capital Asset Ratio          0.6520815      -0.003987731        -0.03180708
Pre-tax Profit              -0.1444152       0.282291388         0.21066275
Return on capital            0.8757600      -0.609380227        -0.49416482
Return on assets             1.0000000      -0.456695312        -0.36227773
BIS capital ratio           -0.4566953       1.000000000         0.11247881
NPL to total loans          -0.3622777       0.112478812         1.00000000
Loans to Assets ratio        0.2612600      -0.460467873         0.06834369
RWA to TA ratio              0.7877635      -0.477552553        -0.12127401
Cost Income ratio           -0.5895100       0.507626398         0.17369069
                      Loans to Assets ratio RWA to TA ratio Cost Income ratio
Assets                         -0.216051607      -0.1737300         0.1369044
Tier 1 Capital Growth          -0.153105984       0.3592603        -0.3585894
Asset Growth                    0.054244591       0.5113794        -0.4532575
Capital Asset Ratio            -0.002532717       0.8190019        -0.1681684
Pre-tax Profit                 -0.079934016      -0.1466296        -0.1101293
Return on capital               0.351398891       0.5339849        -0.6585589
Return on assets                0.261259986       0.7877635        -0.5895100
BIS capital ratio              -0.460467873      -0.4775526         0.5076264
NPL to total loans              0.068343686      -0.1212740         0.1736907
Loans to Assets ratio           1.000000000       0.2943397        -0.4466653
RWA to TA ratio                 0.294339680       1.0000000        -0.4900201
Cost Income ratio              -0.446665295      -0.4900201         1.0000000

Keluaran dari fungsi di atas merupakan sebuah matriks. Oleh karena itu, hasil tersebut dibuat dalam sebuah plot dengan fungsi berikut.

library(corrplot)
Warning: package 'corrplot' was built under R version 4.4.3
corrplot 0.95 loaded
corrmatrix <- cor(data[,2:13])
corrplot(corrmatrix, method = 'color', type = "lower", addCoef.col = "black")

Warna biru pada plot korelasi menunjukkan adanya korelasi positif, sementara warna merah menunjukkan korelasi negatif. Korelasi positif yang kuat ada pada variabel return on capital dan return on assets dengan nilai korelasi sebesar 0,88, sementara korelasi negatif yang kuat ada pada variabel return on capital dan cost incaome ratio dengan nilai korelasi sebesar 0,66.

Praproses Data

Variabel nama bank tidak akan digunakan untuk analisis klaster sehingga dibuang dengan cara menjadikan nama bank tersebut sebagai nama baris. Selain itu, dilakukan pemilihan variabel, yaitu Pre-tax Profit, Return on capital, Return on assets, dan Cost Income ratio yang menunjukkan Profitabilitas & Efisiensi dari bank tersebut.

# menjadikan kolom nama bank menjadi nama baris dan menghapusnya
rownames(data)=data$`Bank Name`
Warning: Setting row names on a tibble is deprecated.
data=data[,-1]
data_bank <- subset(data, select = c("Pre-tax Profit", "Return on capital",
                                     "Return on assets", "Cost Income ratio"))

Standarisasi variabel merupakan proses transformasi nilai variabel menjadi variabel yang memiliki rata-rata nol dan simpangan baku satu. Proses standarisasi ini dilakukan ketika ada perbedaan satuan pengukuran peubah-peubah yang digunakan.

Dalam R, standarisasi data bisa dilakukan dengan menggunakan fungsi scale.

data_standardize <- scale(data_bank)
head(data_standardize)
     Pre-tax Profit Return on capital Return on assets Cost Income ratio
[1,]    -0.11158495         1.0469010        1.3393648        -1.3854192
[2,]    -0.11043857         1.0974533        1.4061661        -1.3611475
[3,]     0.07445547         0.1344938        0.4041475         0.6006165
[4,]    -0.07932266         0.6474146        0.9552577        -1.1117553
[5,]    -1.16657823        -1.3870070       -1.0487794         2.0623825
[6,]    -0.08505453         0.9063410        0.8383555        -0.9254696
apply(data_standardize, 2, mean)
   Pre-tax Profit Return on capital  Return on assets Cost Income ratio 
    -1.734723e-18      6.123791e-17      5.101375e-17      2.096630e-16 
apply(data_standardize, 2, sd)
   Pre-tax Profit Return on capital  Return on assets Cost Income ratio 
                1                 1                 1                 1 

Jika kita perhatikan rata-rata dan simpangan baku peubah setelah distandarisasi mendekati nol dan satu.

Note: Dalam tahapan praproses data, data disiapkan agar metode diterapkan bekerja secara maksimal. Dua hal yang umumnya dilakukan pada tahap ini adalah memilih variabel yang digunakan dan melakukan standarisasi variabel.

Hierarchical Clustering

Klaster dengan metode berhierarki belum diketahui jumlahnya. Klaster yang terbentuk pada metode ini akan ditampilkan dalam sebuah dendogram.

Untuk melakukan analisis klaster dengan teknik hierarki dilakukan dengan cara berikut.

hc_dend <- hclust(dist(data_standardize,method= 'euclidean'),
                  method="ward.D")
hc_dend

Call:
hclust(d = dist(data_standardize, method = "euclidean"), method = "ward.D")

Cluster method   : ward.D 
Distance         : euclidean 
Number of objects: 50 

Pada fungsi di atas, metode jarak yang digunakan adalah Euclidean dan metode hierarki yang digunakan adalah pautan Ward.

Metode jarak yang digunakan tidak terbatas pada Euclidean, berikut metode jarak lain yang tersedia di R:

  1. maximum

  2. manhattan

  3. canberra

  4. binary

  5. minkowski

Selanjutnya, metode hierarki yang digunakan dapat barupa:

  1. pautan lengkap (complete)

  2. pautan rataan (mean)

  3. pautan centroid

  4. pautan Ward.D

Penentuan Jumlah Klaster

Grafik

Penentuan jumlah klaster dengan metode grafik sangat subjetif sehingga perlu kehati-hatian.

Dendogram
fviz_dend(hc_dend)
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>.

Secara subjektif, terlihat tiga kelompok / klaster berdasarkan dendogram yang dihasilkan

Elbow

Metode grafil elbow menggunakan Within Sum of Square (WSS) untuk menghitung keragamaan dalam klaster yang terbentuk. Semakin kecil keragaman dalam klaster yang terbentuk menunjukkan bahwa klaster yang terbentuk sudah sesuai. Banyaknya klaster yang dipilih didasarkan pada banyaknya klaster yang mana garisnya berbentuk seperti siku (elbow).

fviz_nbclust(data_standardize, FUNcluster = hcut, method = "wss",
             hc_method = "ward.D", hc_metric = "euclidean")

Berdasarkan gambar, siku terbentuk ketika jumlah klaster (k) adalah 3.

Numerik

Silhoutte

Kriteria koefisien silhouette dihitung berdasarkan jarak antar amatan. Koefisien ini mengukur seberapa dekat suatu amatan dengan amatan lain yang berada di klaster yang sama (dikenal sebagai ukuran cohesion) dibandingkan dengan jarak terhadap amatan lain yang berada di klaster berbeda (dikenal sebagai ukuran separation). Koefisien yang nilainya semakin besar menunjukkan bahwa klaster yang terbentuk sudah sesuai. Banyaknya klaster dengan nilai koefisien tertinggi adalah yang terpilih.

fviz_nbclust(data_standardize, FUNcluster = hcut, method = "silhouette",
             hc_method = "ward.D", hc_metric = "euclidean")

Berdasarkan kedua kriteria tersebut, banyaknya klaster terbaik yang dipilih adalah 3. Hasil ini sejalan dengan cara Elbow. Apabila ada perbedaan hasil, banyaknya klaster bisa ditentukan berdasarkan kemudahan interpretasi klaster yang terbentuk. Pada kasus ini, nilai k yang dimasukkan dalam fungsi adalah 3.

hc_bank <- eclust(data_bank,stand = TRUE, FUNcluster = "hclust", k=3,
                  hc_method = "ward.D", hc_metric = "euclidean", graph = F)
hc_bank$cluster
 [1] 1 1 1 1 2 1 2 1 2 2 2 2 2 1 1 2 1 2 2 2 2 3 2 2 2 3 2 1 3 2 2 2 1 2 1 1 2 1
[39] 2 1 1 1 1 1 1 1 1 1 1 1

Berdasarkan keluaran di atas, dapat terlihat bahwa amatan (bank) ke-1 s.d. 4 termasuk dalam klaster 1, amatan ke-5 termasuk dalam klaster 2, dan seterusnya.

Untuk mengetahui banyak anggota dari setiap klaster dengan lebih mudah, gunakan fungsi berikut.

table(hc_bank$cluster)

 1  2  3 
25 22  3 

Informasi yang juga penting untuk diketahui adalah karakteristik setiap klaster. Hal ini dapat dilakukan dengan menampilkan nilai tengah dari setiap klaster dengan fungsi aggregate sebagai berikut.

aggregate(data_bank,by =list(klaster=hc_bank$cluster), FUN = mean)
  klaster Pre-tax Profit Return on capital Return on assets Cost Income ratio
1       1       4.690800         22.272800           1.4624          44.35280
2       2      -3.997273          8.380455           0.4300          67.39091
3       3     212.450000          7.590000           0.4600          40.89000

Berdasarkan nilai rata-rata di atas, interpretasinya adalah sebagai berikut.

  1. Klaster 1: Klaster ini terdiri atas bank dengan Return on capital dan Return on assets yang tinggi, menunjukkan bank pada klaster ini efektif dalam menggunakan sumber daya untuk menghasilkan laba.

  2. Klaster 2: Klaster ini terdiri atas bank dengan Cost on ratio yang tinggi, menunjukkan efisiensi bank dalam mengelola biaya yang ada kaitannya dengan pendapatan.

  3. Klaster 3: Klaster ini terdiri atas bank dengan Pre-tax profit yang tinggi. Hal ini mengindikasikan bank dengan kinerja operasional yang kuat, pengelolaan biaya yang efisien, dan posisi keuangan yang sehat.

Selanjutnya, pembentukan klaster dapat dievaluasi dengan menghitung koefisien Silhouette. sebagai berikut.

sil_hc <- intCriteria(as.matrix(data_bank), hc_bank$cluster, c("Silhouette"))
sil_hc
$silhouette
[1] 0.303477
DBI

Selain dengan koefisien Silhouette, dapat digunakan juga Davies-Bouldin Index (DBI). DBI adalah metrik yang menilai hasil klasterberdasarkan kedekatan antara data dalam klaster tersebut. Pengukuran DBI bertujuan untuk meminimalkan jarak intra-klaster dan memaksimalkan jarak antar-klaster. Semakin kecil nilai DBI, semakin baik kualitas klaster tersebut.

dbi_hc <- index.DB(data_bank, hc_bank$cluster,dist(data), 
                   centrotypes="centroids")
dbi_hc$DB #Index DBI
[1] 1.594651

Plot Klaster

Cara lain untuk menginterpretasikan hasil gerombol adalah menggunakan scatterplot. Jika peubah untuk membangun kluster lebih dari 2, maka sebelum dibentuk scatterplot peubah tersebut direduksi terlebih dahulu menggunakan analisis komponen utama (PCA) menjadi 2 komponen utama. Namun, untuk interpretasinya setiap gerombolnya kita harus mengetahui interpretasi dari kedua komponen utama dan belum tentu dengan 2 komponen utama tersebut sudah mampu menjelaskan keragaman data asal dengan baik.

fviz_cluster(hc_bank)

Interpretasi 2 komponen utama bisa dilihat dengan akar cirinya.

pca_bank <- prcomp(data_standardize)
pca_bank$rotation
                          PC1         PC2       PC3         PC4
Pre-tax Profit     0.09903724  0.93804984 0.3240505  0.07242514
Return on capital -0.61041182 -0.07399309 0.2323132  0.75362658
Return on assets  -0.59325295 -0.05713660 0.4890510 -0.63687949
Cost Income ratio  0.51540272 -0.33365090 0.7757906  0.14555444

Selain itu, dapat dibentuk sebuah biplot berdasarkan hasil PCA sehingga lebih mencirikan kelompok bank berdasarkan karakteristiknya sebagai berikut.

fviz_pca_biplot(pca_bank, habillage=hc_bank$cluster,
                addEllipses=TRUE)
Too few points to calculate an ellipse

Keluaran biplot di atas menunjukkan hasil yang sejalan dengan karakteristik klaster yang dijelaskan sebelumnya.

Non-Hierarchical Clustering (K-Means)

Penerapan K-means dilakukan dengan menggunakan fungsi eclust dari package factoextra. Pada fungsi eclust, data masukan dapat berupa data yang sebelum distandarisasi karena dalam fungsi tersebut terdapat argumen stand. Jika stand=TRUE , secara otomatis data yang digunakan akan distandarisasi.

Namun, pada analisis klaster dengan teknik tak berhierarki, jumlah klaster harus ditentukan terlebih dahulu. Oleh karena itu, dilakukan penentuan klaster optimal terlebih dahulu.

Penentuan Jumlah Klaster

Penentuan jumlah klaster pada teknik non-hierarki sama dengan teknik hierarki, yaitu dengan grafik maupun numerik. Akan tetapi, tidak ada penggunaan dendogram dalam penentuan jumlah klaster dengan grafik.

Grafik (Elbow)

fviz_nbclust(data_standardize,FUNcluster = kmeans,method = "wss")

Berdasarkan gambar, siku yang terbentuk terdapat pada jumlah klaster (k) = 2.

Numerik

Silhoutte
fviz_nbclust(data_standardize,FUNcluster = kmeans,method = "silhouette")

Secara numerik, klaster optimal dengan koefisien Silhouette tertinggi juga ada pada kondisi jumlah klaster (k) = 2. Hasil ini menunjukkan hasil yang berbeda dengan teknik hieraki.

Selanjutnya, sama seperti pada teknik berhierarki, dilakukan clustering dengan fungsi berikut, di mana FUNcluster="kmeans" dan k=2 , mengikuti metode yang digunakan dan jumlah klaster yang ditetapkan.

kmeans_bank <- eclust(data_bank, stand = TRUE, FUNcluster = "kmeans", k=2, 
                      graph = F) 
kmeans_bank$cluster 
 [1] 2 2 2 2 1 2 1 2 1 1 1 1 1 2 2 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 2 1 2 2 1 2
[39] 1 2 2 2 2 2 2 2 2 2 2 2

Langkah selanjutnya sama dengan teknik berhierarki, yaitu dapat melihat perbandingan jumlah amatan dalam setiap klaster sebagai berikut.

table(kmeans_bank$cluster)

 1  2 
25 25 

Centroid (nilai tengah) dari setiap klaster ditampilkan dengan cara berikut untuk mengetahui karakteristik setiap klaster.

kmeans_bank$centers
  Pre-tax Profit Return on capital Return on assets Cost Income ratio
1      0.1415414        -0.8622988       -0.8590639         0.6024855
2     -0.1415414         0.8622988        0.8590639        -0.6024855

Karena dilakukan standarisasi variabel, nilai rata-rata yang diperoleh juga dalam skala standarisasi. Fungsi aggregate digunakan untuk mempermudah membaca hasil dalam skala aslinya. Fungsi ini dapat menghitung rata-rata setiap variabel berdasarkan klaster yang terbentuk, seperti yang dihasilkan pada teknik berhierarki.

aggregate(data_bank,by =list(klaster=kmeans_bank$cluster), FUN = mean)
  klaster Pre-tax Profit Return on capital Return on assets Cost Income ratio
1       1        21.9764            8.2856           0.4336           64.2108
2       2         4.6908           22.2728           1.4624           44.3528

Berdasarkan nilai rata-rata di atas, interpretasinya adalah sebagai berikut.

  1. Klaster 1: Klaster ini terdiri atas bank dengan Pre-tax profit dan Cost on ratio yang tinggi. Hal ini mengindikasikan bank dengan kinerja operasional yang kuat, pengelolaan biaya yang efisien, dan posisi keuangan yang sehat.

  2. Klaster 2: Klaster ini terdiri atas bank dengan Return on capital dan Return on assets yang tinggi, menunjukkan bank pada klaster ini efektif dalam menggunakan sumber daya untuk menghasilkan laba.

Selanjutnya, pembentukan klaster dapat dievaluasi dengan menghitung koefisien Silhouette. sebagai berikut.

sil_kmeans <- intCriteria(as.matrix(data_bank),kmeans_bank$cluster, 
                          c("Silhouette"))
sil_kmeans
$silhouette
[1] 0.1873055
DBI
dbi_kmeans <- index.DB(data_bank, kmeans_bank$cluster, dist(data_bank),
                       centrotypes="centroids") 
dbi_kmeans$DB #Index DBI
[1] 3.445737

Plot Klaster

fviz_cluster(kmeans_bank)

pca_bank <- prcomp(data_standardize)
pca_bank$rotation
                          PC1         PC2       PC3         PC4
Pre-tax Profit     0.09903724  0.93804984 0.3240505  0.07242514
Return on capital -0.61041182 -0.07399309 0.2323132  0.75362658
Return on assets  -0.59325295 -0.05713660 0.4890510 -0.63687949
Cost Income ratio  0.51540272 -0.33365090 0.7757906  0.14555444
fviz_pca_biplot(pca_bank, habillage=kmeans_bank$cluster,
                addEllipses=TRUE)

Perbandingan Metode

Penggabungan nilai metrik per metode dilakukan dengan cara berikut sehingga lebih mudah untuk dibandingkan.

# membuat matrix dengan 2 kolom dan 2 baris
metrics_data <- matrix(c(sil_hc$silhouette, dbi_hc$DB,
                         sil_kmeans$silhouette, dbi_kmeans$DB), 
                       ncol=2, byrow=TRUE)

# mengubah nama kolom dan nama baris
colnames(metrics_data) <- c('Silhouette','DBI')
rownames(metrics_data) <- c('Hierarchical','KMeans')

as.table(metrics_data)
             Silhouette       DBI
Hierarchical  0.3034770 1.5946510
KMeans        0.1873055 3.4457373

Berdasarkan metrik yang ada, klaster dengan teknik hierarki lebih baik dibandingkan dengan non-hierarki. Hal ini terlihat dari koefisien Silhouette yang lebih tinggi dan DBI yang lebih rendah.