Segmentasi Kesejahteraan Kabupaten/Kota di Sulawesi Selatan Menggunakan Metode K-Medoids (PAM)
Metode K-Medoids (PAM – Partitioning Around Medoids) digunakan sebagai alternatif K-Means karena:
Lebih robust terhadap outlier
Menggunakan objek asli sebagai pusat cluster (medoid)
Variabel:
Kemiskinan
Pengangguran
IPM
Pengeluaran
data <- read.csv("D:/Youtube/Clustering/K-means.csv")
head(data)
## X daerah kemiskinan pengangguran ipm pengeluaran
## 1 1 Kepulauan Selayar 18 7 65 7
## 2 2 Bulukumba 16 6 67 8
## 3 3 Bantaeng 14 5 69 9
## 4 4 Jeneponto 20 8 63 6
## 5 5 Takalar 17 6 66 7
## 6 6 Gowa 12 5 72 10
data_scaled <- scale(data[,3:6])
wss <- numeric(10)
for(i in 1:10){
km <- kmeans(data_scaled, centers = i, nstart = 25)
wss[i] <- km$tot.withinss
}
plot(1:10, wss, type="b", pch=19,
xlab="Jumlah Cluster",
ylab="Total Within Sum of Squares")
Berdasarkan metode elbow pada grafik tersebut, jumlah klaster optimal yang disarankan adalah 3, karena setelah titik tersebut penurunan nilai Total Within Sum of Squares mulai melandai secara signifikan.
library(cluster)
sil <- silhouette(km$cluster, dist(data_scaled))
head(sil)
## cluster neighbor sil_width
## [1,] 5 9 0.6935360
## [2,] 7 9 0.5198587
## [3,] 10 6 0.5571688
## [4,] 3 5 0.0000000
## [5,] 9 7 0.6685811
## [6,] 6 2 0.5351026
Berdasarkan data silhouette width yang disajikan, observasi pertama memiliki struktur klaster paling kuat dengan nilai 0.6935360
pam_model <- pam(data_scaled, k = 3)
pam_model
## Medoids:
## ID kemiskinan pengangguran ipm pengeluaran
## [1,] 5 0.8445805 0.5796887 -0.84614175 -0.92902303
## [2,] 13 0.0444516 -0.1932296 -0.02564066 -0.08764368
## [3,] 21 -1.0223869 -0.9661478 0.79486043 0.75373566
## Clustering vector:
## [1] 1 1 2 1 1 2 1 3 2 2 1 2 2 3 3 2 1 1 1 1 3 3 3 3
## Objective function:
## build swap
## 0.7228186 0.7228186
##
## Available components:
## [1] "medoids" "id.med" "clustering" "objective" "isolation"
## [6] "clusinfo" "silinfo" "diss" "call" "data"
data$cluster <- pam_model$clustering
data
## X daerah kemiskinan pengangguran ipm pengeluaran cluster
## 1 1 Kepulauan Selayar 18 7 65 7 1
## 2 2 Bulukumba 16 6 67 8 1
## 3 3 Bantaeng 14 5 69 9 2
## 4 4 Jeneponto 20 8 63 6 1
## 5 5 Takalar 17 6 66 7 1
## 6 6 Gowa 12 5 72 10 2
## 7 7 Sinjai 15 6 68 8 1
## 8 8 Maros 11 4 73 11 3
## 9 9 Pangkep 13 5 71 10 2
## 10 10 Barru 14 5 70 9 2
## 11 11 Bone 16 6 68 8 1
## 12 12 Soppeng 13 5 71 9 2
## 13 13 Wajo 14 5 70 9 2
## 14 14 Sidenreng Rappang 12 4 72 10 3
## 15 15 Pinrang 11 4 73 11 3
## 16 16 Enrekang 15 5 69 8 2
## 17 17 Luwu 17 6 67 7 1
## 18 18 Tana Toraja 19 7 64 6 1
## 19 19 Toraja Utara 18 7 65 7 1
## 20 20 Luwu Utara 16 6 66 8 1
## 21 21 Luwu Timur 10 4 74 11 3
## 22 22 Makassar 5 3 82 15 3
## 23 23 Parepare 7 3 80 14 3
## 24 24 Palopo 9 4 78 13 3
pca <- prcomp(data_scaled, center = TRUE, scale. = TRUE)
pca_data <- as.data.frame(pca$x)
# tambahkan cluster & label daerah
pca_data$cluster <- factor(data$cluster)
pca_data$daerah <- data$daerah
library(ggplot2)
ggplot(pca_data, aes(x = PC1, y = PC2, color = cluster)) +
geom_point(size = 4) +
geom_text(aes(label = daerah), vjust = -1, size = 3) +
labs(
color = "Cluster"
) +
theme_minimal()
aggregate(data[,3:6], by = list(cluster = data$cluster), mean)
## cluster kemiskinan pengangguran ipm pengeluaran
## 1 1 17.200000 6.500000 65.90000 7.200000
## 2 2 13.571429 5.000000 70.28571 9.142857
## 3 3 9.285714 3.714286 76.00000 12.142857
Klaster 2 (Menengah): Wilayah dengan profil ekonomi moderat, di mana tingkat kemiskinan berada di angka 13,5% dan IPM sudah mencapai angka 70,2, menunjukkan kondisi kesejahteraan yang berada di posisi tengah.
Klaster 3 (Tingkat Kesejahteraan Tinggi): Wilayah dengan performa terbaik yang ditandai dengan tingkat kemiskinan terendah (9,2%), angka pengangguran paling minim (3,7%), serta kualitas hidup (IPM 76,0) dan daya beli (pengeluaran 12,1) yang paling tinggi.