Analisis Klasterisasi Sosial Ekonomi Kabupaten/Kota di Kalimantan Selatan Menggunakan Metode K-Means
Kajian ini bertujuan untuk mengelompokkan kabupaten/kota di Provinsi Kalimantan Selatan berdasarkan indikator sosial ekonomi yang mencakup tingkat kemiskinan, tingkat pengangguran terbuka, dan Indeks Pembangunan Manusia (IPM). Data yang digunakan bersumber dari data Badan Pusat Statistik (BPS) tahun 2024. Metode analisis yang digunakan adalah K-Means Clustering yang diawali dengan proses standardisasi data, penentuan jumlah cluster optimal menggunakan metode silhouette, dan interpretasi karakteristik setiap cluster berdasarkan nilai centroid. Hasil analisis menunjukkan bahwa jumlah cluster optimal adalah empat (k = 4). Cluster pertama mencerminkan wilayah dengan pengangguran tinggi namun IPM cukup baik, menandakan daerah yang memiliki kualitas hidup relatif tinggi tetapi masih menghadapi tantangan di sektor ketenagakerjaan. Cluster kedua menggambarkan wilayah perkotaan dengan IPM sangat tinggi dan pengangguran di atas rata-rata, merepresentasikan pusat aktivitas ekonomi dan pembangunan manusia di provinsi. Cluster ketiga menandai daerah dengan kemiskinan cukup tinggi. Sedangkan cluster keempat mencerminkan wilayah dengan kondisi sosial ekonomi yang ditandai oleh kemiskinan dan pengangguran rendah serta IPM tinggi.
Penyiapan Data
Data yang digunakan dalam penelitian ini berasal dari data Badan Pusat Statistik (BPS) Provinsi Kalimantan Selatan yang mencakup tiga variabel utama, yaitu: (1) Tingkat Kemiskinan (%), (2) Tingkat Pengangguran Terbuka (%), dan (3) Indeks Pembangunan Manusia (IPM). Seluruh data bersifat sekunder dan menggambarkan kondisi sosial ekonomi pada Tahun 2024 dari 13 kabupaten/kota di Kalimantan Selatan. Setelah dilakukan perekapan dilakukan pada file excel (xlsx) selanjutnya dilakukan pemanggilan data (Input Data) pada RStudio.
Input Data
library(openxlsx)
df1 = read.xlsx("C:/Users/dhita/Downloads/Analisis Pengelompokan Tingkat Kemiskinan di Provinsi Kalimantan Selatan/data.xlsx")
#kable(df1, caption = "Tabel Data")
Kode di atas bertujuan untuk membaca dan menyiapkan data yang akan digunakan dalam analisis K-Means Clustering. Data diimpor dari file Excel menggunakan fungsi read.xlsx().
df1$kabupaten_kota = as.factor(df1$kabupaten_kota)
df1$kemiskinan = as.numeric(df1$kemiskinan)
df1$pengangguran = as.numeric(df1$pengangguran)
df1$ipm = as.numeric(df1$ipm)
Kode di atas bertujuan untuk melakukan penyesuaian tipe variabel agar setiap variabel memiliki fungsi yang sesuai dalam analisis:
kabupaten_kota diubah menjadi factor, karena berisi kategori (nama wilayah).
kemiskinan, pengangguran, dan ipm dikonversi menjadi numeric, karena akan digunakan dalam perhitungan matematis untuk proses clustering.
## 'data.frame': 13 obs. of 4 variables:
## $ kabupaten_kota: Factor w/ 13 levels "Balangan","Banjar",..: 12 9 2 3 13 4 5 6 10 11 ...
## $ kemiskinan : num 3.74 4.45 2.36 4.36 3.33 3.38 5.81 5.75 5.64 3.41 ...
## $ pengangguran : num 3.43 6.05 2.71 3.41 3.86 2.11 3.2 3.73 3.44 6.37 ...
## $ ipm : num 73.4 72.4 74.4 71.4 74.1 ...
Output di atas menunjukkan bahwa df1 merupakan sebuah objek bertipe data.frame yang terdiri atas:
13 observasi (rows/baris) → masing-masing merepresentasikan satu kabupaten/kota di Provinsi Kalimantan Selatan.
4 variabel (columns/kolom) → yang berisi informasi variabel.
Summary Data
## kabupaten_kota kemiskinan pengangguran ipm
## Balangan :1 Min. :2.360 Min. :2.110 Min. :71.40
## Banjar :1 1st Qu.:3.410 1st Qu.:3.200 1st Qu.:73.33
## Barito Kuala :1 Median :4.360 Median :3.440 Median :73.95
## Hulu Sungai Selatan:1 Mean :4.267 Mean :4.038 Mean :74.71
## Hulu Sungai Tengah :1 3rd Qu.:4.870 3rd Qu.:4.930 3rd Qu.:74.50
## Hulu Sungai Utara :1 Max. :5.810 Max. :6.560 Max. :81.65
## (Other) :7
Fungsi summary() digunakan untuk menampilkan statistik deskriptif dasar dari setiap variabel di dalam dataset df1. Dari hasil tersebut, diperoleh ringkasan data sosial ekonomi dari 13 kabupaten/kota di Provinsi Kalimantan Selatan yang terdiri dari tiga variabel utama: kemiskinan, pengangguran, dan Indeks Pembangunan Manusia (IPM). Berdasarkan output tersebut dapat diketahui bahwa:
Tingkat kemiskinan di Kalimantan Selatan bervariasi antara 2,36% hingga 5,81%. Sebagian besar daerah memiliki tingkat kemiskinan di sekitar 4%, yang terlihat dari median (4.36) dan mean (4.27) yang hampir sama — menunjukkan distribusi data relatif simetris dan tidak terlalu condong ke satu sisi.
Tingkat pengangguran terbuka berkisar antara 2,11% hingga 6,56%. Distribusi pengangguran sedikit condong ke kanan (positively skewed), terlihat dari selisih antara mean (4.04) dan median (3.44).
Nilai IPM di Kalimantan Selatan menunjukkan rentang 71,40 hingga 81,65, dengan rata-rata sekitar 74,75. Hal ini menunjukkan bahwa sebagian besar daerah memiliki tingkat pembangunan manusia yang masuk ke dalam kategori “tinggi” dan sisanya masuk ke dalam kategori “sangat tinggi”.
Eksplorasi Data
## [1] Tanah Laut Kota Baru Banjar
## [4] Barito Kuala Tapin Hulu Sungai Selatan
## [7] Hulu Sungai Tengah Hulu Sungai Utara Tabalong
## [10] Tanah Bumbu Balangan Kota Banjarmasin
## [13] Kota Banjarbaru
## 13 Levels: Balangan Banjar Barito Kuala ... Tapin
Berdasarkan output diatas dapat diketahui bahwa dataset sudah mencakup seluruh 13 kabupaten/kota di Kalimantan Selatan tanpa ada data yang hilang atau terduplikasi.
Eksplorasi dengan Box Plot
# Layout 1 baris 3 kolom
par(mfrow = c(1, 3))
# 1️⃣ Boxplot Kemiskinan
b1 <- boxplot(df1$kemiskinan, main = "Kemiskinan", xlab = "Persentase Rumah Tangga Miskin", col = "lightblue")
out1 <- df1$kabupaten_kota[df1$kemiskinan %in% b1$out]
if (length(out1) > 0) {
text(rep(1, length(out1)), b1$out, labels = out1, pos = 3, cex = 0.8, col = "red")
}
# 2️⃣ Boxplot Pengangguran
b2 <- boxplot(df1$pengangguran, main = "Pengangguran", xlab = "Persentase Pengangguran", col = "lightgreen")
out2 <- df1$kabupaten_kota[df1$pengangguran %in% b2$out]
if (length(out2) > 0) {
text(rep(1, length(out2)), b2$out, labels = out2, pos = 3, cex = 0.8, col = "red")
}
# 3️⃣ Boxplot IPM
b3 <- boxplot(df1$ipm, main = "Indeks Pembangunan Manusia (IPM)", xlab = "Nilai IPM", col = "lightpink")
out3 <- df1$kabupaten_kota[df1$ipm %in% b3$out]
if (length(out3) > 0) {
text(rep(1, length(out3)), b3$out, labels = out3, pos = 3, cex = 0.8, col = "red")
}
Berdasarkan boxplot di atas dapat diketahui beberapa hal sebagai berikut:
- Variabel Kemiskinan
Hasil boxplot menunjukkan bahwa tidak terdapat outlier pada variabel kemiskinan. Hal ini menandakan bahwa seluruh kabupaten/kota di Provinsi Kalimantan Selatan memiliki tingkat kemiskinan yang relatif homogen, tanpa adanya daerah dengan nilai ekstrem yang jauh lebih tinggi maupun lebih rendah dibandingkan wilayah lainnya.
Rentang nilai pada boxplot tampak cukup sempit, yang mengindikasikan variasi tingkat kemiskinan antarwilayah tergolong kecil. Dengan demikian, kondisi ini menggambarkan bahwa disparitas ekonomi antar kabupaten/kota di Kalimantan Selatan dalam hal jumlah penduduk miskin tidak terlalu mencolok. Secara umum, persebaran tingkat kemiskinan di provinsi ini dapat dikategorikan sebagai merata.
- Variabel Pengangguran
Visualisasi boxplot untuk variabel pengangguran juga menunjukkan bahwa tidak ditemukan adanya outlier. Hal ini mengindikasikan bahwa tingkat pengangguran terbuka di seluruh wilayah provinsi relatif berada pada kisaran yang sama, tanpa ada daerah yang menunjukkan nilai ekstrem, baik tinggi maupun rendah.
Posisi median yang berada di tengah kotak boxplot menunjukkan bahwa distribusi data cenderung seimbang, dengan persebaran yang tidak terlalu lebar. Oleh karena itu, dapat disimpulkan bahwa kondisi ketenagakerjaan antar kabupaten/kota di Kalimantan Selatan tergolong merata, dan tidak ada wilayah yang menunjukkan perbedaan signifikan terhadap rata-rata provinsi.
- Variabel IPM (Indeks Pembangunan Manusia)
Berbeda dengan dua variabel sebelumnya, hasil boxplot untuk IPM memperlihatkan adanya tiga outlier. Daerah tersebut meliputi:
- Barito Kuala, yang berada di bawah batas bawah (lower whisker) boxplot,
- Kota Banjarmasin dan Kota Banjarbaru, keduanya berada di atas batas atas (upper whisker) boxplot.”
Kondisi ini menunjukkan adanya ketimpangan pembangunan manusia antarwilayah di Kalimantan Selatan. Meskipun demikian, secara keseluruhan nilai IPM kabupaten/kota di Kalimantan Selatan telah berada dalam kategori tinggi dan sangat tinggi, sehingga perbedaan ini lebih merefleksikan kesenjangan tingkat pembangunan antarwilayah, bukan rendahnya capaian pembangunan secara umum.
Memilih Variabel
## kemiskinan pengangguran ipm
## 1 3.74 3.43 73.42
## 2 4.45 6.05 72.42
## 3 2.36 2.71 74.41
## 4 4.36 3.41 71.40
## 5 3.33 3.86 74.06
## 6 3.38 2.11 73.95
Kode di atas digunakan untuk memilih variabel numerik dari data utama (df1), yaitu kolom ke-2 sampai kolom ke-4. Dengan demikian, variabel yang diambil adalah: kemiskinan, pengangguran, dan IPM.
Standardisasi Data
Sebelum dilakukan analisis gerombol (clustering), seluruh variabel distandardisasi menggunakan fungsi scale() sehingga memiliki rata-rata 0 dan simpangan baku 1. Hal ini memastikan bahwa setiap indikator memiliki pengaruh yang sama besar terhadap proses pembentukan cluster.
## kemiskinan pengangguran ipm
## 1 -0.497 -0.414 -0.418
## 2 0.173 1.370 -0.742
## 3 -1.797 -0.904 -0.097
## 4 0.088 -0.427 -1.073
## 5 -0.883 -0.121 -0.210
## 6 -0.836 -1.312 -0.246
## 7 1.454 -0.570 -0.447
## 8 1.398 -0.209 -0.963
## 9 1.294 -0.407 0.409
## 10 -0.808 1.588 -0.068
## 11 0.568 -0.918 -0.285
## 12 0.295 1.717 1.888
## 13 -0.449 0.607 2.251
## attr(,"scaled:center")
## kemiskinan pengangguran ipm
## 4.266923 4.037692 74.708462
## attr(,"scaled:scale")
## kemiskinan pengangguran ipm
## 1.061056 1.468867 3.083853
Eksplorasi Matriks Jarak pada Data Standardisasi
- Tujuan Analisis
Kode berikut digunakan untuk menghitung dan memvisualisasikan jarak antarwilayah berdasarkan tiga variabel yang telah distandardisasi, yaitu: Kemiskinan (%), Pengangguran (%), dan Indeks Pembangunan Manusia (IPM).
## Warning: package 'factoextra' was built under R version 4.4.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.4.2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
jarak <- get_dist(scaledmydata)
fviz_dist(jarak, gradient = list(low="#BF00FF",
mid="white", high="#FFC0CB"))
Fungsi get_dist() menghitung jarak Euclidean antar kabupaten/kota berdasarkan kemiripan karakteristik sosial-ekonomi mereka. Sementara fungsi fviz_dist() digunakan untuk menampilkan hasilnya dalam bentuk peta jarak berwarna (heatmap).
- Makna Warna dalam Heatmap
Warna ungu gelap menunjukkan jarak yang kecil, artinya dua wilayah memiliki karakteristik yang mirip atau hampir sama berdasarkan ketiga indikator (kemiskinan, pengangguran, dan IPM).
Warna putih menunjukkan jarak sedang.
Warna merah muda terang menunjukkan jarak yang besar, artinya kedua wilayah memiliki perbedaan karakteristik sosial-ekonomi yang lebih signifikan.
Dengan kata lain, semakin gelap warnanya, semakin mirip kondisi antarwilayah.
- Pola Hubungan Antar Wilayah
Dari hasil visualisasi terlihat beberapa pola penting:
Beberapa wilayah seperti (antara Kota Banjarbaru dan Kota Banjarmasin), dan (antara Kotabaru dan Tanah Bumbu) memiliki warna ungu gelap di antara satu sama lain, yang berarti memiliki kemiripan tinggi dalam kondisi sosial-ekonomi (kemiskinan, pengangguran, IPM yang mirip).
Pola diagonal berwarna ungu tegas dari kiri atas ke kanan bawah menunjukkan jarak nol (0) — artinya setiap wilayah dibandingkan dengan dirinya sendiri.
Dengan demikian, semakin rendah jarak antar dua wilayah, semakin besar peluang keduanya akan tergabung dalam cluster yang sama pada analisis K-Means selanjutnya.
Clustering dengan Metode K-Means
Optimum Cluster (Penentuan (k) optimal)
Melalui visualisasi grafik Silhouette Method menggunakan fungsi fviz_nbclust(), terlihat bahwa nilai average silhouette width tertinggi terjadi pada k = 4. Hal ini menunjukkan bahwa model dengan empat cluster (k = 4) merupakan jumlah cluster yang paling optimal.
Nilai silhouette width yang tinggi mengindikasikan bahwa objek dalam suatu cluster memiliki kemiripan yang kuat dengan anggota cluster sendiri dan perbedaan yang cukup jauh dengan anggota cluster lain. Oleh karena itu, pemilihan empat cluster dianggap paling efisien dalam menggambarkan struktur alami data tanpa kehilangan makna pembeda antar kelompok.
Penentuan kelompok/cluster masing-masing kabupaten/kota
set.seed(101)
kmeans_df2 <- kmeans(scaledmydata, centers = 4, nstart =25)
df1$cluster <- as.factor(kmeans_df2$cluster)
kable(df1, caption = 'Tabel Cluster Tiap Kabupaten/Kota')
kabupaten_kota | kemiskinan | pengangguran | ipm | cluster |
---|---|---|---|---|
Tanah Laut | 3.74 | 3.43 | 73.42 | 4 |
Kota Baru | 4.45 | 6.05 | 72.42 | 1 |
Banjar | 2.36 | 2.71 | 74.41 | 4 |
Barito Kuala | 4.36 | 3.41 | 71.40 | 3 |
Tapin | 3.33 | 3.86 | 74.06 | 4 |
Hulu Sungai Selatan | 3.38 | 2.11 | 73.95 | 4 |
Hulu Sungai Tengah | 5.81 | 3.20 | 73.33 | 3 |
Hulu Sungai Utara | 5.75 | 3.73 | 71.74 | 3 |
Tabalong | 5.64 | 3.44 | 75.97 | 3 |
Tanah Bumbu | 3.41 | 6.37 | 74.50 | 1 |
Balangan | 4.87 | 2.69 | 73.83 | 3 |
Kota Banjarmasin | 4.58 | 6.56 | 80.53 | 2 |
Kota Banjarbaru | 3.79 | 4.93 | 81.65 | 2 |
k1 = df1$kabupaten_kota[kmeans_df2$cluster == 1]
k2 = df1$kabupaten_kota[kmeans_df2$cluster == 2]
k3 = df1$kabupaten_kota[kmeans_df2$cluster == 3]
k4 = df1$kabupaten_kota[kmeans_df2$cluster == 4]
k1 = paste(k1, collapse = ', ')
k2 = paste(k2, collapse = ', ')
k3 = paste(k3, collapse = ', ')
k4 = paste(k4, collapse = ', ')
klaster = data.frame(
Klaster = c('Klaster 1','Klaster 2','Klaster 3','Klaster 4'),
Anggota = c(k1,k2,k3,k4)
)
kable(klaster, caption = 'Anggota hasil clustering')
Klaster | Anggota |
---|---|
Klaster 1 | Kota Baru, Tanah Bumbu |
Klaster 2 | Kota Banjarmasin, Kota Banjarbaru |
Klaster 3 | Barito Kuala, Hulu Sungai Tengah, Hulu Sungai Utara, Tabalong, Balangan |
Klaster 4 | Tanah Laut, Banjar, Tapin, Hulu Sungai Selatan |
Interpretasi Hasil Klasterisasi Kabupaten/Kota (K = 4)
Berdasarkan hasil analisis K-Means Clustering dengan jumlah cluster optimal sebanyak 4 kelompok, kabupaten/kota di Provinsi Kalimantan Selatan terbagi ke dalam empat cluster yang mencerminkan perbedaan kondisi sosial ekonomi berdasarkan tingkat kemiskinan, pengangguran, dan Indeks Pembangunan Manusia (IPM).
Cluster 1 → (Kota Baru, Tanah Bumbu) Ditandai dengan tingkat pengangguran tinggi dan IPM relatif tinggi. Wilayah ini tergolong memiliki kualitas hidup baik, namun masih menghadapi tantangan ketenagakerjaan.
Cluster 2 → (Kota Banjarmasin, Kota Banjarbaru) Mewakili wilayah perkotaan dengan IPM sangat tinggi, disertai tingkat pengangguran lebih tinggi dari rata-rata provinsi. Kedua kota ini menjadi pusat ekonomi dan pembangunan manusia di Kalimantan Selatan.
Cluster 3 → (Barito Kuala, Hulu Sungai Tengah, Hulu Sungai Utara, Tabalong, Balangan) Memiliki kemiskinan yang cukup tinggi.
Cluster 4 → (Tanah Laut, Banjar, Tapin, Hulu Sungai Selatan) Menunjukkan kemiskinan dan pengangguran rendah serta IPM cukup tinggi.
Visualisasi Hasil Clustering
Visualisasi Cluster Plot
Interpretasi Hasil Visualisasi Cluster Plot (K-Means, K = 4)
Plot di atas merupakan hasil visualisasi dari analisis K-Means Clustering yang mengelompokkan 13 kabupaten/kota di Provinsi Kalimantan Selatan menjadi 4 cluster. Sumbu Dim1 (48,1%) dan Dim2 (33,4%) menjelaskan sebagian besar variasi data, sehingga posisi dan jarak antar titik menggambarkan tingkat kemiripan atau perbedaan karakteristik antar wilayah.
Cluster 1 (Hijau – Kota Baru dan Tanah Bumbu)
Cluster 2 (Merah – Kota Banjarmasin dan Kota Banjarbaru)
Cluster 3 (Biru – Barito Kuala, Balangan, Tabalong, Hulu Sungai Tengah, dan Hulu Sungai Utara)
Cluster 4 (Kuning – Tanah Laut, Tapin, Hulu Sungai Selatan, dan Banjar)
Visualisasi Cluster dengan Peta Leaflet
Peta interaktif ini bertujuan untuk menampilkan hasil pengelompokan (klasterisasi) dari 13 kabupaten/kota di Provinsi Kalimantan Selatan berdasarkan variabel kemiskinan, pengangguran, dan IPM. Setiap warna pada peta merepresentasikan cluster dengan karakteristik sosial-ekonomi yang serupa, sementara fitur pop-up memungkinkan pengguna melihat informasi detail tiap wilayah secara langsung. Dengan demikian, peta ini memudahkan analisis spasial kondisi sosial-ekonomi, membantu mengidentifikasi wilayah , serta mendukung perencanaan kebijakan pembangunan daerah.
Profil Rata-Rata Tiap Cluster
data_fiz <- subset(data_fiz, select = -c(NAMOBJ, kabupaten_kota))
mean_cluster_km <- aggregate(data_fiz, list(kmeans_df2$cluster),mean)
mean_cluster_km
## Group.1 kemiskinan pengangguran ipm Cluster
## 1 1 3.9300 6.2100 73.460 1
## 2 2 4.1850 5.7450 81.090 2
## 3 3 5.2860 3.2940 73.254 3
## 4 4 3.2025 3.0275 73.960 4
Pengujian Multivariate Analysis of Variance (MANOVA) untuk Mengetahui Perbedaan Pengaruh Cluster Terhadap Indikator Sosial dan Ekonomi
# Taking two dependent variable
kemiskinan <- data_fiz$kemiskinan
pengangguran <- data_fiz$pengangguran
ipm<-data_fiz$ipm
# MANOVA test
result = manova(cbind(kemiskinan, pengangguran, ipm) ~ Cluster,
data = data_fiz)
summary(result)
## Df Pillai approx F num Df den Df Pr(>F)
## Cluster 1 0.7813 10.717 3 9 0.002507 **
## Residuals 11
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Berdasarkan output di atas dapat diketahui bahwa: nilai indikator-indikator sosial ekonomi menunjukkan perbedaan yang signifikan antar Cluster pada taraf signifikansi 5 persen.
Daftar Pustaka
Abdul Yunus. K Means Cluster Analysis using R. RPubs. https://rpubs.com/abdul_yunus/Kmeans_Clustering.
Amelia, A., Nur, I. M., Rizky, M., & Milasari, S. P. (2023). Pengelompokan Tingkat Kemiskinan di Provinsi Jawa Barat dengan Metode K-Means Clustering. Journal of Data Insights, 1(2), 51–61. Universitas Muhammadiyah Semarang. https://doi.org/10.26714/jodi
Anggit Novietasari. Pengelompokan Tingkat Kemiskinan Kab/Kota di Jawa Tengah. RPubs. https://rpubs.com/anggitnoviee/k-means.
Badan Pusat Statistik (BPS). (2024). Berita Resmi Statistik No. 72/12/63/Th. XXVIII. Banjarbaru: BPS Provinsi Kalimantan Selatan.
Badan Pusat Statistik (BPS). (2025). Provinsi Kalimantan Selatan dalam Angka 2025. Banjarbaru: BPS Provinsi Kalimantan Selatan.
Diva Nifsu Mustika. Penerapan K-Means Clustering untuk Mengelompokkan Fasilitas Kesehatan pada Kabupaten/Kota Provinsi Jawa Barat 2022. RPubs. https://rpubs.com/divanm/psd-kel2p2.
Dominico Savio Winning Nugroho. Analisis K-Means: Clustering Provinsi di Indonesia Berdasarkan Indikator Sosial dan Ekonomi Tahun 2024. RPubs. https://rpubs.com/DomSav/AnalisisK-Means.
https://www.geeksforgeeks.org/r-language/manova-test-in-r-programming/
Yesan Tiara. Penerapan K-Means Clustering. RPubs. https://rpubs.com/yesantiara/k-means.