Sarana kesehatan merupakan salah satu indikator penting dalam penilaian kualitas pelayanan kesehatan di suatu wilayah. Variasi jumlah fasilitas kesehatan antardaerah dapat mencerminkan kesenjangan pelayanan dan kebutuhan intervensi kebijakan. Oleh karena itu, diperlukan analisis yang mampu mengelompokkan provinsi berdasarkan jumlah sarana kesehatan yang dimiliki sehingga pola dan perbedaan antar kelompok dapat dipahami secara lebih komprehensif.
Data yang digunakan pada penelitian ini mencakup beberapa jenis fasilitas kesehatan seperti Rumah Sakit, Rumah Sakit Bersalin, Poliklinik, Puskesmas, Puskesmas Pembantu, dan Apotek. Analisis dilakukan untuk melihat kemiripan antar provinsi dalam hal ketersediaan fasilitas kesehatan.
## # 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>
Analisis Cluster Hierarki merupakan metode pengelompokan objek berdasarkan ukuran kemiripan atau jarak antar objek. Metode ini tidak memerlukan penentuan jumlah cluster di awal, sehingga struktur pengelompokan dapat divisualisasikan melalui dendrogram. Metode ini sangat sesuai digunakan pada data dengan jumlah objek yang tidak terlalu besar seperti data provinsi di Indonesia.
Menurut Hair et al., analisis cluster hierarki merupakan metode penting dalam pengelompokan objek berdasarkan similaritas. Prosesnya dimulai dari pembentukan klaster kecil hingga menjadi klaster besar, ditampilkan dalam dendrogram. Faktor paling krusial adalah pemilihan ukuran jarak, metode linkage, dan standardisasi data. Ward’s method sering menjadi pilihan terbaik karena menghasilkan klaster yang kompak dan stabil. Validasi dan interpretasi substantif tetap menjadi langkah yang tidak terpisahkan dalam memastikan hasil klaster bermakna.
Mengidentifikasi jumlah cluster yang tepat untuk data sarana kesehatan.
Mengelompokkan fasilitas kesehatan berdasarkan kemiripan karakteristiknya
library(readxl) #Membaca file Excel
library(dplyr) #Manipulasi data (select, filter, mutate)
##
## 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(psych) #Uji KMO dan analisis psikometri
library(clValid) # Validitas cluster dan penentuan jumlah cluster
## Loading required package: cluster
library(factoextra) # Visualisasi dendrogram dan cluster
## Loading required package: ggplot2
##
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
##
## %+%, alpha
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(cluster) # Perhitungan silhouette dan metode clustering
library(stats) # fungsi dasar cluster (dist, hclust)
data <- read_excel("C:/Users/Azka Kania/DownloadS/DATA_SARANA_KESEHATAN.xlsx")
Membaca file Excel dan menyimpannya sebagai data frame.
data <- data %>% select_if(is.numeric)
Mengambil hanya kolom numerik karena analisis cluster membutuhkan data angka untuk menghitung jarak.
data <- na.omit(data)
Menghapus baris yang memiliki nilai hilang (NA) agar analisis tidak error dan hasil analisisnya lebih akurat.
psych::KMO(data)
## Kaiser-Meyer-Olkin factor adequacy
## Call: psych::KMO(r = data)
## Overall MSA = 0.9
## MSA for each item =
## Rumah Sakit Rumah Sakit Bersalin Poliklinik
## 0.94 0.91 0.92
## Puskesmas Puskesmas Pembantu Apotek
## 0.86 0.84 0.94
Menilai kecukupan sampel dan kelayakan data untuk dianalisis, Semakin tinggi nilai KMO semakin baik dan layak data untuk dianalisis.
cor(data)
## Rumah Sakit Rumah Sakit Bersalin Poliklinik Puskesmas
## Rumah Sakit 1.0000000 0.9618700 0.9565052 0.9330942
## Rumah Sakit Bersalin 0.9618700 1.0000000 0.9690787 0.9342288
## Poliklinik 0.9565052 0.9690787 1.0000000 0.9284192
## Puskesmas 0.9330942 0.9342288 0.9284192 1.0000000
## Puskesmas Pembantu 0.7934684 0.7834446 0.7714473 0.8998482
## Apotek 0.9600062 0.9589805 0.9499034 0.9235252
## Puskesmas Pembantu Apotek
## Rumah Sakit 0.7934684 0.9600062
## Rumah Sakit Bersalin 0.7834446 0.9589805
## Poliklinik 0.7714473 0.9499034
## Puskesmas 0.8998482 0.9235252
## Puskesmas Pembantu 1.0000000 0.7967605
## Apotek 0.7967605 1.0000000
Melihat hubungan antar variabel untuk memahami pola awal dan memastikan struktur data masuk akal.
Menyeragamkan skala antar variabel agar tidak ada variabel yang mendominasi perhitungan jarak.
Kode berikut digunakan untuk menghitung matriks jarak menggunakan metode Euclidean dan kemudian membentuk cluster menggunakan metode single linkage. Perhitungan jarak ini menjadi dasar untuk menyusun struktur hierarchical clustering.
Kode ini membandingkan nilai korelasi cophenetic dari beberapa metode hierarchical clustering yaitu single, complete, dan average.
Kode ini menjalankan evaluasi internal menggunakan paket clValid dengan metode hierarchical dan average linkage. Tiga indeks evaluasi yaitu Connectivity, Dunn, dan Silhouette dihitung untuk menentukan jumlah cluster yang paling sesuai.
Kode ini digunakan untuk menampilkan dendrogram dari hasil hierarchical clustering metode single. Visualisasi ini membantu mengidentifikasi struktur pengelompokan secara lebih jelas.
# pilih hanya variabel numerik
data <- data %>% select_if(is.numeric)
# hapus NA agar tidak error
data <- na.omit(data)
KMO <- function(x){
x <- as.matrix(x)
R <- cor(x)
S2 <- (solve(R))
Ai <- diag(1/sqrt(diag(S2)))
MS <- Ai %*% S2 %*% Ai
Vi <- 1 - diag(1/diag(S2))
MSA <- 1 - (MS - diag(diag(MS)))
KMO_value <- sum(MSA) / (sum(MSA) + sum(Vi))
return(KMO_value)
}
KMO(data)
## [1] 0.5393008
Nilai KMO sebesar 0.539 menunjukkan bahwa data cukup memadai untuk dianalisis. Nilai di atas 0.50 dianggap memenuhi syarat minimal untuk analisis lebih lanjut.
korelasi <- cor(data, method = "pearson")
korelasi
## Rumah Sakit Rumah Sakit Bersalin Poliklinik Puskesmas
## Rumah Sakit 1.0000000 0.9618700 0.9565052 0.9330942
## Rumah Sakit Bersalin 0.9618700 1.0000000 0.9690787 0.9342288
## Poliklinik 0.9565052 0.9690787 1.0000000 0.9284192
## Puskesmas 0.9330942 0.9342288 0.9284192 1.0000000
## Puskesmas Pembantu 0.7934684 0.7834446 0.7714473 0.8998482
## Apotek 0.9600062 0.9589805 0.9499034 0.9235252
## Puskesmas Pembantu Apotek
## Rumah Sakit 0.7934684 0.9600062
## Rumah Sakit Bersalin 0.7834446 0.9589805
## Poliklinik 0.7714473 0.9499034
## Puskesmas 0.8998482 0.9235252
## Puskesmas Pembantu 1.0000000 0.7967605
## Apotek 0.7967605 1.0000000
Hasil uji non-multikolinearitas menggunakan matriks korelasi Pearson menunjukkan bahwa seluruh variabel numerik memiliki korelasi yang tinggi (nilai > 0,90). Namun, hal ini tidak menjadi masalah dalam analisis cluster karena yang dibutuhkan dalam analisis cluster adalah ukuran kemiripan antar objek bukan estimasi model prediktif.
datastand <- scale(data)
dist_mat <- dist(datastand, method = "euclidean")
hc <- hclust(dist_mat, method = "single")
methods <- c("single", "complete", "average")
cor_values <- sapply(methods, function(m) {
hc_all <- hclust(dist_mat, method = m)
d_coph <- cophenetic(hc_all)
cor(dist_mat, d_coph)
})
cor_values
## single complete average
## 0.9609600 0.9340591 0.9416371
Metode Single Linkage memiliki nilai sebesar 0.96. Nilai tersebut lebih baik dibanding Avarage Linkage yang memiliki nilai sebesar 0.94 dan nilai metode Complete linkage yang memiliki nilai sebesar 0,94.
inval <- clValid(datastand, 2:6,
clMethods = "hierarchical",
validation = "internal",
metric = "euclidean",
method = "single")
## Warning in clValid(datastand, 2:6, clMethods = "hierarchical", validation =
## "internal", : rownames for data not specified, using 1:nrow(data)
summary(inval)
##
## Clustering Methods:
## hierarchical
##
## Cluster sizes:
## 2 3 4 5 6
##
## Validation Measures:
## 2 3 4 5 6
##
## hierarchical Connectivity 4.4536 7.2159 9.7159 11.7159 15.1448
## Dunn 0.6497 0.9032 0.6219 0.5359 0.3589
## Silhouette 0.7993 0.6725 0.6351 0.6253 0.2632
##
## Optimal Scores:
##
## Score Method Clusters
## Connectivity 4.4536 hierarchical 2
## Dunn 0.9032 hierarchical 3
## Silhouette 0.7993 hierarchical 2
Berdasarkan hasil uji validitas cluster dengan indeks validitas silhouette diperoleh bahwa banyak cluster optimal adalah 2.
plot(hc,
main = "Dendrogram - Metode Single",
xlab = "",
sub = "",
cex = 0.7)
cluster2 <- cutree(hc, k = 2)
hasil_cluster <- data.frame(
Provinsi = data[[1]], # kolom pertama = nama provinsi
Cluster_2 = cluster2
)
hasil_cluster
## Provinsi Cluster_2
## 1 64 1
## 2 199 1
## 3 54 1
## 4 55 1
## 5 36 1
## 6 65 1
## 7 20 1
## 8 53 1
## 9 21 1
## 10 23 1
## 11 119 1
## 12 292 2
## 13 274 2
## 14 61 1
## 15 317 2
## 16 87 1
## 17 49 1
## 18 31 1
## 19 48 1
## 20 39 1
## 21 19 1
## 22 34 1
## 23 39 1
## 24 11 1
## 25 46 1
## 26 29 1
## 27 75 1
## 28 31 1
## 29 14 1
## 30 10 1
## 31 27 1
## 32 20 1
## 33 16 1
## 34 41 1
Cluster 1 mencakup sebagian besar provinsi di Indonesia yang memiliki jumlah fasilitas kesehatan yang relatif lebih sedikit dibanding provinsi lain. Provinsi-provinsi dalam kelompok ini cenderung memiliki jumlah rumah sakit, puskesmas, klinik, maupun fasilitas layanan kesehatan lain yang masih terbatas. Keterbatasan ini bisa disebabkan oleh faktor geografis, kepadatan penduduk yang tidak terlalu tinggi, atau pembangunan infrastruktur kesehatan yang masih berkembang. Secara keseluruhan, Cluster 1 merepresentasikan wilayah-wilayah yang membutuhkan peningkatan jumlah fasilitas kesehatan agar distribusi layanan menjadi lebih merata dan mampu memenuhi kebutuhan masyarakat.
Cluster 2 terdiri dari provinsi dengan jumlah fasilitas kesehatan yang lebih tinggi dan kapasitas layanan yang lebih besar. Provinsi-provinsi dalam cluster ini umumnya merupakan wilayah dengan populasi besar, tingkat urbanisasi tinggi, serta pusat kegiatan ekonomi dan pemerintahan. Kondisi tersebut mendorong ketersediaan fasilitas kesehatan yang lebih lengkap, mulai dari rumah sakit besar, puskesmas yang lebih banyak, hingga keberadaan tenaga kesehatan yang lebih memadai. Dengan demikian, Cluster 2 mencerminkan wilayah dengan pelayanan kesehatan yang lebih maju dan daya dukung infrastruktur yang lebih kuat.
Berdasarkan hasil analisis cluster hierarki, dapat disimpulkan seperti berikut:
Data memiliki kecukupan sampel yang cukup baik (KMO > 0.50).
Evaluasi validitas menunjukkan bahwa dua cluster merupakan struktur yang paling stabil.
Dendrogram memperlihatkan pembagian dua kelompok utama provinsi berdasarkan kemiripan fasilitas kesehatan.
Penelitian dapat dilanjutkan dengan metode K-Means atau PCA + clustering untuk eksplorasi lebih mendalam.
Variabel tambahan seperti jumlah tenaga kesehatan dapat meningkatkan kualitas pengelompokan.
Perlu dilakukan pengecekan ulang kualitas data agar menghindari NA dan inkonsistensi.
Hair, J. F., Black, W. C., Babin, B. J., & Anderson, R. E. (2019). Multivariate Data Analysis. Kaufman, L., & Rousseeuw, P. J. (2005). Finding Groups in Data. Everitt, B. (2011). Cluster Analysis.