Menurut Everitt dkk (2011), analisis cluster pada dasarnya adalah tentang bagaimana menemukan kelompok dalam data. Analisis ini bertujuan untuk membangun aturan dalam mengklasifikasikan individu atau objek baru ke dalam kelompok yang sudah ada. Pengelompokan analisis ini didasarkan pada homogenitas atau kemiripan dalam objek yang diamati.
Analisis cluster memiliki beberapa kelebihan yaitu dapat mengelompokkan data observasi dalam jumlah besar dan variabel yang relatif banyak serta data yang dipakai bisa dalam skala data ordinal, interval, dan rasio.
Algoritma K-Means merupakan salah satu metode dalam analisis cluster non-hierarchy yang dilakukan dengan pendekatan partisi. Menurut Rencher (2002), metode ini memungkinkan suatu item untuk dapat dipindahkan dari satu cluster ke cluster lainnya. Realokasi seperti ini tidak dapat dilakukan pada hierarchical methods.
Dasar algoritma K-means adalah sebagai berikut:
Tentukan sebanyak ‘k’ klaster yang ingin dibentuk. Kemudian secara acak menempatkan sebanyak ‘k’ titik sebagai centroid awal.
Alokasikan objek ke dalam klaster berdasarkan jarak ke centroid awal terdekat.
Hitung centroid baru yang ada dalam klaster.
Alokasikan kembali objek ke centroid baru yang terdekat.
Kembali langkah 3, sampai tidak terdapat objek yang berpindah klaster atau perubahan nilai centroid.
library(cluster)
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.3.3
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.2
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(readr)
library(markdown)
library(knitr)
## Warning: package 'knitr' was built under R version 4.3.3
library(stats)
Variabel yang akan dikelompokkan hanya GDP per capita, life expectacy, infant deaths, adult mortality, dan BMI dan tahun yang digunakan hanya untuk tahun 2015. Berikut merupakan variabel-variabel yang akan digunakan dalam analisis clustering:
Country: Daftar 179 negara
Infant_deaths: Mewakili kematian bayi per 1000 penduduk
Adult_mortality: Mewakili kematian orang dewasa per 1000 penduduk
BMI: ukuran status gizi pada orang dewasa
GDP_per_capita: GDP per kapita ($USD)
Life_expectancy: Rata-rata harapan hidup kedua jenis kelamin
data1 <- read_excel("F:/datacm.xlsx")
data2 = data1 %>%
filter(Year == 2015) %>%
select(Country,
Infant_deaths,
Adult_mortality,
BMI,
GDP_per_capita,
Life_expectancy
)
head(data2, 10)
## # A tibble: 10 × 6
## Country Infant_deaths Adult_mortality BMI GDP_per_capita Life_expectancy
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Turkiye 11.1 106. 27.8 11006 76.5
## 2 Spain 2.7 57.9 26 25742 82.8
## 3 Russian F… 6.6 223 26.2 9313 71.2
## 4 Cameroon 57 340. 24.3 1383 57.6
## 5 Gambia The 39.7 262. 23.9 661 60.9
## 6 Algeria 21.6 95.8 25.5 4178 76.1
## 7 Oman 9.6 89.2 26.3 18445 76.9
## 8 Madagascar 41.3 218. 21.3 467 65.5
## 9 Norway 2.2 53.9 26.6 74356 82.3
## 10 Vietnam 17.4 125. 21.7 2582 75.1
Hal ini bertujuan agar data dapat dianalisis (hanya kolom dengan variabel numerik saja yang dapat dianalisis).
# Menyimpan rownames asli
original_rownames = rownames(data2)
# Mengubah kolom "Country" menjadi rownames
Country = data2$Country
rownames(data2) = data2$Country
## Warning: Setting row names on a tibble is deprecated.
# Menghapus kolom "Country"
data2 = data2[, -1]
summary(data2)
## Infant_deaths Adult_mortality BMI GDP_per_capita
## Min. : 1.80 Min. : 49.38 Min. :20.5 Min. : 306
## 1st Qu.: 6.65 1st Qu.: 90.79 1st Qu.:23.8 1st Qu.: 1690
## Median :15.20 Median :146.52 Median :26.2 Median : 5391
## Mean :23.56 Mean :163.67 Mean :25.6 Mean : 12617
## 3rd Qu.:36.55 3rd Qu.:215.65 3rd Qu.:27.0 3rd Qu.: 14274
## Max. :95.10 Max. :513.48 Max. :32.1 Max. :105462
## Life_expectancy
## Min. :50.90
## 1st Qu.:66.30
## Median :73.00
## Mean :71.46
## 3rd Qu.:76.85
## Max. :83.80
Dengan melakukan standarisasi data, variabel-variabel akan memiliki rentang yang serupa dan berkontribusi secara seimbang dalam perhitungan jarak sehingga menghasilkan hasil clustering yang lebih akurat. Proses standarisasi dilakukan dengan rumus sebagai berikut.
dengan
\(X_i\): data ke-i
\(\bar{X}\): rata-rata data
\(\sigma\): simpangan baku
maka, akan dihasilkan data dengan \(\mu = 0\) dan \(\sigma = 1\)
datastd <- scale(data2)
head(datastd)
## Infant_deaths Adult_mortality BMI GDP_per_capita Life_expectancy
## [1,] -0.57980940 -0.6430316 1.00558567 -0.09093292 0.64302080
## [2,] -0.97073421 -1.1757622 0.18429365 0.74068796 1.44738527
## [3,] -0.78923341 0.6595829 0.27554832 -0.18647676 -0.03366676
## [4,] 1.55631545 1.9616472 -0.59137104 -0.63400347 -1.77007258
## [5,] 0.75119650 1.0898728 -0.77388038 -0.67474928 -1.34873881
## [6,] -0.09115339 -0.7542935 -0.04384303 -0.47626865 0.59195005
Algotima K-means memiliki 3 metode yaitu:
Silhouette: Metode ini menghitung koefisien siluet dari setiap titik yang mengukur seberapa mirip suatu titik dengan clusternya sendiri dibandingkan dengan cluster lain dengan memberikan representasi grafis yang ringkas tentang seberapa baik setiap objek telah diklasifikasikan.
Within Cluster Sums of Squares (WSS): Metode ini menggunakan nilai Sum of Square Error (SSE) dari masing-masing jumlah cluster. Semakin besar jumlah cluster, maka SSE akan terus mengecil.
Gap Statistics: Metode ini menawarkan cara yang lebih objektif untuk menentukan jumlah cluster dengan mempertimbangkan variabilitas acak. Hal ini memungkinkan untuk menghindari pemilihan jumlah cluster yang berlebihan atau kurang.
library(NbClust)
## Warning: package 'NbClust' was built under R version 4.3.1
fviz_nbclust(datastd, kmeans, method = "silhouette")
fviz_nbclust(datastd, kmeans, method = "wss")
fviz_nbclust(datastd, kmeans, method = "gap_stat")
Dapat disimpulkan bahwa jumlah cluster yang optimal menggunakan metode Silhouette, WSS, dan Gap Statistics adalah 2 cluster dengan cluster 1 sebagai tingkat kesehatan dan cluster 2 sebagai tingkat kesehatan rendah.
k = 2
set.seed(123)
kmeans_result = kmeans(datastd, centers = k)
kmeans_result
## K-means clustering with 2 clusters of sizes 121, 58
##
## Cluster means:
## Infant_deaths Adult_mortality BMI GDP_per_capita Life_expectancy
## 1 -0.5805402 -0.535638 0.5187684 0.2879357 0.5677864
## 2 1.2111269 1.117452 -1.0822582 -0.6006934 -1.1845199
##
## Clustering vector:
## [1] 1 1 1 2 2 1 1 2 1 1 2 2 1 2 2 1 2 1 1 1 1 2 1 1 2 1 2 1 2 1 1 1 2 1 1 1 1
## [38] 1 2 1 1 1 1 2 1 2 1 1 1 2 2 1 1 2 2 1 2 1 1 1 1 2 2 1 2 1 1 1 1 2 1 1 2 1
## [75] 2 2 1 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 2 2 1 2 1 1 1 1 1 1 1 1 1 2 2
## [112] 2 1 1 1 1 1 1 1 2 1 2 2 1 1 1 1 2 1 2 1 2 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1
## [149] 1 1 1 2 1 1 2 1 2 1 2 1 2 2 2 1 2 1 2 1 1 2 1 1 1 2 1 1 2 1 1
##
## Within cluster sum of squares by cluster:
## [1] 283.9177 121.2404
## (between_SS / total_SS = 54.5 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
Pada tulisan “K-means clustering with 2 clusters of sizes 121, 58” berati cluster 1 terdiri dari 121 negara dengan tingkat kesehatan tinggi dan cluster 2 terdiri dari 58 negara dengan tingkat kesehatan rendah.
kmean = kmeans(datastd ,2)
fviz_cluster(kmean, data = datastd)
Dari cluster plot tersebut, dapat dilihat bahwa cluster 1 (negara-negara dengan tingkat kesehatan tinggi) memiliki jumlah titik yang lebih banyak dibandingkan dengan cluster 2 (negara-negara dengan tingkat kesehatan rendah).
Cluster = kmean$cluster
hasil = data.frame(Country ,Cluster)
hasil = hasil[order(hasil$Cluster),]
hasil
## Country Cluster
## 1 Turkiye 1
## 2 Spain 1
## 3 Russian Federation 1
## 6 Algeria 1
## 7 Oman 1
## 9 Norway 1
## 10 Vietnam 1
## 13 Latvia 1
## 16 Belarus 1
## 18 Ukraine 1
## 19 Costa Rica 1
## 20 Israel 1
## 21 New Zealand 1
## 23 Solomon Islands 1
## 24 Iraq 1
## 26 Honduras 1
## 28 Sweden 1
## 30 Dominican Republic 1
## 31 Mexico 1
## 32 Czechia 1
## 34 St. Vincent and the Grenadines 1
## 35 Kiribati 1
## 36 Brazil 1
## 37 Guyana 1
## 38 China 1
## 40 Kuwait 1
## 41 Canada 1
## 42 Grenada 1
## 43 Albania 1
## 45 Saudi Arabia 1
## 47 Lithuania 1
## 48 Turkmenistan 1
## 49 Antigua and Barbuda 1
## 52 Seychelles 1
## 53 Netherlands 1
## 56 Bulgaria 1
## 58 Syrian Arab Republic 1
## 59 El Salvador 1
## 60 Panama 1
## 61 Jordan 1
## 64 Azerbaijan 1
## 66 Thailand 1
## 67 Mongolia 1
## 68 Portugal 1
## 69 Maldives 1
## 71 Trinidad and Tobago 1
## 72 United Arab Emirates 1
## 74 Sao Tome and Principe 1
## 77 Finland 1
## 79 Belize 1
## 80 Lebanon 1
## 81 Slovenia 1
## 82 Jamaica 1
## 83 Belgium 1
## 85 Barbados 1
## 86 Japan 1
## 87 North Macedonia 1
## 88 Morocco 1
## 89 Slovak Republic 1
## 91 St. Lucia 1
## 92 Colombia 1
## 93 Tajikistan 1
## 94 Austria 1
## 95 Moldova 1
## 99 Malta 1
## 101 Montenegro 1
## 102 Greece 1
## 103 Bolivia 1
## 104 Ireland 1
## 105 Croatia 1
## 106 Kyrgyz Republic 1
## 107 Switzerland 1
## 108 Guatemala 1
## 109 Qatar 1
## 113 Kazakhstan 1
## 114 Serbia 1
## 115 Paraguay 1
## 116 Micronesia Fed. Sts. 1
## 117 Bosnia and Herzegovina 1
## 118 Brunei Darussalam 1
## 119 United Kingdom 1
## 121 Armenia 1
## 124 Uzbekistan 1
## 125 Uruguay 1
## 126 Chile 1
## 127 Germany 1
## 129 Denmark 1
## 131 Mauritius 1
## 133 Singapore 1
## 134 Iran Islamic Rep. 1
## 135 Poland 1
## 136 Italy 1
## 137 Cuba 1
## 138 Peru 1
## 139 Vanuatu 1
## 141 Hungary 1
## 143 Australia 1
## 144 Egypt Arab Rep. 1
## 145 Georgia 1
## 146 Bahamas The 1
## 147 Suriname 1
## 148 Luxembourg 1
## 149 Libya 1
## 150 United States 1
## 151 Argentina 1
## 153 Cyprus 1
## 154 Cabo Verde 1
## 156 Iceland 1
## 158 Estonia 1
## 160 Romania 1
## 164 Ecuador 1
## 166 Fiji 1
## 168 Samoa 1
## 169 Sri Lanka 1
## 171 France 1
## 172 Malaysia 1
## 173 Tonga 1
## 175 Tunisia 1
## 176 Venezuela RB 1
## 178 Nicaragua 1
## 179 Bahrain 1
## 4 Cameroon 2
## 5 Gambia The 2
## 8 Madagascar 2
## 11 Eswatini 2
## 12 Botswana 2
## 14 Nepal 2
## 15 Congo Dem. Rep. 2
## 17 Angola 2
## 22 Chad 2
## 25 Guinea-Bissau 2
## 27 Guinea 2
## 29 Indonesia 2
## 33 Benin 2
## 39 Eritrea 2
## 44 Lesotho 2
## 46 India 2
## 50 Malawi 2
## 51 Myanmar 2
## 54 Burundi 2
## 55 Mozambique 2
## 57 Sierra Leone 2
## 62 Tanzania 2
## 63 Gabon 2
## 65 Nigeria 2
## 70 Comoros 2
## 73 Uganda 2
## 75 Pakistan 2
## 76 Ghana 2
## 78 Afghanistan 2
## 84 Equatorial Guinea 2
## 90 Senegal 2
## 96 Congo Rep. 2
## 97 Namibia 2
## 98 Zimbabwe 2
## 100 Kenya 2
## 110 Mauritania 2
## 111 Yemen Rep. 2
## 112 Zambia 2
## 120 Niger 2
## 122 Bangladesh 2
## 123 Somalia 2
## 128 Liberia 2
## 130 Rwanda 2
## 132 Papua New Guinea 2
## 140 Cambodia 2
## 142 Central African Republic 2
## 152 Bhutan 2
## 155 Lao PDR 2
## 157 Togo 2
## 159 Philippines 2
## 161 Haiti 2
## 162 Cote d'Ivoire 2
## 163 Burkina Faso 2
## 165 Timor-Leste 2
## 167 Mali 2
## 170 Ethiopia 2
## 174 South Africa 2
## 177 Djibouti 2
Tabel di atas menunjukkan daftar masing-masing negara pada tiap cluster.
Cluster 1 (negara-negara dengan tingkat kesehatan tinggi) Turkiye, Spain, Russian Federation, Algeria, Oman, Norway, Vietnam, Latvia, Belarus, Ukraine, Costa Rica, Israel, New Zealand, Solomon Islands, Iraq, Honduras, Sweden, Dominican Republic, Mexico, Czechia, St. Vincent and the Grenadines, Kiribati, Brazil, Guyana, China, Kuwait, Canada, Grenada, Albania, Saudi Arabia, Lithuania, Turkmenistan, Antigua and Barbuda, Seychelles, Netherlands, Bulgaria, Syrian Arab Republic, El Salvador, Panama, Jordan, Azerbaijan, Thailand, Mongolia, Portugal, Maldives, Trinidad and Tobago, United Arab Emirates, Sao Tome and Principe, Finland, Belize, Lebanon, Slovenia, Jamaica, Belgium, Barbados, Japan, North Macedonia, Morocco, Slovak Republic, St. Lucia, Colombia, Tajikistan, Austria, Moldova, Malta, Montenegro, Greece, Bolivia, Ireland, Croatia, Kyrgyz Republic, Switzerland, Guatemala, Qatar, Kazakhstan, Serbia, Paraguay, Micronesia Fed. Sts., Bosnia and Herzegovina, Brunei Darussalam, United Kingdom, Armenia, Uzbekistan, Uruguay, Chile, Germany, Denmark, Mauritius, Singapore, Iran Islamic Rep., Poland, Italy, Cuba, Peru, Vanuatu, Hungary, Australia, Egypt Arab Rep., Georgia, Bahamas The, Suriname, Luxembourg, Libya, United States, Argentina, Cyprus, Cabo Verde, Iceland, Estonia, Romania, Ecuador, Fiji, Samoa, Sri Lanka, France, Malaysia, Tonga, Tunisia, Venezuela RB, Nicaragua, Bahrain.
Cluster 2 (negara-negara dengan tingkat kesehatan rendah) Cameroon, Gambia The, Madagascar, Eswatini, Botswana, Nepal, Congo Dem. Rep., Angola, Chad, Guinea-Bissau, Guinea, Indonesia, Benin, Eritrea, Lesotho, India, Malawi, Myanmar, Burundi, Mozambique, Sierra Leone, Tanzania, Gabon, Nigeria, Comoros, Uganda, Pakistan, Ghana, Afghanistan, Equatorial Guinea, Senegal, Congo Rep., Namibia, Zimbabwe, Kenya, Mauritania, Yemen Rep., Zambia, Niger, Bangladesh, Somalia, Liberia, Rwanda, Papua New Guinea, Cambodia, Central African Republic, Bhutan, Lao PDR, Togo, Philippines, Haiti, Cote d’Ivoire, Burkina Faso, Timor-Leste, Mali, Ethiopia, South Africa, Djibouti.
Berdasarkan analisis clustering dengan metode K-Means yang dilakukan dapat disimpulkan bahwa:
Terdapat dua cluster yang terbentuk, yaitu cluster 1 merupakan negara-negara dengan tingkat kesehatan tinggi yang beranggotakan 121 negara dan cluster 2 merupakan negara-negara dengan tingkat kesehatan rendah yang beranggotakan 58 negara.
Negara-negara yang termasuk dalam cluster 1 adalah Turkiye, Spain, Russian Federation, Algeria, Oman, Norway, Vietnam, Latvia, Belarus, Ukraine, Costa Rica, Israel, New Zealand, Solomon Islands, Iraq, Honduras, Sweden, Dominican Republic, Mexico, Czechia, St. Vincent and the Grenadines, Kiribati, Brazil, Guyana, China, Kuwait, Canada, Grenada, Albania, Saudi Arabia, Lithuania, Turkmenistan, Antigua and Barbuda, Seychelles, Netherlands, Bulgaria, Syrian Arab Republic, El Salvador, Panama, Jordan, Azerbaijan, Thailand, Mongolia, Portugal, Maldives, Trinidad and Tobago, United Arab Emirates, Sao Tome and Principe, Finland, Belize, Lebanon, Slovenia, Jamaica, Belgium, Barbados, Japan, North Macedonia, Morocco, Slovak Republic, St. Lucia, Colombia, Tajikistan, Austria, Moldova, Malta, Montenegro, Greece, Bolivia, Ireland, Croatia, Kyrgyz Republic, Switzerland, Guatemala, Qatar, Kazakhstan, Serbia, Paraguay, Micronesia Fed. Sts., Bosnia and Herzegovina, Brunei Darussalam, United Kingdom, Armenia, Uzbekistan, Uruguay, Chile, Germany, Denmark, Mauritius, Singapore, Iran Islamic Rep., Poland, Italy, Cuba, Peru, Vanuatu, Hungary, Australia, Egypt Arab Rep., Georgia, Bahamas The, Suriname, Luxembourg, Libya, United States, Argentina, Cyprus, Cabo Verde, Iceland, Estonia, Romania, Ecuador, Fiji, Samoa, Sri Lanka, France, Malaysia, Tonga, Tunisia, Venezuela RB, Nicaragua, Bahrain.
Negara-negara yang termasuk dalam cluster 2 adalah Cameroon, Gambia The, Madagascar, Eswatini, Botswana, Nepal, Congo Dem. Rep., Angola, Chad, Guinea-Bissau, Guinea, Indonesia, Benin, Eritrea, Lesotho, India, Malawi, Myanmar, Burundi, Mozambique, Sierra Leone, Tanzania, Gabon, Nigeria, Comoros, Uganda, Pakistan, Ghana, Afghanistan, Equatorial Guinea, Senegal, Congo Rep., Namibia, Zimbabwe, Kenya, Mauritania, Yemen Rep., Zambia, Niger, Bangladesh, Somalia, Liberia, Rwanda, Papua New Guinea, Cambodia, Central African Republic, Bhutan, Lao PDR, Togo, Philippines, Haiti, Cote d’Ivoire, Burkina Faso, Timor-Leste, Mali, Ethiopia, South Africa, Djibouti.