# BAB 1. PENDAHULUAN

## 1.1 Latar Belakang Kasus / Data Indonesia merupakan negara dengan karakteristik sosial dan ekonomi yang sangat beragam antarprovinsi. Perbedaan tersebut tercermin pada berbagai indikator pembangunan seperti persentase penduduk miskin, jumlah perceraian, jumlah kota/kabupaten, serta Indeks Pembangunan Manusia (IPM). Analisis terhadap indikator-indikator ini menjadi penting untuk mengetahui pola kemiripan antarwilayah sehingga pemerintah dapat merumuskan kebijakan yang lebih tepat sasaran.

Salah satu pendekatan yang dapat digunakan untuk menggambarkan kesamaan karakteristik antarprovinsi adalah analisis clustering, khususnya metode clustering non-hierarki. Clustering memungkinkan pengelompokan provinsi-provinsi menjadi beberapa cluster berdasarkan kemiripan indikator sosial dan pembangunan yang dimiliki (Han, Kamber, & Pei, 2012). Hasil pengelompokan ini dapat memberikan gambaran mengenai kelompok wilayah yang memiliki kondisi relatif serupa serta menunjukkan provinsi mana yang memiliki karakteristik berbeda dari yang lain.

Dalam penelitian atau laporan ini, digunakan empat variabel utama, yaitu:

  1. Persentase Penduduk Miskin
  2. Jumlah Perceraian
  3. Jumlah Kota
  4. Indeks Pembangunan Manusia (IPM)

Keempat variabel tersebut menggambarkan kondisi sosial dan pembangunan di setiap provinsi. Dengan melakukan clustering terhadap data ini, diharapkan diperoleh kelompok provinsi yang memiliki profil serupa sehingga hasilnya dapat dijadikan dasar analisis dan rekomendasi.

1.2 Cuplikan Data

1.3 Latar Belakang Metode Clustering Non-Hierarki

Clustering non-hierarki merupakan salah satu pendekatan dalam analisis unsupervised yang bertujuan mengelompokkan data berdasarkan kemiripan antarobservasi. Metode ini bekerja dengan membagi objek ke dalam sejumlah klaster yang telah ditentukan sebelumnya. Salah satu metode yang paling dikenal adalah K-Means Clustering, yang diperkenalkan oleh MacQueen (1967).

K-Means dipilih karena efisien untuk dataset berukuran besar, memiliki proses komputasi yang cepat, serta menghasilkan klaster yang mudah diinterpretasikan (Jain, 2010). Metode ini mengelompokkan data berdasarkan kedekatan jarak terhadap pusat klaster (centroid), dan proses iteratif terus berlangsung hingga posisi centroid stabil. Dengan kemampuannya dalam mengidentifikasi pola dalam data numerik, K-Means banyak digunakan pada berbagai bidang seperti kesehatan, pemasaran, dan pengelompokan fasilitas berdasarkan karakteristik tertentu.

1.4 Tinjauan Pustaka Metode

K-Means Clustering merupakan metode yang bekerja dengan meminimalkan Within-Cluster Sum of Squares (WCSS), yaitu ukuran keragaman dalam klaster (Hartigan & Wong, 1979). Pada setiap iterasi, algoritma menghitung centroid untuk setiap klaster dan menugaskan setiap observasi ke klaster dengan centroid terdekat berdasarkan jarak Euclidean.

Pemilihan jumlah klaster optimal (k) merupakan tahap penting dalam analisis. Dua metode evaluasi yang umum digunakan adalah Elbow Method, yang melihat titik perubahan signifikan pada grafik WCSS (Ketchen & Shook, 1996), dan Silhouette Score, yang menilai kualitas klaster berdasarkan tingkat kemiripan observasi terhadap klasternya dibandingkan klaster lain (Rousseeuw, 1987).

Selain itu, literatur menyarankan standarisasi variabel sebelum pengelompokan untuk menghindari dominasi variabel berskala besar terhadap hasil klasterisasi (Tan, Steinbach, & Kumar, 2019).

1.5 Tujuan Analisis

Tujuan analisis dalam penelitian ini adalah menerapkan metode K-Means Clustering untuk mengelompokkan data berdasarkan karakteristik yang dimiliki setiap observasi. Secara khusus, penelitian ini bertujuan untuk:

  1. Mengidentifikasi pola alami pada data menggunakan pendekatan clustering non-hierarki.

  2. Menentukan jumlah klaster optimal menggunakan metode evaluasi seperti Elbow Method atau Silhouette Score.

  3. Menghasilkan kelompok data yang kompak dan terpisah, sesuai tujuan pengelompokan.

  4. Memberikan dasar interpretasi yang kuat sebagai bahan pendukung pengambilan keputusan.

BAB 2. SOURCE CODE

2.1 Library yang Digunakan

Pada penelitian ini digunakan beberapa library R yang berfungsi untuk membaca data, memproses data, melakukan clustering, mengevaluasi hasil klaster, dan menampilkan visualisasi.

library(readxl)
library(dplyr)
library(psych)
library(ggplot2) 
library(cluster)
library(factoextra)
library(stats)

Pada tahap analisis ini digunakan beberapa library pada perangkat lunak R yang memiliki fungsi spesifik dalam mendukung proses pengolahan data, analisis clustering, dan visualisasi hasil. Library readxl digunakan untuk membaca dataset dalam format Excel (.xlsx), sehingga memudahkan proses impor data tanpa perlu melakukan konversi format terlebih dahulu. Selanjutnya, library dplyr berperan dalam manipulasi data, termasuk seleksi variabel, pembersihan data, dan transformasi dataset agar siap digunakan pada tahap analisis. Library DT digunakan untuk menampilkan cuplikan data dalam bentuk tabel interaktif, sehingga mempermudah peninjauan struktur dan isi data sebelum dilakukan proses analisis lebih lanjut.

Untuk keperluan visualisasi, digunakan library ggplot2, yang memungkinkan pembuatan grafik yang informatif, estetis, dan mudah dipahami, terutama ketika menampilkan hasil clustering dalam bentuk scatter plot. Sementara itu, library cluster dibutuhkan untuk melakukan evaluasi kualitas cluster melalui perhitungan nilai silhouette. Library factoextra mendukung proses penentuan jumlah cluster optimal, seperti melalui metode Elbow dan Silhouette, serta membantu memvisualisasikan hasil clustering secara lebih intuitif. Terakhir, library stats digunakan sebagai library dasar yang menyediakan fungsi inti kmeans() untuk melakukan proses algoritma K-Means Clustering. Dengan kombinasi seluruh library tersebut, proses analisis data dapat berjalan dengan lebih efisien, terstruktur, dan menghasilkan output yang mudah digunakan dalam proses interpretasi.

2.2 Import Data

data <- read_excel("C:/Users/Abril Hisyam Efendi/Downloads/DATA_SARANA_KESEHATAN.xlsx")
head(data)

Pada tahap awal analisis, proses yang dilakukan adalah mengimpor data dari file eksternal agar dapat diproses menggunakan R. Data penelitian ini disimpan dalam format Microsoft Excel (.xlsx), sehingga diperlukan library readxl untuk membaca file tersebut secara langsung tanpa perlu melakukan konversi ke format CSV. Pemilihan format Excel memberikan kemudahan dalam penyimpanan, dokumentasi, dan pengelolaan dataset, terutama ketika data memiliki banyak variabel serta membutuhkan dokumentasi tambahan seperti catatan variabel dan penjelasan metadata. Proses impor data dilakukan menggunakan fungsi read_excel(), yang memungkinkan pembacaan seluruh isi file sekaligus menjaga tipe data dari setiap kolom agar terbaca sesuai struktur awalnya.

Selain itu, penting untuk memastikan bahwa direktori file sudah benar dan sesuai dengan lokasi penyimpanan dataset pada komputer pengguna. Pada RMarkdown, penggunaan path absolut (misalnya “C:/Users/HP/Downloads/DATA_SARANA_KESEHATAN.xlsx”) memungkinkan script berjalan konsisten selama file tidak dipindahkan. Setelah data berhasil diimpor, langkah selanjutnya adalah memeriksa struktur data, tipe variabel, dan adanya kemungkinan data hilang (missing values). Tahapan ini penting dilakukan untuk memastikan bahwa dataset telah siap dianalisis dan memenuhi syarat untuk digunakan dalam proses clustering non-hierarki. Dengan demikian, tahap import data menjadi fondasi utama yang menentukan ketepatan serta keberhasilan keseluruhan analisis.

2.3 Perhitungan Jarak

Clustering non-hierarki, termasuk K-Means, membutuhkan ukuran jarak (distance measure) untuk menentukan kedekatan antar objek. Pemilihan jenis jarak sangat penting karena akan memengaruhi bentuk klaster, sensitivitas terhadap skala, serta stabilitas hasil analisis. Dalam penelitian ini digunakan jarak Euclidean, yang merupakan ukuran jarak paling umum pada data numerik dan menjadi standar dalam algoritma K-Means. Selain Euclidean, terdapat pula alternatif ukuran jarak seperti Manhattan dan Minkowski yang dapat digunakan apabila data memiliki karakteristik tertentu.

Perhitungan jarak dilakukan berdasarkan nilai variabel numerik yang telah dinormalisasi sebelumnya agar tidak terjadi dominasi variabel berskala besar terhadap variabel berskala kecil. Proses ini menghasilkan matriks jarak yang menggambarkan tingkat kemiripan antar pasangan observasi. Matriks jarak tersebut kemudian menjadi dasar algoritma K-Means dalam menentukan klaster melalui proses minimisasi jarak terhadap centroid. Dengan demikian, bagian ini menjelaskan konsep matematis ukuran jarak serta menyiapkan dasar untuk proses clustering pada tahap selanjutnya.

2.3.1 Jenis-jenis Jarak

Clustering non-hierarki, termasuk metode K-Means, memerlukan ukuran jarak (distance measure) untuk menentukan kedekatan antar-observasi. Jarak yang digunakan menjadi faktor penting dalam menentukan pembentukan klaster, struktur klaster, serta kualitas hasil clustering. Pada penelitian ini digunakan jarak Euclidean sebagai ukuran utama karena sesuai dengan karakteristik data numerik dan merupakan ukuran jarak yang digunakan secara default dalam algoritma K-Means.

a. Jarak Euclidean

Jarak Euclidean merupakan ukuran jarak garis lurus antara dua titik dalam ruang berdimensi-\(p\). Rumus jarak Euclidean adalah sebagai berikut:

\[ d(x_i, x_j) = \sqrt{\sum_{k=1}^{p} (x_{ik} - x_{jk})^2} \]

Keterangan:
\(x_i, x_j\) : pasangan observasi yang dihitung jaraknya
\(p\) : jumlah variabel
\(x_{ik}\) : nilai observasi ke-\(i\) pada variabel ke-\(k\)

b. Jarak Manhattan

\[ d(x_i, x_j) = \sum_{k=1}^{p} |x_{ik} - x_{jk}| \]

Keterangan:
\(x_i, x_j\) : pasangan observasi yang dihitung jaraknya
\(p\) : jumlah variabel
\(x_{ik}\) : nilai observasi ke-\(i\) pada variabel ke-\(k\)

2.3.2 Alasan Pemilihan Jarak

Pemilihan jarak Euclidean didasarkan pada alasan berikut:
1. Euclidean merupakan ukuran jarak standar dalam K-Means karena proses minimisasi Within-Cluster Sum of Squares (WCSS) menggunakan squared Euclidean distance.
2. Euclidean sesuai untuk data numerik yang telah dinormalisasi.
3. Menghasilkan klaster berbentuk spherical yang sesuai dengan asumsi K-Means.
4. Lebih cepat dihitung dan stabil untuk dataset menengah hingga besar.


## Syntax R Perhitungan Jarak

### Normalisasi Data (Wajib Sebelum Hitung Jarak)

# Mengambil variabel numerik
data_num <- data %>% select_if(is.numeric)
# Normalisasi (Scaling)
data_scaled <- scale(data_num)

2.4 Penentuan Jumlah Cluster

Penentuan jumlah klaster (\(k\)) merupakan tahap yang sangat penting dalam proses clustering non-hierarki. Pemilihan nilai \(k\) yang tepat menentukan kualitas pemisahan klaster dan interpretasi hasil analisis. Pada penelitian ini, penentuan jumlah klaster optimal dilakukan menggunakan dua pendekatan utama, yaitu Metode Elbow dan Silhouette Coefficient.

Metode Elbow bekerja dengan menghitung Within-Cluster Sum of Squares (WCSS) untuk berbagai nilai \(k\). Secara matematis, WCSS didefinisikan sebagai:

\[ WCSS = \sum_{j=1}^{k} \sum_{x_i \in C_j} || x_i - \mu_j ||^2 \]

Keterangan:
\(C_j\) = klaster ke-\(j\)
\(x_i\) = data ke-\(i\) dalam klaster
\(\mu_j\) = centroid klaster ke-\(j\)

Metode Silhouette mengevaluasi kualitas pemisahan klaster berdasarkan perbandingan antara jarak rata-rata ke klaster sendiri dan klaster terdekat lainnya. Rumus silhouette untuk suatu observasi adalah:

\[ s(i) = \frac{b(i) - a(i)}{\max(a(i), b(i))} \]

Keterangan:
\(a(i)\) = jarak rata-rata observasi ke anggota klaster sendiri
\(b(i)\) = jarak rata-rata observasi ke klaster lain terdekat

Nilai silhouette berada pada rentang \([-1, 1]\), di mana nilai mendekati 1 menunjukkan klaster yang baik.

Syntax R — Penentuan Jumlah Cluster

# Menggunakan data yang sudah dinormalisasi
data_scaled <- scale(data |> dplyr::select_if(is.numeric))
# Metode Elbow
fviz_nbclust(data_scaled, kmeans, method = "wss") +
  labs(title = "Metode Elbow untuk Penentuan Jumlah Cluster")
# Metode Silhouette
fviz_nbclust(data_scaled, kmeans, method = "silhouette") +
  labs(title = "Silhouette Score untuk Penentuan Jumlah Cluster")

2.5 Proses Clustering

Setelah jumlah klaster optimal ditentukan, tahap berikutnya adalah melakukan proses clustering menggunakan algoritma K-Means. K-Means bekerja dengan mencari posisi centroid yang meminimalkan WCSS, dan mengelompokkan setiap observasi berdasarkan jarak Euclidean ke centroid terdekat. Proses ini berlangsung secara iteratif hingga tidak ada perubahan komposisi klaster atau ketika iterasi maksimum tercapai.

Secara umum, algoritma K-Means terdiri dari langkah-langkah berikut:

  1. Menentukan jumlah klaster k.

  2. Menentukan centroid awal secara acak.

  3. Menghitung jarak setiap titik ke tiap centroid.

  4. Mengelompokkan titik ke centroid terdekat.

  5. Memperbarui posisi centroid berdasarkan rata-rata titik pada setiap klaster.

  6. Mengulang langkah 3–5 hingga konvergen.

Berikut syntax untuk menjalankan proses K-Means.

Syntax R — Proses K-Means

set.seed(123)
k_optimal <- 3 (ubah sesuai hasil silhouette)
km_res <- kmeans(data_scaled, centers = k_optimal, nstart = 25)
km_res
data_clustered <- data
data_clustered$cluster <- factor(km_res$cluster)
head(data_clustered)

2.6 Evaluasi Cluster

Evaluasi cluster dilakukan untuk mengetahui kualitas pengelompokan. Pada penelitian ini digunakan dua ukuran evaluasi, yaitu Within-Cluster Sum of Squares (WCSS) dan Silhouette Score.

  1. Evaluasi Berdasarkan WCSS

WCSS rendah menunjukkan bahwa objek dalam klaster memiliki kemiripan yang tinggi. Nilai WCSS tiap klaster dapat diperoleh dari output fungsi K-Means.

  1. Evaluasi Berdasarkan Silhouette

Silhouette digunakan untuk menilai apakah suatu observasi berada dalam klaster yang tepat. Nilai silhouette global memberikan gambaran mengenai kualitas keseluruhan klaster.

Syntax R — Evaluasi Cluster

# WCSS (Total Within-Cluster Sum of Squares)
km_res$tot.withinss
# Silhouette
sil <- silhouette(km_res$cluster, dist(data_scaled))
summary(sil)
fviz_silhouette(sil)

2.7 Visualisasi Cluster

Visualisasi hasil clustering merupakan tahap penting untuk memahami pola dan struktur kelompok yang terbentuk. Dengan memanfaatkan berbagai teknik visualisasi seperti scatter plot, cluster plot, PCA biplot, dan heatmap, interpretasi terhadap pemisahan cluster dapat dilakukan secara lebih intuitif. Pada metode K-Means, visualisasi umumnya dilakukan pada data yang telah direduksi dimensinya (misalnya menggunakan Principal Component Analysis/PCA), sehingga cluster dapat digambarkan pada bidang dua dimensi. Visualisasi ini membantu mengidentifikasi kedekatan antar objek, jarak antar cluster, serta distribusi titik data di dalam masing-masing kelompok. Selain itu, penggunaan plot tambahan seperti fviz_cluster dari paket factoextra memudahkan analisis karena menyediakan tampilan centroid, batas cluster, dan pola penyebaran data secara informatif.

Syntax R — Visualisasi Cluster

fviz_cluster(
  km_res,
  data = data_scaled,
  geom = "point",
  ellipse.type = "norm",
  palette = "jco",
  ggtheme = theme_minimal(),
  main = "Visualisasi Hasil Clustering K-Means"
)

BAB 3. HASIL DAN PEMBAHASAN

3.1 Statistika Deskriptif

Pada bagian ini disajikan gambaran umum mengenai karakteristik variabel yang digunakan dalam analisis. Statistik deskriptif mencakup nilai rata-rata, minimum, maksimum, dan standar deviasi sehingga dapat memberikan pemahaman mengenai persebaran data sebelum proses clustering dilakukan.

library(dplyr)
library(readxl)
library(dplyr)
library(ggplot2) 
library(cluster)
library(factoextra)
library(stats)
library(psych)

data <- read_excel("C:/Users/Abril Hisyam Efendi/Downloads/DATA_SARANA_KESEHATAN.xlsx")
head(data)
## # A tibble: 6 × 7
##   Provinsi         `Rumah Sakit` `Rumah Sakit Bersalin` Poliklinik Puskesmas
##   <chr>                    <dbl>                  <dbl>      <dbl>     <dbl>
## 1 ACEH                        64                    225        258       395
## 2 SUMATERA UTARA             199                    441        800       661
## 3 SUMATERA BARAT              54                    139        127       294
## 4 RIAU                        55                    207        329       272
## 5 JAMBI                       36                    151        103       231
## 6 SUMATERA SELATAN            65                    248        195       403
## # ℹ 2 more variables: `Puskesmas Pembantu` <dbl>, Apotek <dbl>
# Mengambil variabel numerik
data_num <- data %>% select_if(is.numeric)
# Normalisasi (Scaling)
data_scaled <- scale(data_num)

# Statistik deskriptif
deskriptif <- psych::describe(data_num)
knitr::kable(deskriptif, caption = "Statistik Deskriptif Variabel")
Statistik Deskriptif Variabel
vars n mean sd median trimmed mad min max range skew kurtosis se
Rumah Sakit 1 34 68.20588 79.90516 40.0 50.03571 28.9107 10 317 307 2.078892 3.1405725 13.70362
Rumah Sakit Bersalin 2 34 188.44118 307.99421 70.0 110.60714 88.2147 2 1245 1243 2.439128 5.0344396 52.82057
Poliklinik 3 34 248.55882 382.59522 105.5 156.85714 103.7820 15 1670 1655 2.351118 4.7821501 65.61454
Puskesmas 4 34 318.23529 264.37715 244.0 267.25000 154.1904 59 1170 1111 1.835549 2.7830789 45.34031
Puskesmas Pembantu 5 34 769.50000 552.38981 605.5 706.28571 487.7754 3 2338 2335 1.084566 0.5361989 94.73407
Apotek 6 34 356.02941 505.85634 192.5 224.10714 146.7774 47 2068 2021 2.459815 4.8269039 86.75365
  1. Rumah Sakit

Jumlah rumah sakit di 34 wilayah menunjukkan rata-rata 68,21 dengan median 40, yang mengindikasikan bahwa sebagian besar wilayah memiliki jumlah rumah sakit yang relatif rendah. Rentang nilai yang sangat lebar, yaitu dari 10 hingga 317, menunjukkan adanya ketimpangan antar wilayah. Skewness sebesar 2,08 dan kurtosis 3,14 menegaskan bahwa distribusi data miring ke kanan dan memiliki nilai ekstrem yang cukup besar, sehingga rata-rata dipengaruhi oleh beberapa wilayah dengan jumlah rumah sakit yang sangat tinggi.

  1. Rumah Sakit Bersalin

Variabel rumah sakit bersalin memiliki rata-rata 188,44 namun median hanya 70, menunjukkan ketidakseimbangan distribusi yang sangat besar. Nilai minimumnya hanya 2 sedangkan maksimumnya mencapai 1245, sehingga variasinya sangat ekstrem. Nilai skewness sebesar 2,44 dan kurtosis 5,03 menunjukkan bahwa distribusi sangat miring ke kanan dengan banyak nilai outlier, menandakan bahwa sebagian besar wilayah memiliki jumlah rumah sakit bersalin rendah, sementara beberapa wilayah memiliki jumlah yang jauh lebih tinggi dari yang lain.

  1. Poliklinik

Jumlah poliklinik memiliki rata-rata 248,56 dengan median 105,5, menunjukkan bahwa sebagian besar wilayah memiliki jumlah poliklinik di bawah nilai rata-rata. Rentang nilai sangat besar, dari 15 hingga 1670, menandakan ketimpangan tajam antar wilayah. Skewness sebesar 2,35 dan kurtosis 4,78 menunjukkan distribusi yang miring ke kanan dan adanya nilai ekstrem yang kuat, yang menyebabkan rata-rata menjadi lebih tinggi daripada sebaran umumnya.

  1. Puskesmas

Pada variabel Puskesmas, rata-rata sebesar 318,24 dengan median 244 menunjukkan bahwa distribusi lebih stabil dibandingkan variabel lainnya. Meskipun variasinya tetap besar dengan rentang 59 hingga 1170, nilai skewness 1,83 dan kurtosis 2,78 menunjukkan distribusi yang masih miring ke kanan tetapi tidak se-ekstrem rumah sakit bersalin atau poliklinik. Hal ini menunjukkan bahwa jumlah Puskesmas antar wilayah lebih seimbang meskipun tetap ada wilayah dengan jumlah yang jauh lebih tinggi.

  1. Puskesmas Pembantu

Jumlah Puskesmas Pembantu menunjukkan rata-rata yang paling tinggi, yaitu 769,50 dengan median 605,5. Meskipun variasinya cukup besar (rentang 3 hingga 2338), distribusinya cenderung lebih mendekati normal dibanding variabel lainnya karena memiliki skewness rendah (1,08) dan kurtosis 0,54. Ini menunjukkan bahwa meskipun ada ketimpangan antar wilayah, penyebaran jumlah Puskesmas Pembantu lebih merata daripada fasilitas lainnya.

  1. Apotek

Variabel apotek memiliki rata-rata 356,03 dan median 192,5, menunjukkan ketimpangan antar wilayah dengan sebagian besar wilayah berada di bawah nilai rata-rata. Rentang nilai yang sangat besar, yaitu dari 47 hingga 2068, menghasilkan skewness sebesar 2,46 dan kurtosis 4,83. Distribusi yang sangat miring ke kanan ini menunjukkan adanya wilayah dengan jumlah apotek yang sangat tinggi sehingga memengaruhi nilai rata-rata secara signifikan.

3.2 Hasil Analisis Clustering

Penentuan jumlah cluster optimal dilakukan sesuai Bab 2 menggunakan beberapa metode, seperti Elbow Method dan Silhouette Coefficient. Setelah diperoleh jumlah cluster optimal (misalnya k = k_optimal), proses clustering menggunakan algoritma K-Means dilakukan pada data yang telah dinormalisasi.

Pada bagian ini ditampilkan nilai objektif dari algoritma K-Means, seperti:

  1. Total Within-Cluster Sum of Squares (WCSS)

  2. Between Sum of Squares (BSS)

  3. Overall silhouette score

Nilai-nilai ini digunakan untuk mengevaluasi seberapa baik K-Means membentuk cluster yang kompak dan terpisah.

# Menggunakan data yang sudah dinormalisasi
data_scaled <- scale(data |> dplyr::select_if(is.numeric))
# Metode Elbow
fviz_nbclust(data_scaled, kmeans, method = "wss") +
  labs(title = "Metode Elbow untuk Penentuan Jumlah Cluster")

# Metode Silhouette
fviz_nbclust(data_scaled, kmeans, method = "silhouette") +
  labs(title = "Silhouette Score untuk Penentuan Jumlah Cluster")

set.seed(123)
sil_values <- c()
for (k in 2:10) {
  km_temp <- kmeans(data_scaled, centers = k, nstart = 25)
  sil_temp <- silhouette(km_temp$cluster, dist(data_scaled))
  sil_values[k] <- mean(sil_temp[, 3])
}
# Menentukan k optimal (nilai silhouette tertinggi)
k_optimal <- which.max(sil_values)
km_res <- kmeans(data_scaled, centers = k_optimal, nstart = 25)
km_res
## K-means clustering with 2 clusters of sizes 30, 4
## 
## Cluster means:
##   Rumah Sakit Rumah Sakit Bersalin Poliklinik  Puskesmas Puskesmas Pembantu
## 1   -0.337557           -0.3231917 -0.3318359 -0.3171049         -0.2883833
## 2    2.531678            2.4239378  2.4887691  2.3782869          2.1628748
##       Apotek
## 1 -0.3284122
## 2  2.4630918
## 
## Clustering vector:
##  [1] 1 2 1 1 1 1 1 1 1 1 1 2 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 
## Within cluster sum of squares by cluster:
## [1] 25.01029 14.86734
##  (between_SS / total_SS =  79.9 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"
data_clustered <- data
data_clustered$cluster <- factor(km_res$cluster)
head(data_clustered)
## # A tibble: 6 × 8
##   Provinsi         `Rumah Sakit` `Rumah Sakit Bersalin` Poliklinik Puskesmas
##   <chr>                    <dbl>                  <dbl>      <dbl>     <dbl>
## 1 ACEH                        64                    225        258       395
## 2 SUMATERA UTARA             199                    441        800       661
## 3 SUMATERA BARAT              54                    139        127       294
## 4 RIAU                        55                    207        329       272
## 5 JAMBI                       36                    151        103       231
## 6 SUMATERA SELATAN            65                    248        195       403
## # ℹ 3 more variables: `Puskesmas Pembantu` <dbl>, Apotek <dbl>, cluster <fct>
# WCSS (Total Within-Cluster Sum of Squares)
km_res$tot.withinss
## [1] 39.87763
# Silhouette
sil <- silhouette(km_res$cluster, dist(data_scaled))
summary(sil)
## Silhouette of 34 units in 2 clusters from silhouette.default(x = km_res$cluster, dist = dist(data_scaled)) :
##  Cluster sizes and average silhouette widths:
##        30         4 
## 0.8247740 0.5110445 
## Individual silhouette widths:
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.04862 0.76925 0.84503 0.78786 0.86950 0.87802

3.3 Hasil Pembentukan Cluster

Setelah proses K-Means selesai, setiap observasi diklasifikasikan ke dalam cluster tertentu. Bagian ini juga menampilkan profil cluster berdasarkan nilai rata-rata masing-masing variabel, sehingga dapat terlihat karakteristik tiap cluster.

data_clustered <- data_num %>%
  mutate(Cluster = factor(km_res$cluster))

knitr::kable(head(data_clustered), caption = "Cuplikan Pembagian Cluster")
Cuplikan Pembagian Cluster
Rumah Sakit Rumah Sakit Bersalin Poliklinik Puskesmas Puskesmas Pembantu Apotek Cluster
64 225 258 395 971 346 1
199 441 800 661 1887 740 2
54 139 127 294 721 257 1
55 207 329 272 1033 351 1
36 151 103 231 654 211 1
65 248 195 403 935 244 1
profil_cluster <- data_clustered %>%
  group_by(Cluster) %>%
  summarise_all(mean)

knitr::kable(profil_cluster, digits = 3, caption = "Profil Rata-rata Tiap Cluster")
Profil Rata-rata Tiap Cluster
Cluster Rumah Sakit Rumah Sakit Bersalin Poliklinik Puskesmas Puskesmas Pembantu Apotek
1 41.233 88.9 121.60 234.4 610.20 189.9
2 270.500 935.0 1200.75 947.0 1964.25 1602.0
fviz_cluster(
  km_res,
  data = data_scaled,
  geom = "point",
  ellipse.type = "norm",
  palette = "jco",
  ggtheme = theme_minimal(),
  main = "Visualisasi Hasil Clustering K-Means"
)

3.4 Interpretasi Hasil

Hasil analisis klaster K-Means dengan dua kelompok menunjukkan bahwa pemodelan mampu menjelaskan struktur data fasilitas kesehatan antar provinsi dengan sangat baik. Nilai between_SS/total_SS sebesar 79,9% mengindikasikan bahwa dua cluster yang terbentuk dapat menjelaskan hampir 80% variasi total data, sehingga pemisahan antar cluster tergolong kuat. Nilai total within-cluster sum of squares (WCSS) sebesar 39,88 menunjukkan bahwa objek dalam masing-masing cluster memiliki kemiripan yang cukup tinggi setelah proses standarisasi dilakukan. Hal ini diperkuat oleh hasil analisis silhouette, di mana rata-rata silhouette keseluruhan mencapai 0,78786, yang termasuk kategori sangat baik, menandakan bahwa struktur cluster terdefinisi dengan jelas dan anggota cluster berada cukup dekat dengan pusat kelompoknya. Cluster 1 memiliki nilai silhouette sebesar 0,824, menunjukkan kohesi yang sangat kuat, sedangkan Cluster 2 memiliki silhouette sebesar 0,511, yang berarti masih cukup baik meskipun variasi internalnya lebih besar. Secara keseluruhan, hasil ini menunjukkan bahwa algoritma K-Means berhasil mengelompokkan provinsi menjadi dua kelompok dengan karakteristik fasilitas kesehatan yang berbeda secara signifikan, di mana masing-masing cluster memiliki homogenitas internal yang baik dan pemisahan antar cluster yang jelas. Hasil ini memberikan dasar yang kuat untuk analisis lanjutan mengenai karakteristik masing-masing cluster serta ketimpangan distribusi fasilitas kesehatan antar provinsi.

Hasil perhitungan profil rata-rata menunjukkan bahwa Cluster 1 merepresentasikan wilayah dengan ketersediaan fasilitas kesehatan yang rendah. Hal ini terlihat dari rata-rata jumlah rumah sakit, poliklinik, puskesmas, hingga apotek yang relatif kecil dibandingkan cluster lainnya. Nilai yang rendah pada seluruh indikator mengindikasikan bahwa wilayah-wilayah dalam kelompok ini cenderung memiliki akses layanan kesehatan yang terbatas dan tingkat pembangunan infrastruktur kesehatan yang belum merata.

Sebaliknya, Cluster 2 menggambarkan wilayah dengan ketersediaan fasilitas kesehatan yang tinggi. Rata-rata jumlah fasilitas pada kelompok ini jauh lebih besar, mulai dari rumah sakit, rumah sakit bersalin, hingga puskesmas pembantu dan apotek. Kondisi ini menunjukkan bahwa cluster kedua didominasi oleh wilayah yang lebih berkembang, dengan konsentrasi fasilitas kesehatan yang lebih lengkap dan lebih banyak.

Secara keseluruhan, perbedaan mencolok antara kedua cluster tersebut menunjukkan bahwa proses clustering mampu memetakan wilayah ke dalam dua karakteristik utama, yaitu wilayah dengan fasilitas kesehatan rendah dan tinggi. Temuan ini dapat memberikan gambaran awal untuk melihat ketimpangan distribusi fasilitas kesehatan serta membantu perencanaan kebijakan pembangunan yang lebih terarah.

BAB 4. PENUTUP

4.1 Kesimpulan

Berdasarkan hasil analisis clustering menggunakan metode K-Means terhadap data fasilitas kesehatan antar provinsi, diperoleh dua cluster utama yang mampu menggambarkan kondisi ketersediaan sarana kesehatan secara jelas dan terpisah. Nilai between_SS/total_SS sebesar 79,9% menunjukkan bahwa model dengan dua cluster mampu menjelaskan hampir 80% variasi total data, sehingga struktur pemisahan cluster tergolong kuat. Selain itu, nilai total WCSS sebesar 39,88 mengindikasikan bahwa objek dalam tiap cluster memiliki kemiripan internal yang baik setelah proses standardisasi dilakukan.

Kualitas pembentukan cluster semakin diperkuat oleh hasil silhouette score rata-rata sebesar 0,78786, yang termasuk kategori sangat baik. Hal ini menandakan bahwa sebagian besar provinsi berada dalam cluster yang tepat, dengan kedekatan yang kuat terhadap pusat kelompoknya serta jarak yang jelas dengan cluster lainnya. Cluster 1 memiliki nilai silhouette sebesar 0,824 yang menunjukkan kohesi internal sangat kuat, sedangkan Cluster 2 memiliki nilai 0,511 yang tetap berada pada kategori cukup baik meskipun menunjukkan variasi internal yang lebih besar.

Interpretasi profil rata-rata masing-masing cluster menunjukkan bahwa Cluster 1 merupakan kelompok provinsi dengan ketersediaan fasilitas kesehatan yang rendah, ditandai dengan jumlah rumah sakit, rumah sakit bersalin, poliklinik, puskesmas, dan apotek yang relatif kecil. Hal ini mengindikasikan adanya keterbatasan akses serta ketimpangan pembangunan infrastruktur kesehatan di wilayah-wilayah tersebut. Sebaliknya, Cluster 2 menggambarkan provinsi dengan ketersediaan fasilitas kesehatan yang tinggi, ditunjukkan oleh rata-rata jumlah fasilitas yang jauh lebih besar. Kondisi ini mencerminkan wilayah yang lebih maju dengan distribusi sarana kesehatan yang lebih merata dan lengkap.

Secara keseluruhan, metode K-Means berhasil mengelompokkan provinsi menjadi dua kelompok besar dengan karakteristik yang berbeda secara signifikan. Hasil ini dapat menjadi dasar penting untuk memahami ketimpangan distribusi fasilitas kesehatan antar provinsi dan dapat digunakan lebih lanjut untuk mendukung perencanaan kebijakan pembangunan kesehatan yang lebih tepat sasaran.

4.2 Saran

Berdasarkan hasil analisis dan kesimpulan yang diperoleh, beberapa saran yang dapat diberikan adalah sebagai berikut:

  1. Pemerintah daerah dan pusat dapat memanfaatkan hasil clustering ini sebagai dasar untuk mengidentifikasi provinsi yang membutuhkan prioritas pembangunan fasilitas kesehatan, terutama provinsi yang tergolong dalam Cluster 1.

  2. Penelitian lanjutan dapat memasukkan variabel tambahan seperti jumlah tenaga kesehatan, kualitas infrastruktur, aksesibilitas wilayah, atau indikator sosial ekonomi untuk mendapatkan gambaran yang lebih komprehensif mengenai kondisi kesehatan setiap provinsi.

  3. Disarankan untuk menggunakan metode clustering lain seperti PAM atau DBSCAN pada penelitian berikutnya sebagai pembanding, guna memastikan konsistensi pola pengelompokan yang ditemukan oleh metode K-Means.

  4. Perlu dilakukan analisis spasial untuk memvisualisasikan persebaran cluster secara geografis, sehingga kebijakan dan intervensi pembangunan dapat dilakukan lebih efektif berdasarkan konteks wilayah.

  5. Dataset yang digunakan sebaiknya diperbarui secara berkala, sehingga hasil pengelompokan dapat terus mencerminkan kondisi terbaru dan mendukung proses evaluasi kebijakan kesehatan yang sedang berjalan.

4.3 Daftar Pustaka

Han, J., Kamber, M., & Pei, J. (2012). Data Mining: Concepts and Techniques (3rd ed.). Morgan Kaufmann.

Hartigan, J. A., & Wong, M. A. (1979). Algorithm AS 136: A k-means clustering algorithm. Journal of the Royal Statistical Society: Series C (Applied Statistics), 28(1), 100–108. https://doi.org/10.2307/2346830

Jain, A. K. (2010). Data clustering: 50 years beyond k-means. Pattern Recognition Letters, 31(8), 651–666. https://doi.org/10.1016/j.patrec.2009.09.011

Ketchen, D. J., & Shook, C. L. (1996). The application of cluster analysis in strategic management research: An analysis and critique. Strategic Management Journal, 17(6), 441–458.

MacQueen, J. (1967). Some methods for classification and analysis of multivariate observations. Proceedings of the Fifth Berkeley Symposium on Mathematical Statistics and Probability, 1, 281–297.

Rousseeuw, P. J. (1987). Silhouettes: A graphical aid to the interpretation and validation of cluster analysis. Journal of Computational and Applied Mathematics, 20, 53–65.

Tan, P.-N., Steinbach, M., & Kumar, V. (2019). Introduction to Data Mining (2nd ed.). Pearson.