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 komputerlibrary(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
# Impor dari penyimpanan lokaldata <-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 menghapusnyarownames(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.
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.
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:
maximum
manhattan
canberra
binary
minkowski
Selanjutnya, metode hierarki yang digunakan dapat barupa:
pautan lengkap (complete)
pautan rataan (mean)
pautan centroid
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).
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.
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.
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.
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.
Klaster 2: Klaster ini terdiri atas bank dengan Cost on ratio yang tinggi, menunjukkan efisiensi bank dalam mengelola biaya yang ada kaitannya dengan pendapatan.
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.
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.
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.
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.
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.
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.
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.
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.
Penggabungan nilai metrik per metode dilakukan dengan cara berikut sehingga lebih mudah untuk dibandingkan.
# membuat matrix dengan 2 kolom dan 2 barismetrics_data <-matrix(c(sil_hc$silhouette, dbi_hc$DB, sil_kmeans$silhouette, dbi_kmeans$DB), ncol=2, byrow=TRUE)# mengubah nama kolom dan nama bariscolnames(metrics_data) <-c('Silhouette','DBI')rownames(metrics_data) <-c('Hierarchical','KMeans')as.table(metrics_data)
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.