library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.2
## Warning: package 'ggplot2' was built under R version 4.4.3
## Warning: package 'tibble' was built under R version 4.4.2
## Warning: package 'tidyr' was built under R version 4.4.3
## Warning: package 'readr' was built under R version 4.4.3
## Warning: package 'purrr' was built under R version 4.4.3
## Warning: package 'dplyr' was built under R version 4.4.3
## Warning: package 'stringr' was built under R version 4.4.3
## Warning: package 'forcats' was built under R version 4.4.2
## Warning: package 'lubridate' was built under R version 4.4.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 4.0.0 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.1.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readr)
library(cluster)
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.4.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(NbClust)
library(fpc)
## Warning: package 'fpc' was built under R version 4.4.3
library(clusterSim)
## Warning: package 'clusterSim' was built under R version 4.4.3
## Loading required package: MASS
## Warning: package 'MASS' was built under R version 4.4.3
##
## Attaching package: 'MASS'
##
## The following object is masked from 'package:dplyr':
##
## select
library(magrittr)
## Warning: package 'magrittr' was built under R version 4.4.3
##
## Attaching package: 'magrittr'
##
## The following object is masked from 'package:purrr':
##
## set_names
##
## The following object is masked from 'package:tidyr':
##
## extract
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.4.2
##
## Attaching package: 'reshape2'
##
## The following object is masked from 'package:tidyr':
##
## smiths
library(ggpubr)
## Warning: package 'ggpubr' was built under R version 4.4.3
cluster <- read.csv("C:/Users/nyayu/Statistika/Semester 5/TPG (Teknik Peubah Ganda)/data clustering - Sheet1 (1).csv")
str (cluster)
## 'data.frame': 245 obs. of 5 variables:
## $ desa : chr "EMBAWANG" "PAGAR DEWA" "TANJUNG BULAN" "LESUNG BATU" ...
## $ IKS : chr "0,7257" "0,7257" "0,6971" "0,7371" ...
## $ IKE : chr "0,5833" "0,55" "0,6167" "0,6333" ...
## $ IKL : chr "0,6" "0,8667" "0,6" "0,6667" ...
## $ skor.idm: chr "0,6363" "0,7141" "0,6379" "0,679" ...
library(dplyr)
cluster <- cluster %>%
dplyr::select(desa, IKS, IKE, IKL) %>%
mutate(across(c(IKS, IKE, IKL), ~ as.numeric(gsub(",", ".", .))))
str(cluster)
## 'data.frame': 245 obs. of 4 variables:
## $ desa: chr "EMBAWANG" "PAGAR DEWA" "TANJUNG BULAN" "LESUNG BATU" ...
## $ IKS : num 0.726 0.726 0.697 0.737 0.783 ...
## $ IKE : num 0.583 0.55 0.617 0.633 0.667 ...
## $ IKL : num 0.6 0.867 0.6 0.667 0.733 ...
colSums(is.na(cluster))
## desa IKS IKE IKL
## 0 0 0 0
summary(cluster)
## desa IKS IKE IKL
## Length:245 Min. :0.5943 Min. :0.3833 Min. :0.4000
## Class :character 1st Qu.:0.7429 1st Qu.:0.5667 1st Qu.:0.6667
## Mode :character Median :0.7829 Median :0.6333 Median :0.6667
## Mean :0.7870 Mean :0.6485 Mean :0.7227
## 3rd Qu.:0.8400 3rd Qu.:0.7167 3rd Qu.:0.8000
## Max. :0.9486 Max. :0.9833 Max. :1.0000
cor_mat <- cor(cluster[, c("IKS", "IKE", "IKL")], use = "pairwise.complete.obs")
cor_mat
## IKS IKE IKL
## IKS 1.0000000 0.4244499 -0.0232502
## IKE 0.4244499 1.0000000 -0.2260230
## IKL -0.0232502 -0.2260230 1.0000000
Matriks korelasi ini menunjukkan bahwa ketiga variabel aman untuk digunakan bersama-sama. Nilai 0.424 (IKS & IKE) menunjukkan hubungan positif sedang, sementara -0.226 (IKE & IKL) dan -0.023 (IKS & IKL) menunjukkan hubungan negatif yang lemah atau hampir tidak ada. Yang terpenting, tidak ada korelasi yang sangat tinggi (seperti > 0.8), yang berarti tidak ada multikolinieritas serius. Setiap variabel membawa informasi uniknya sendiri, sehingga Anda tidak perlu menghapus variabel apa pun sebelum melanjutkan ke analisis cluster.
Dalam penelitian ini, analisis gerombol dilakukan dengan mempertimbangkan karakteristik data yang terdiri atas tiga variabel pembentuk Indeks Desa Membangun (IDM), yaitu Indeks Ketahanan Sosial (IKS), Indeks Ketahanan Ekonomi (IKE), dan Indeks Ketahanan Lingkungan (IKL) pada 245 desa di Provinsi Sumatera Selatan. Karena tujuan analisis adalah untuk mengelompokkan desa berdasarkan tingkat pembangunan yang serupa, maka hasil pengelompokan diharapkan tidak hanya bersifat matematis tetapi juga dapat memberikan interpretasi substantif yang jelas. Oleh karena itu, pendekatan yang digunakan sedikit berbeda dari contoh asisten dosen, dengan menekankan dua tahap analisis yang saling melengkapi.
Tahap pertama menggunakan analisis gerombol hierarki (hierarchical clustering) dengan metode Ward’s linkage dan jarak Euclidean untuk mengeksplorasi struktur alami data serta menentukan jumlah cluster yang optimal berdasarkan dendrogram dan indeks validitas seperti silhouette atau Calinski–Harabasz. Tahap kedua dilanjutkan dengan analisis gerombol non-hierarki (K-Means) menggunakan jumlah cluster hasil tahap eksplorasi sebelumnya untuk membentuk kelompok yang lebih tegas (definitif) dan mengevaluasi kestabilan hasilnya melalui metrik Silhouette coefficient, Calinski–Harabasz index, dan Dunn index.
Pendekatan dua tahap ini dipilih karena analisis gerombol bersifat eksploratif (trial and error), sehingga penting untuk memastikan bahwa jumlah cluster yang ditetapkan benar-benar mewakili pola alami dalam data. Dengan cara ini, hasil akhir tidak hanya didasarkan pada algoritma yang bersifat mekanis, tetapi juga pada pemahaman yang mendalam terhadap struktur dan makna statistik dari data yang dianalisis.
par(mfrow = c(1,3))
boxplot(cluster$IKS, main="IKS")
boxplot(cluster$IKE, main="IKE")
boxplot(cluster$IKL, main="IKL")
par(mfrow = c(1,1))
# Deteksi outlier dengan z-score
cluster_numerik <- cluster %>% dplyr::select(IKS, IKE, IKL)
z_scores <- scale(cluster_numerik)
apply(z_scores, 2, function(x) sum(abs(x) > 3)) # jumlah outlier tiap variabel
## IKS IKE IKL
## 0 1 0
Outlier boleh dipertahankan, karena tidak ekstrem dan masih dalam rentang 0–1. Tidak perlu winsorize / buang amatan.
skala sudah berada pada rentang 0-1 akan tetapi diperluakan standarisasi penyebaran data karena persebaran data tiap kelompok berbeda beda
cluster_scaled<- as.data.frame(scale(cluster_numerik),
center = TRUE, scale = TRUE)
summary(cluster_scaled)
## IKS IKE IKL
## Min. :-2.75815 Min. :-2.4375 Min. :-2.5955
## 1st Qu.:-0.63157 1st Qu.:-0.7519 1st Qu.:-0.4506
## Median :-0.05914 Median :-0.1397 Median :-0.4506
## Mean : 0.00000 Mean : 0.0000 Mean : 0.0000
## 3rd Qu.: 0.75800 3rd Qu.: 0.6268 3rd Qu.: 0.6214
## Max. : 2.31215 Max. : 3.0772 Max. : 2.2299
Ada 245 desan dan 3 variabel. Rasio objek:variabel = >80 : 1 artinya sangat memadai untuk analisis cluster.
library(car)
## Warning: package 'car' was built under R version 4.4.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.4.2
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
## The following object is masked from 'package:purrr':
##
## some
model <- lm(IKS ~ IKE + IKL, data = cluster_numerik)
vif(model)
## IKE IKL
## 1.053837 1.053837
Nilai VIF < 5 → multikolinearitas tidak masalah.
Analisis gerombol hierarki dilakukan dengan metode Ward’s linkage menggunakan ukuran jarak Euclidean. Metode Ward dipilih karena mampu meminimalkan jumlah kuadrat dalam-cluster (within-cluster sum of squares), sehingga menghasilkan pengelompokan yang homogen dalam setiap cluster. Penentuan jumlah cluster dilakukan dengan mengamati dendrogram hasil pengelompokan. Titik pemotongan (cut point) dipilih pada jarak di mana terjadi peningkatan tajam (large jump) pada ketinggian penggabungan (height), yang menunjukkan perbedaan signifikan antarcluster. Dengan demikian, jumlah cluster yang diperoleh mencerminkan struktur alami dalam data. Untuk memperkuat hasil, metode ini juga dibandingkan dengan indeks validitas internal seperti Silhouette, Calinski–Harabasz, dan Dunn Index pada tahap evaluasi akhir.
library(factoextra)
library(cluster)
dist_euc <- dist(cluster_scaled, method = "euclidean")
hc_ward <- hclust(dist_euc, method = "ward.D2")
fviz_dend(hc_ward,
k = 3,
cex = 0.6,
palette = "Set2",
main = "Dendrogram dengan Metode Ward's",
sub = "Menggambarkan Struktur Hierarki Desa Berdasarkan IKS, IKE, dan IKL",
xlab = "Desa", ylab = "Jarak (Height)")
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## ℹ The deprecated feature was likely used in the factoextra package.
## Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## ℹ The deprecated feature was likely used in the factoextra package.
## Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## 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>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
fviz_nbclust(cluster_scaled, FUN = hcut, method = "silhouette") +
labs(title = "Evaluasi Jumlah Cluster Optimal (Ward's Method)")
## Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## ℹ The deprecated feature was likely used in the ggpubr package.
## Please report the issue at <https://github.com/kassambara/ggpubr/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The `size` argument of `element_rect()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## ℹ The deprecated feature was likely used in the ggpubr package.
## Please report the issue at <https://github.com/kassambara/ggpubr/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Output ini menunjukkan bahwa analisis gerombol hierarki dengan metode Ward telah berhasil memetakan struktur data 245 kecamatan. Dendrogram (gambar kiri) secara visual mengindikasikan bahwa pemotongan pada tiga cluster (kelompok hijau, oranye, dan biru) adalah kandidat yang paling logis, berdasarkan adanya jarak penggabungan vertikal yang signifikan (large jump) setelah tiga cluster tersebut terbentuk. Temuan visual ini kemudian dikonfirmasi secara statistik oleh plot evaluasi (gambar kanan), yang menunjukkan bahwa nilai average silhouette width (sebuah indeks validitas) mencapai puncaknya pada k=3, yang mengidentifikasi tiga sebagai jumlah cluster optimal untuk data ini.
# 1. Metode Elbow
fviz_nbclust(cluster_scaled, kmeans, method = "wss") +
labs(title = "Menentukan Jumlah Cluster Optimal - Metode Elbow",
x = "Jumlah Cluster (k)",
y = "Total Within-Cluster Sum of Squares (WSS)")
# 2. Metode Silhouette
fviz_nbclust(cluster_scaled, kmeans, method = "silhouette") +
labs(title = "Menentukan Jumlah Cluster Optimal - Metode Silhouette",
x = "Jumlah Cluster (k)",
y = "Nilai Rata-rata Silhouette")
Kedua plot ini menyajikan metode validasi internal untuk menentukan jumlah cluster (k) yang optimal, yang mengkonfirmasi temuan dari dendrogram. Plot Metode Elbow (kiri) memetakan Total Within-Cluster Sum of Squares (WSS) terhadap nilai k; tujuannya adalah menemukan titik ‘siku’ di mana penambahan cluster baru tidak lagi memberikan pengurangan WSS yang substansial. Plot ini menunjukkan siku yang mulai terbentuk pada k=3, di mana kurva mulai melandai secara signifikan. Temuan ini diperkuat secara lebih definitif oleh Metode Silhouette (kanan), yang mengukur seberapa baik setiap observasi terpisah dari cluster tetangganya. Plot ini secara eksplisit menunjukkan nilai rata-rata silhouette mencapai puncaknya (nilai tertinggi \(\approx 0.32\)) pada k=3, yang secara statistik mengindikasikan bahwa pembagian data menjadi tiga cluster adalah partisi yang paling optimal dan stabil.
Dari ketiga metode tersebut k=3
Menetapkan setiap desa ke dalam salah satu dari tiga kelompok berdasarkan kesamaan skor IKS, IKE, dan IKL (yang sudah distandarisasi) dengan K-Means
set.seed(123)
kmeans_result <- kmeans(cluster_scaled, centers = 3, nstart = 25)
kmeans_result
## K-means clustering with 3 clusters of sizes 56, 117, 72
##
## Cluster means:
## IKS IKE IKL
## 1 1.15813990 1.02858209 0.4778731
## 2 -0.09611681 0.03207582 -0.7715745
## 3 -0.74458567 -0.85213150 0.8821296
##
## Clustering vector:
## [1] 2 3 2 2 2 3 3 1 3 1 2 2 3 3 1 1 1 3 1 1 1 1 3 1 2 1 2 2 1 2 1 2 3 1 3 2 1
## [38] 2 2 2 2 1 1 2 2 2 3 2 1 2 2 2 2 2 2 2 2 1 1 1 2 3 2 3 2 2 2 2 2 2 3 1 3 3
## [75] 2 1 1 2 2 2 2 2 2 2 2 3 1 2 3 2 2 2 3 2 3 2 2 2 3 3 3 3 2 3 2 2 3 2 2 2 3
## [112] 3 1 1 3 1 2 3 2 3 1 1 1 3 1 1 1 3 1 2 2 3 3 3 2 2 1 2 2 3 2 2 2 3 3 3 2 3
## [149] 2 2 3 2 2 2 3 1 3 2 3 2 3 2 2 1 3 3 1 1 3 3 2 1 3 1 1 2 1 2 2 2 2 3 3 3 3
## [186] 3 3 3 3 3 3 3 3 2 1 1 2 1 3 1 2 1 1 2 2 2 2 2 2 2 2 2 1 1 2 1 3 1 2 2 3 2
## [223] 2 3 2 2 2 2 2 2 2 2 2 1 2 2 3 2 3 2 2 3 3 1 3
##
## Within cluster sum of squares by cluster:
## [1] 102.8798 155.4343 107.4584
## (between_SS / total_SS = 50.0 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
Jumlah desa di tiap cluster:
Berdasarkan hasil tersebut:
→ Nilai variasi dalam setiap cluster (semakin kecil, semakin homogen). Cluster 1 & 3 homogen; Cluster 2 agak beragam (155 paling besar).
→ Proporsi variasi antarcluster terhadap total variasi. Nilai 50% artinya 50% variasi total data berhasil dijelaskan oleh perbedaan antarcluster. Ini cukup baik untuk data sosial (karena jarang >60%).
library(cluster)
library(clusterCrit)
## Warning: package 'clusterCrit' was built under R version 4.4.3
dist_matrix <- dist(cluster_scaled, method = "euclidean")
cluster_km <- kmeans_result$cluster
sil <- mean(silhouette(cluster_km, dist_matrix)[, 3])
ch <- intCriteria(traj = as.matrix(cluster_scaled), part = cluster_km, crit = "Calinski_Harabasz")$calinski_harabasz
dunn <- intCriteria(traj = as.matrix(cluster_scaled), part = cluster_km, crit = "Dunn")$dunn
data.frame(Silhouette = sil, Calinski_Harabasz = ch, Dunn = dunn)
## Silhouette Calinski_Harabasz Dunn
## 1 0.3170842 121.1505 0.05249338
Silhouette (0.317) Nilai 0.317 = cukup baik, artinya struktur cluster mulai terlihat tapi masih ada sedikit tumpang tindih antarcluster (umum di data sosial).
Calinski–Harabasz (121.15) Nilai tinggi (121) → cluster cukup tegas.
Dunn (0.052) Nilai 0.05 = cukup rendah tapi wajar, karena skala data sosial jarang punya pemisahan ekstrem.
Kesimpulan Hasil clustering dengan 3 kelompok sudah cukup representatif. Nilai Silhouette dan CH menunjukkan pemisahan yang moderat, sementara Dunn Index mendukung adanya pemisahan yang nyata meski tidak terlalu tajam. Struktur cluster dapat diterima untuk data sosial multidimensi.
data_clustered <- data.frame(cluster_scaled, cluster = factor(kmeans_result$cluster))
head(data_clustered)
## IKS IKE IKL cluster
## 1 -0.8777152 -0.5992855 -0.98703517 2
## 2 -0.8777152 -0.9053508 1.15787210 3
## 3 -1.2870022 -0.2923011 -0.98703517 2
## 4 -0.7145729 -0.1397280 -0.45060730 2
## 5 -0.0591413 0.1672564 0.08501634 2
## 6 -0.5499994 -0.7518586 2.22992362 3
library(dplyr)
library(ggplot2)
library(tidyr)
library(RColorBrewer)
cluster_summary <- data_clustered %>%
group_by(cluster) %>%
summarise(across(where(is.numeric), mean, .names = "rata2_{.col}"))
print(cluster_summary)
## # A tibble: 3 × 4
## cluster rata2_IKS rata2_IKE rata2_IKL
## <fct> <dbl> <dbl> <dbl>
## 1 1 1.16 1.03 0.478
## 2 2 -0.0961 0.0321 -0.772
## 3 3 -0.745 -0.852 0.882
ggplot(cluster_summary %>%
pivot_longer(-cluster, names_to = "variabel", values_to = "rata2"),
aes(x = variabel, y = rata2, fill = cluster)) +
geom_bar(stat = "identity", position = "dodge") +
scale_fill_brewer(palette = "Set2") +
labs(title = "Karakteristik Rata-Rata Tiap Cluster",
x = "Variabel", y = "Rata-rata (standar)") +
theme_minimal(base_size = 12) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Grafik ini secara visual mengkonfirmasi karakteristik rata-rata (nilai
Z-score) dari tiga cluster yang diidentifikasi oleh K-Means. Plot ini
menunjukkan tiga profil yang sangat berbeda: Cluster 1 (hijau) memiliki
nilai positif tinggi di ketiga variabel, terutama pada IKS dan IKE, yang
dapat diartikan sebagai cluster “Unggul”; Cluster 2 (oranye) memiliki
nilai yang mendekati rata-rata (nol) untuk IKS dan IKE namun bernilai
negatif kuat pada IKL; dan Cluster 3 (ungu) menunjukkan pola sebaliknya,
dengan nilai negatif signifikan pada IKS dan IKE namun bernilai positif
sangat tinggi pada IKL. Visualisasi ini menegaskan bahwa partisi K-Means
telah berhasil mengidentifikasi tiga tipologi kecamatan dengan
karakteristik yang jelas dan unik.
data_final_lengkap <- cluster %>%
mutate(cluster = kmeans_result$cluster)
data_final_lengkap
## desa IKS IKE IKL cluster
## 1 EMBAWANG 0.7257 0.5833 0.6000 2
## 2 PAGAR DEWA 0.7257 0.5500 0.8667 3
## 3 TANJUNG BULAN 0.6971 0.6167 0.6000 2
## 4 LESUNG BATU 0.7371 0.6333 0.6667 2
## 5 PANDAN ENIM 0.7829 0.6667 0.7333 2
## 6 PADURAKSA 0.7486 0.5667 1.0000 3
## 7 MATAS 0.7943 0.6000 0.8667 3
## 8 TANJUNG AGUNG 0.8514 0.8167 0.8000 1
## 9 MUARA EMIL 0.7657 0.6667 1.0000 3
## 10 TANJUNG KARANGAN 0.8229 0.6333 0.8000 1
## 11 SELEMAN 0.6571 0.6833 0.5333 2
## 12 PENYANDINGAN 0.7886 0.5500 0.6000 2
## 13 TANJUNG LALANG 0.7829 0.5000 0.9333 3
## 14 PULAU PANGGUNG 0.7371 0.5167 0.6667 3
## 15 TANJUNG RAJA 0.8629 0.7000 0.8667 1
## 16 KARANG RAJA 0.8629 0.7500 0.8667 1
## 17 MUARA LAWAI 0.8457 0.6833 0.9333 1
## 18 TANJUNG JATI 0.8114 0.6000 1.0000 3
## 19 LUBUK EMPLAS 0.8629 0.7000 0.8667 1
## 20 KEPUR 0.8343 0.7500 0.8000 1
## 21 TANJUNG SERIAN 0.8743 0.7500 0.8667 1
## 22 MUARA HARAPAN 0.8343 0.6833 0.8667 1
## 23 SAKA JAYA 0.8514 0.5000 0.9333 3
## 24 HARAPAN JAYA 0.8457 0.7667 0.8000 1
## 25 GEMAWANG 0.7543 0.7000 0.7333 2
## 26 LUBUK RAMAN 0.8971 0.8833 0.6667 1
## 27 JEMENANG 0.7886 0.8667 0.5333 2
## 28 TANJUNG MENANG 0.8057 0.7667 0.5333 2
## 29 TEBAT AGUNG 0.9143 0.8667 0.8667 1
## 30 GERINAM 0.7771 0.7167 0.6667 2
## 31 SUBAN JERIJI 0.8000 0.6833 0.8000 1
## 32 AIR LIMAU 0.8743 0.7333 0.5333 2
## 33 MUARA EMBURUNG 0.7543 0.3833 0.6667 3
## 34 MANUNGGAL JAYA 0.8571 0.7333 0.8000 1
## 35 AIR TALAS 0.7543 0.5833 0.8667 3
## 36 AIR ENAU 0.7886 0.8000 0.6000 2
## 37 MANUNGGAL MAKMUR 0.8057 0.8500 0.6667 1
## 38 AUR DURI 0.7029 0.5500 0.6000 2
## 39 KASIH DEWA 0.7943 0.7500 0.6667 2
## 40 AIR CEKDAM 0.7543 0.6333 0.6667 2
## 41 PENANGGIRAN 0.7829 0.6833 0.6000 2
## 42 GUNUNG MEGANG LUAR 0.8457 0.6833 0.7333 1
## 43 GUNUNG MEGANG DALAM 0.8629 0.7500 0.8000 1
## 44 LUBUK MUMPO 0.7943 0.7000 0.7333 2
## 45 PERJITO 0.7714 0.6333 0.7333 2
## 46 TANJUNG MUNING 0.7771 0.5667 0.6667 2
## 47 TANJUNG TERANG 0.7600 0.6000 0.8667 3
## 48 BANGUN SARI 0.7886 0.6500 0.6667 2
## 49 SUMAJA MAKMUR 0.8400 0.9000 0.6667 1
## 50 SIDOMULYO 0.8629 0.6167 0.6667 2
## 51 PAJAR INDAH 0.8514 0.6667 0.6667 2
## 52 KAYU ARA SAKTI 0.8229 0.6833 0.6667 2
## 53 PANANG JAYA 0.7714 0.7667 0.6000 2
## 54 GAUNG TELANG 0.7429 0.6333 0.6667 2
## 55 PINANG BANJAR 0.7886 0.6667 0.6000 2
## 56 SEGAYAM 0.8571 0.6000 0.6667 2
## 57 TAMBANGAN KELEKAR 0.7943 0.6333 0.6667 2
## 58 SUKA MENANG 0.8686 0.8667 0.6000 1
## 59 KARANG ENDAH 0.8914 0.7833 0.6667 1
## 60 JAMBU 0.8514 0.7167 0.8667 1
## 61 MIDAR 0.8229 0.6333 0.6667 2
## 62 MILILIAN 0.7829 0.4667 0.6667 3
## 63 PEDATARAN 0.7771 0.6000 0.7333 2
## 64 TELUK LIMAU 0.7486 0.4833 0.8667 3
## 65 KERTA MULYA 0.7943 0.6167 0.6667 2
## 66 SEBAU 0.7657 0.5667 0.6000 2
## 67 SIGAM 0.8286 0.6500 0.6667 2
## 68 PAYABAKAL 0.8229 0.5000 0.6667 2
## 69 BITIS 0.8800 0.5667 0.6667 2
## 70 GUMAI 0.7886 0.6000 0.6667 2
## 71 PUTAK 0.7486 0.5833 0.7333 3
## 72 TALANG TALING 0.8686 0.6333 0.7333 1
## 73 SUKA JAYA 0.7829 0.5833 0.8000 3
## 74 KARANG ENDAH SELATAN 0.7771 0.7000 0.8667 3
## 75 BETUNG 0.7771 0.6667 0.5333 2
## 76 TEGAL REJO 0.9371 0.7833 0.7333 1
## 77 LINGGA 0.9029 0.9833 0.6000 1
## 78 KEBAN AGUNG 0.8457 0.8167 0.4667 2
## 79 DARMO 0.8114 0.7167 0.6000 2
## 80 PENINDAIAN 0.7086 0.5667 0.5333 2
## 81 BABATAN 0.7314 0.5833 0.6667 2
## 82 MUARA DUA 0.7429 0.6667 0.6667 2
## 83 MUARA DANAU 0.6514 0.6833 0.6000 2
## 84 PENYANDINGAN 0.7886 0.7333 0.6000 2
## 85 TANAH ABANG 0.6971 0.7333 0.5333 2
## 86 PAGAR AGUNG 0.6857 0.5667 0.8000 3
## 87 PULAU PANGGUNG 0.8743 0.9333 0.6667 1
## 88 KARYA NYATA 0.7429 0.7500 0.6000 2
## 89 PERAPAU 0.7086 0.5000 0.8000 3
## 90 TENAM BUNGKUK 0.8000 0.6167 0.6667 2
## 91 KOTA PADANG 0.7600 0.7333 0.6000 2
## 92 GUNUNG AGUNG 0.7200 0.7500 0.4667 2
## 93 SRI TANJUNG 0.8114 0.4167 0.8667 3
## 94 TEBING ABANG 0.7543 0.5167 0.6667 2
## 95 BATU SURAU 0.7600 0.4333 0.8000 3
## 96 TANJUNG RAYA 0.8514 0.5500 0.6667 2
## 97 MUARA TENANG 0.8571 0.6333 0.6000 2
## 98 REKIMAI JAYA 0.6686 0.7500 0.6667 2
## 99 PALAK TANAH 0.7371 0.5167 0.8667 3
## 100 KOTA AGUNG 0.7600 0.4833 0.8667 3
## 101 SWARNA DWIPA 0.7371 0.6667 0.9333 3
## 102 TANJUNG TIGA 0.6514 0.6500 0.8000 3
## 103 CAHAYA ALAM 0.7200 0.5500 0.6667 2
## 104 DATAR LEBAR 0.6971 0.6167 0.8000 3
## 105 SEGAMIT 0.7714 0.7500 0.6000 2
## 106 SIRING AGUNG 0.7829 0.7000 0.6000 2
## 107 AREMANTAI 0.6514 0.5167 0.8667 3
## 108 TANJUNG AGUNG 0.7200 0.6667 0.6000 2
## 109 PAJAR BULAN 0.6686 0.7167 0.6667 2
## 110 PELAKAT 0.6743 0.7000 0.6667 2
## 111 DANAU GERAK 0.6514 0.6500 0.8000 3
## 112 PINANG BELARIK 0.8229 0.5333 1.0000 3
## 113 UJAN MAS LAMA 0.8229 0.7000 0.8000 1
## 114 UJAN MAS BARU 0.9029 0.9000 0.8667 1
## 115 TANJUNG RAMAN 0.7486 0.5333 0.9333 3
## 116 MUARA GULA BARU 0.8971 0.7167 0.9333 1
## 117 MUARA GULA LAMA 0.7886 0.7000 0.4000 2
## 118 GUCI 0.7086 0.6500 0.7333 3
## 119 ULAK BANDUNG 0.8057 0.6667 0.6000 2
## 120 AUR 0.7714 0.6333 0.8000 3
## 121 BERINGIN 0.9371 0.8000 0.6667 1
## 122 KOTA BARU 0.8857 0.7000 0.8000 1
## 123 PAGAR GUNUNG 0.8971 0.6500 0.8000 1
## 124 GUNUNG RAJA 0.6857 0.7667 0.9333 3
## 125 TANJUNG KEMALA 0.7714 0.7500 0.8667 1
## 126 SUKA MERINDU 0.8400 0.6333 0.8000 1
## 127 JIWA BARU 0.9086 0.5333 0.8000 1
## 128 AIR ASAM 0.8286 0.5667 0.8000 3
## 129 MENANTI 0.8514 0.6333 0.9333 1
## 130 BARU RAMBANG 0.8057 0.5500 0.6000 2
## 131 SUGIHAN 0.8057 0.6333 0.6667 2
## 132 TANJUNG RAYA 0.6743 0.5667 0.8000 3
## 133 TANJUNG DALAM 0.7771 0.5000 0.8667 3
## 134 SUKARAMI 0.7543 0.5500 0.7333 3
## 135 PAGAR AGUNG 0.8114 0.6333 0.7333 2
## 136 SUGIH WARAS 0.7943 0.7167 0.6000 2
## 137 SUMBER RAHAYU 0.9143 0.8667 0.6667 1
## 138 MARGA MULYA 0.8000 0.6333 0.6667 2
## 139 KENCANA MULIA 0.8057 0.5667 0.7333 2
## 140 NEGERI AGUNG 0.7029 0.5833 0.8000 3
## 141 SUGIHWARAS BARAT 0.7829 0.6667 0.6667 2
## 142 AIR KERUH 0.7771 0.5000 0.6667 2
## 143 TANJUNG MIRING 0.7714 0.6500 0.6667 2
## 144 DANAU TAMPANG 0.6971 0.5000 0.8667 3
## 145 KASAI 0.7371 0.6167 0.7333 3
## 146 SUNGAI ROTAN 0.6800 0.6167 0.8000 3
## 147 SUKAMERINDU 0.7714 0.6333 0.6000 2
## 148 TANDING MARGA 0.7143 0.5500 0.8000 3
## 149 MUARA LEMATANG 0.9029 0.6000 0.6000 2
## 150 SUKADANA 0.7714 0.6333 0.6000 2
## 151 MODONG 0.7086 0.6000 0.7333 3
## 152 SUKACINTA 0.6971 0.6000 0.5333 2
## 153 PENANDINGAN 0.7714 0.6167 0.6667 2
## 154 DANAU RATA 0.7771 0.6167 0.7333 2
## 155 PAYA ANGUS 0.6629 0.4833 0.8667 3
## 156 SUKARAMI 0.8743 0.7167 0.6667 1
## 157 PETAR DALAM 0.7943 0.4333 0.8000 3
## 158 SUKAJADI 0.8629 0.6333 0.6000 2
## 159 SUKAMAJU 0.6457 0.5167 0.8667 3
## 160 DANAU BARU 0.8057 0.6500 0.6000 2
## 161 PETAR LUAR 0.7486 0.5667 0.7333 3
## 162 PETANANG 0.8514 0.6667 0.6000 2
## 163 TALANG NANGKA 0.8057 0.5833 0.6000 2
## 164 ALAI 0.8057 0.8000 0.8000 1
## 165 SUNGAI DUREN 0.7086 0.5333 0.8667 3
## 166 TAPUS 0.7771 0.6333 0.8667 3
## 167 LEMBAK 0.9200 0.8667 0.9333 1
## 168 KEMANG 0.8514 0.7333 0.8000 1
## 169 LUBUK ENAU 0.8629 0.5667 0.8667 3
## 170 ALAI SELATAN 0.7657 0.6000 0.9333 3
## 171 TANJUNG BARU 0.7714 0.7000 0.6667 2
## 172 PADANG BINDU 0.8343 0.6667 0.9333 1
## 173 BETUNG 0.7543 0.5167 0.8667 3
## 174 PAGAR DEWA 0.8229 0.7333 0.8667 1
## 175 PAGARJATI 0.8743 0.8333 0.7333 1
## 176 HIDUP BARU 0.8286 0.5833 0.5333 2
## 177 RAMI PASAI 0.8629 0.6167 0.9333 1
## 178 EMBACANG KELEKAR 0.7714 0.5500 0.6000 2
## 179 MENANTI 0.8686 0.6333 0.6000 2
## 180 MENANTI SELATAN 0.7371 0.6500 0.6667 2
## 181 SUBAN BARU 0.8343 0.6167 0.6667 2
## 182 PELEMPANG 0.7143 0.4500 0.8000 3
## 183 TELUK JAYA 0.6857 0.5167 0.8667 3
## 184 TANJUNG MEDANG 0.7200 0.6000 0.7333 3
## 185 GEDUNG BURUK 0.6800 0.4333 0.8000 3
## 186 ARISAN MUSI 0.7829 0.4667 0.8000 3
## 187 HARAPAN MULIA 0.7600 0.4333 0.8000 3
## 188 MULIA ABADI 0.6800 0.4667 0.7333 3
## 189 ARISAN MUSI TIMUR 0.6800 0.4167 0.8000 3
## 190 PATRA TANI 0.6686 0.4333 0.8667 3
## 191 TANJUNG BARU 0.6629 0.5667 0.8000 3
## 192 KAYU ARA BATU 0.7029 0.4667 0.8000 3
## 193 TANJUNG 0.7257 0.6167 0.8667 3
## 194 SIMPANG TANJUNG 0.7943 0.7667 0.6667 2
## 195 CINTA KASIH 0.8571 0.7500 0.9333 1
## 196 TELUK LUBUK 0.9143 0.8167 0.6667 1
## 197 BERUGO 0.8171 0.6333 0.6667 2
## 198 BELIMBING 0.8914 0.8000 0.8000 1
## 199 BULANG 0.7314 0.5333 0.7333 3
## 200 BELIMBING JAYA 0.9200 0.6000 0.8000 1
## 201 DARMO KASIH 0.7657 0.5333 0.6667 2
## 202 DALAM 0.9257 0.7667 0.8667 1
## 203 TANJUNG BUNUT 0.8743 0.8000 0.6000 1
## 204 BABAT 0.8229 0.6500 0.4667 2
## 205 LUBUK SEMANTUNG 0.7771 0.6500 0.6667 2
## 206 LUBUK GETAM 0.7543 0.6500 0.5333 2
## 207 TALANG BALAI 0.8514 0.8000 0.4667 2
## 208 TALANG BELIUNG 0.7829 0.6333 0.6667 2
## 209 SIALINGAN 0.6457 0.8500 0.5333 2
## 210 TANJUNG TIGA 0.7314 0.6500 0.7333 2
## 211 IBUL 0.7314 0.6833 0.6667 2
## 212 GAUNG ASAM 0.8914 0.5333 0.6667 2
## 213 KARANG AGUNG 0.9486 0.8500 0.4667 1
## 214 KARANG SARI 0.8629 0.7333 0.6667 1
## 215 KARANG MULYA 0.8171 0.6833 0.6667 2
## 216 SUMBER MULYA 0.8914 0.8167 0.5333 1
## 217 SUMBER ASRI 0.8229 0.6167 0.8667 3
## 218 PAGAR DEWA 0.9314 0.9000 0.8667 1
## 219 PRABUMENANG 0.8286 0.5833 0.7333 2
## 220 LECAH 0.8743 0.6167 0.6667 2
## 221 MEKAR JAYA 0.8057 0.5667 0.8000 3
## 222 LUBAI PERSADA 0.8286 0.6333 0.6667 2
## 223 LUBAI MAKMUR 0.8457 0.6167 0.6667 2
## 224 MUARA NIRU 0.7029 0.5500 0.8000 3
## 225 KAHURIPAN BARU 0.6571 0.6333 0.5333 2
## 226 PANGKALAN BABAT 0.7600 0.6333 0.6667 2
## 227 GUNUNG RAJA 0.7600 0.6333 0.6667 2
## 228 BANUAYU 0.7429 0.6333 0.6000 2
## 229 KURIPAN 0.8114 0.6833 0.4000 2
## 230 KURIPAN SELATAN 0.7829 0.5000 0.6000 2
## 231 BATU RAJA 0.7486 0.6500 0.6667 2
## 232 DANGKU 0.7657 0.6833 0.5333 2
## 233 SIKU 0.8000 0.5667 0.6667 2
## 234 LEBAK BUDI 0.7600 0.7833 0.9333 1
## 235 LAMBUR 0.8171 0.6500 0.6667 2
## 236 PAGAR JATI 0.7029 0.7333 0.6667 2
## 237 TANJUNG BARU 0.7086 0.6333 0.8667 3
## 238 SUKARAJA 0.7200 0.7167 0.5333 2
## 239 PANDAN DULANG 0.6914 0.6000 0.8667 3
## 240 MUARA MEO 0.7600 0.7333 0.6667 2
## 241 SUGIH WARAS 0.7714 0.7500 0.6667 2
## 242 INDRAMAYU 0.7200 0.7333 0.8000 3
## 243 BEDEGUNG 0.7714 0.6500 0.8667 3
## 244 PADANG BINDU 0.8400 0.8333 0.7333 1
## 245 LUBUK NIPIS 0.5943 0.7500 0.8667 3
desa_clustered2 <- data_final_lengkap %>%
dplyr::select(desa, cluster) %>%
arrange(cluster)
desa_clustered2
## desa cluster
## 1 TANJUNG AGUNG 1
## 2 TANJUNG KARANGAN 1
## 3 TANJUNG RAJA 1
## 4 KARANG RAJA 1
## 5 MUARA LAWAI 1
## 6 LUBUK EMPLAS 1
## 7 KEPUR 1
## 8 TANJUNG SERIAN 1
## 9 MUARA HARAPAN 1
## 10 HARAPAN JAYA 1
## 11 LUBUK RAMAN 1
## 12 TEBAT AGUNG 1
## 13 SUBAN JERIJI 1
## 14 MANUNGGAL JAYA 1
## 15 MANUNGGAL MAKMUR 1
## 16 GUNUNG MEGANG LUAR 1
## 17 GUNUNG MEGANG DALAM 1
## 18 SUMAJA MAKMUR 1
## 19 SUKA MENANG 1
## 20 KARANG ENDAH 1
## 21 JAMBU 1
## 22 TALANG TALING 1
## 23 TEGAL REJO 1
## 24 LINGGA 1
## 25 PULAU PANGGUNG 1
## 26 UJAN MAS LAMA 1
## 27 UJAN MAS BARU 1
## 28 MUARA GULA BARU 1
## 29 BERINGIN 1
## 30 KOTA BARU 1
## 31 PAGAR GUNUNG 1
## 32 TANJUNG KEMALA 1
## 33 SUKA MERINDU 1
## 34 JIWA BARU 1
## 35 MENANTI 1
## 36 SUMBER RAHAYU 1
## 37 SUKARAMI 1
## 38 ALAI 1
## 39 LEMBAK 1
## 40 KEMANG 1
## 41 PADANG BINDU 1
## 42 PAGAR DEWA 1
## 43 PAGARJATI 1
## 44 RAMI PASAI 1
## 45 CINTA KASIH 1
## 46 TELUK LUBUK 1
## 47 BELIMBING 1
## 48 BELIMBING JAYA 1
## 49 DALAM 1
## 50 TANJUNG BUNUT 1
## 51 KARANG AGUNG 1
## 52 KARANG SARI 1
## 53 SUMBER MULYA 1
## 54 PAGAR DEWA 1
## 55 LEBAK BUDI 1
## 56 PADANG BINDU 1
## 57 EMBAWANG 2
## 58 TANJUNG BULAN 2
## 59 LESUNG BATU 2
## 60 PANDAN ENIM 2
## 61 SELEMAN 2
## 62 PENYANDINGAN 2
## 63 GEMAWANG 2
## 64 JEMENANG 2
## 65 TANJUNG MENANG 2
## 66 GERINAM 2
## 67 AIR LIMAU 2
## 68 AIR ENAU 2
## 69 AUR DURI 2
## 70 KASIH DEWA 2
## 71 AIR CEKDAM 2
## 72 PENANGGIRAN 2
## 73 LUBUK MUMPO 2
## 74 PERJITO 2
## 75 TANJUNG MUNING 2
## 76 BANGUN SARI 2
## 77 SIDOMULYO 2
## 78 PAJAR INDAH 2
## 79 KAYU ARA SAKTI 2
## 80 PANANG JAYA 2
## 81 GAUNG TELANG 2
## 82 PINANG BANJAR 2
## 83 SEGAYAM 2
## 84 TAMBANGAN KELEKAR 2
## 85 MIDAR 2
## 86 PEDATARAN 2
## 87 KERTA MULYA 2
## 88 SEBAU 2
## 89 SIGAM 2
## 90 PAYABAKAL 2
## 91 BITIS 2
## 92 GUMAI 2
## 93 BETUNG 2
## 94 KEBAN AGUNG 2
## 95 DARMO 2
## 96 PENINDAIAN 2
## 97 BABATAN 2
## 98 MUARA DUA 2
## 99 MUARA DANAU 2
## 100 PENYANDINGAN 2
## 101 TANAH ABANG 2
## 102 KARYA NYATA 2
## 103 TENAM BUNGKUK 2
## 104 KOTA PADANG 2
## 105 GUNUNG AGUNG 2
## 106 TEBING ABANG 2
## 107 TANJUNG RAYA 2
## 108 MUARA TENANG 2
## 109 REKIMAI JAYA 2
## 110 CAHAYA ALAM 2
## 111 SEGAMIT 2
## 112 SIRING AGUNG 2
## 113 TANJUNG AGUNG 2
## 114 PAJAR BULAN 2
## 115 PELAKAT 2
## 116 MUARA GULA LAMA 2
## 117 ULAK BANDUNG 2
## 118 BARU RAMBANG 2
## 119 SUGIHAN 2
## 120 PAGAR AGUNG 2
## 121 SUGIH WARAS 2
## 122 MARGA MULYA 2
## 123 KENCANA MULIA 2
## 124 SUGIHWARAS BARAT 2
## 125 AIR KERUH 2
## 126 TANJUNG MIRING 2
## 127 SUKAMERINDU 2
## 128 MUARA LEMATANG 2
## 129 SUKADANA 2
## 130 SUKACINTA 2
## 131 PENANDINGAN 2
## 132 DANAU RATA 2
## 133 SUKAJADI 2
## 134 DANAU BARU 2
## 135 PETANANG 2
## 136 TALANG NANGKA 2
## 137 TANJUNG BARU 2
## 138 HIDUP BARU 2
## 139 EMBACANG KELEKAR 2
## 140 MENANTI 2
## 141 MENANTI SELATAN 2
## 142 SUBAN BARU 2
## 143 SIMPANG TANJUNG 2
## 144 BERUGO 2
## 145 DARMO KASIH 2
## 146 BABAT 2
## 147 LUBUK SEMANTUNG 2
## 148 LUBUK GETAM 2
## 149 TALANG BALAI 2
## 150 TALANG BELIUNG 2
## 151 SIALINGAN 2
## 152 TANJUNG TIGA 2
## 153 IBUL 2
## 154 GAUNG ASAM 2
## 155 KARANG MULYA 2
## 156 PRABUMENANG 2
## 157 LECAH 2
## 158 LUBAI PERSADA 2
## 159 LUBAI MAKMUR 2
## 160 KAHURIPAN BARU 2
## 161 PANGKALAN BABAT 2
## 162 GUNUNG RAJA 2
## 163 BANUAYU 2
## 164 KURIPAN 2
## 165 KURIPAN SELATAN 2
## 166 BATU RAJA 2
## 167 DANGKU 2
## 168 SIKU 2
## 169 LAMBUR 2
## 170 PAGAR JATI 2
## 171 SUKARAJA 2
## 172 MUARA MEO 2
## 173 SUGIH WARAS 2
## 174 PAGAR DEWA 3
## 175 PADURAKSA 3
## 176 MATAS 3
## 177 MUARA EMIL 3
## 178 TANJUNG LALANG 3
## 179 PULAU PANGGUNG 3
## 180 TANJUNG JATI 3
## 181 SAKA JAYA 3
## 182 MUARA EMBURUNG 3
## 183 AIR TALAS 3
## 184 TANJUNG TERANG 3
## 185 MILILIAN 3
## 186 TELUK LIMAU 3
## 187 PUTAK 3
## 188 SUKA JAYA 3
## 189 KARANG ENDAH SELATAN 3
## 190 PAGAR AGUNG 3
## 191 PERAPAU 3
## 192 SRI TANJUNG 3
## 193 BATU SURAU 3
## 194 PALAK TANAH 3
## 195 KOTA AGUNG 3
## 196 SWARNA DWIPA 3
## 197 TANJUNG TIGA 3
## 198 DATAR LEBAR 3
## 199 AREMANTAI 3
## 200 DANAU GERAK 3
## 201 PINANG BELARIK 3
## 202 TANJUNG RAMAN 3
## 203 GUCI 3
## 204 AUR 3
## 205 GUNUNG RAJA 3
## 206 AIR ASAM 3
## 207 TANJUNG RAYA 3
## 208 TANJUNG DALAM 3
## 209 SUKARAMI 3
## 210 NEGERI AGUNG 3
## 211 DANAU TAMPANG 3
## 212 KASAI 3
## 213 SUNGAI ROTAN 3
## 214 TANDING MARGA 3
## 215 MODONG 3
## 216 PAYA ANGUS 3
## 217 PETAR DALAM 3
## 218 SUKAMAJU 3
## 219 PETAR LUAR 3
## 220 SUNGAI DUREN 3
## 221 TAPUS 3
## 222 LUBUK ENAU 3
## 223 ALAI SELATAN 3
## 224 BETUNG 3
## 225 PELEMPANG 3
## 226 TELUK JAYA 3
## 227 TANJUNG MEDANG 3
## 228 GEDUNG BURUK 3
## 229 ARISAN MUSI 3
## 230 HARAPAN MULIA 3
## 231 MULIA ABADI 3
## 232 ARISAN MUSI TIMUR 3
## 233 PATRA TANI 3
## 234 TANJUNG BARU 3
## 235 KAYU ARA BATU 3
## 236 TANJUNG 3
## 237 BULANG 3
## 238 SUMBER ASRI 3
## 239 MEKAR JAYA 3
## 240 MUARA NIRU 3
## 241 TANJUNG BARU 3
## 242 PANDAN DULANG 3
## 243 INDRAMAYU 3
## 244 BEDEGUNG 3
## 245 LUBUK NIPIS 3
library(factoextra)
fviz_cluster(kmeans_result,
data = cluster_scaled,
palette = "Set2",
ggtheme = theme_minimal(),
main = "Visualisasi Cluster K-Means (n=3)",
geom = "point",
ellipse.type = "convex",
repel = TRUE)
library(ggplot2)
library(dplyr)
library(tidyr)
data_clustered_scaled <- data.frame(cluster_scaled,
cluster = factor(kmeans_result$cluster))
cluster_means_heatmap <- data_clustered_scaled %>%
group_by(cluster) %>%
summarise(
IKS = mean(IKS),
IKE = mean(IKE),
IKL = mean(IKL)
) %>%
pivot_longer(cols = c(IKS, IKE, IKL),
names_to = "Variabel",
values_to = "Rata_Z_Score")
ggplot(cluster_means_heatmap,
aes(x = Variabel, y = cluster, fill = Rata_Z_Score)) +
geom_tile(color = "white") +
scale_fill_gradient2(low = "red", mid = "white", high = "blue",
midpoint = 0, name = "Rata-rata Z-Score") +
geom_text(aes(label = round(Rata_Z_Score, 2)), color = "black", size = 4) +
labs(title = "Heatmap Karakteristik Rata-rata Cluster",
x = "Variabel IDM",
y = "Cluster") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 0))
Hasil visualisasi K-Means dan heatmap menunjukkan bahwa analisis berhasil mempartisi 245 kecamatan menjadi tiga profil yang jelas dan bermakna. Plot PCA (Visualisasi Cluster K-Means (n=3)), yang menjelaskan 82.4% varians data, secara visual mengkonfirmasi pemisahan yang baik antar cluster. Heatmap Karakteristik Rata-rata Cluster kemudian mendefinisikan profil-profil ini: Cluster 1 (Hijau) adalah “Unggul Seimbang” (IKS/IKE tinggi IKL sedang); Cluster 2 (Oranye) adalah “Rata-rata, Lingkungan Rentan” (IKS/IKE sedang, IKL sangat rendah); dan Cluster 3 (Ungu) adalah “Lingkungan Kuat, Sos-ek Tertinggal” (IKS/IKE rendah, IKL tinggi).