Sarana kesehatan merupakan salah satu indikator penting dalam menilai kualitas pembangunan suatu wilayah. Pemerataan fasilitas kesehatan sangat berpengaruh terhadap akses layanan kesehatan masyarakat, efektivitas penanganan penyakit, serta pemerataan mutu pelayanan kesehatan di seluruh Indonesia. Jumlah fasilitas kesehatan seperti rumah sakit, puskesmas, poliklinik, puskesmas pembantu, hingga apotek dapat mencerminkan seberapa optimal pelayanan kesehatan sebuah provinsi. Oleh karena itu, analisis terhadap fasilitas kesehatan tidak hanya penting untuk evaluasi pembangunan, tetapi juga sebagai dasar perencanaan kebijakan kesehatan yang lebih efektif.
Untuk memahami perbedaan distribusi fasilitas kesehatan antar provinsi, diperlukan pendekatan analisis yang mampu mengelompokkan provinsi berdasarkan kemiripan karakteristik fasilitas kesehatan yang dimiliki. Analisis multivariat menjadi salah satu pilihan tepat karena dapat memproses banyak variabel secara simultan dan mengungkap pola hubungan antar provinsi berdasarkan data kuantitatif.
Data yang digunakan dalam penelitian ini merupakan data jumlah sarana kesehatan per provinsi di Indonesia. Data tersebut terdiri dari beberapa variabel utama, yaitu:
Provinsi
Rumah Sakit
Rumah Sakit Bersalin
Poliklinik
Puskesmas
Puskesmas Pembantu
Apotek
library("readxl")
## Warning: package 'readxl' was built under R version 4.3.3
data_anmul_uprak<-read_excel("C:/Users/Chrisman Eben Ezer S/Downloads/DATA_SARANA_KESEHATAN.xlsx")
data_anmul_uprak
## # A tibble: 34 × 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
## 7 BENGKULU 20 5 49 190
## 8 LAMPUNG 53 238 307 350
## 9 KEP. BANGKA BELITU… 21 25 25 63
## 10 KEP. RIAU 23 35 76 88
## # ℹ 24 more rows
## # ℹ 2 more variables: `Puskesmas Pembantu` <dbl>, Apotek <dbl>
Sumber data: BPS, 2025. (https://www.bps.go.id/id/statistics-table/2/MjMzIzI=/number-of-villages-sub-districts-having-health-facilities-by-province.html)
Penggunaan data ini sangat relevan karena memuat informasi kuantitatif yang dapat digunakan untuk memetakan kondisi fasilitas kesehatan antar provinsi secara komprehensif.
Analisis Cluster Hierarki (Hierarchical Clustering) merupakan salah satu metode pengelompokan dalam analisis multivariat yang bertujuan untuk mengelompokkan objek berdasarkan tingkat kemiripan atau kedekatan karakteristiknya. Metode ini menyusun proses pengelompokan secara bertahap dan menghasilkan struktur berbentuk pohon (dendrogram), di mana setiap percabangan menunjukkan tingkat kemiripan antar objek.
Terdapat dua jenis utama pendekatan cluster hierarki:
Agglomerative (Bottom-Up)
Elemen terpisah yang secara bertahap digabungkan berdasarkan
kesamaan hingga menghasilkan satu klaster besar
Divisive (Top-Down)
Satu klaster besar yang secara bertahap dipecah-pecah
berdasarkan kesamaannya hingga menghasilkan elemen-elemen saja atau
klaster-klaster yang lebih kecil.
Dalam analisis ini digunakan pendekatan agglomerative, karena data yang tersedia berbentuk elemen-elemen kecil yang perlu dianalisis kesamaan antar elemen untuk dijadikan klaster.
Standarisasi adalah proses mengubah skala variabel agar memiliki satuan yang sebanding. Pada data multivariat, variabel yang memiliki skala besar dapat mendominasi jarak antar objek sehingga memengaruhi hasil klaster. Oleh karena itu, standarisasi diperlukan agar setiap variabel memiliki pengaruh yang setara.
Metode standarisasi yang paling umum adalah normal baku, yaitu: \[ Z = \frac{X - \mu}{\sigma} \]
dengan:
\(X=\) nilai amatan
\(\mu=\) rata-rata
\(\sigma=\) standar deviasi
Setelah standarisasi dengan normal baku, seluruh amatan akan menyebar secara normal dengan rata-rata 0 dan standar deviasi 1.
Perhitungan jarak antar objek merupakan dasar terbentuknya suatu klaster. Secara sederhana, antar elemen yang memiliki jarak cukup dekat cenderung akan berada di satu klaster yang sama.
Beberapa ukuran jarak yang sering digunakan dalam analisis multivariat adalah sebagai berikut:
Euclidean
Ukuran jarak paling umum dapat dihitung sebagai:
\[ d(x,y) = \sqrt{ \sum_{i=1}^{p} (x_i - y_i)^2 } \] Jarak Euclidean sensitif terhadap skala variabel sehingga sangat disarankan untuk diterapkan pada data hasil standarisasi.
Manhattan
Jarak Manhattan mengukur total nilai mutlak dari selisih antar variabel dengan rumus sebagai berikut:
\[ d(x,y) = \sum_{i=1}^{p} |x_i - y_i| \] Metode ini lebih kuat terhadap outlier dibandingkan dengan Euclidean.
Mahalanobis
Metode ini mengukur jarak dengan mempertimbangkan korelasi antar variabel, sehingga lebih akurat secara statistik. Jarak Mahalanobis dapat dikukur dengan rumus sebagai berikut:
\[ d(x,y) = \sqrt{ (x - y)^T S^{-1} (x - y) } \] dengan \(S^-1\) merupakan matriks kovarian invers.
Metode ini jarang digunakan dalam analisis cluster hierarki karena perhitungannya yang cukup rumit, namun sangat signifikan ketika variabel berkorelasi tinggi.
Setelah jarak dihitung, objek atau elemen digabung berdasarkan kedekatan tertentu. Pemilihan linkage method (metode penggabungan klaster) akan mempengaruhi bentuk klaster.
Single Linkage
Menggunakan jarak terdekat antar dua klaster dengan rumus sebagai berikut:
\[ D(A,B) = \min_{i \in A, j \in B} d(i,j) \]
Complete Linkage
Menggunakan jarak terjauh antar dua klaster dengan rumus sebagai berikut:
\[ D(A,B) = \max_{i \in A, j \in B} d(i,j) \]
Average Linkage
Menggunakan rata-rata jarak antar pasangan objek dengan rumus sebagai berikut:
\[ D(A,B) = \frac{1}{|A||B|} \sum_{i \in A} \sum_{j \in B} d(i,j) \]
Ward’s Method
Konespnya adalah menggabungkan klaster berdasarkan minimasi jumlah kuadrat dalam klaster. Metode Ward memilih penggabungan yang menghasilkan kenaikan varinsi paling kecil. Ketika dua klaster A dan B akan digabung, maka kenaikan error sum of squares dapat dihitung menggunakan:
\[ \Delta ESS(A,B) = \frac{n_A n_B}{n_A + n_B} \; || \bar{x}_A - \bar{x}_B ||^2 \]
dengan:
\(n_A=\) jumlah objek dalam klaster A
\(n_B=\) jumlah objek dalam klaster B
\(\bar{x}_A=\) centroid klaster A
\(\bar{x}_B=\) centroid klaster B
Metode Ward akan memilih klaster yang memberikan nilai \(\Delta ESS(A,B)\) paling kecil untuk digabung.
Dendrogram adalah representasi visual dari proses penggabungan klaster dalam analisis hierarki. Setiap percabangan menunjukkan tingkat kemiripan antar objek/klaster.
Tinggi cabang vertikal menunjukkan tingkat dissimilarity (ketidaksamaan).
Klaster terbentuk dari penggabungan cabang yang paling rendah.
Pemotongan dendrogram pada tingkat tertentu digunakan untuk menentukan jumlah klaster terbaik.
Semakin rendah jarak penggabungan, semakin mirip objek tersebut.
Dendrogram memberikan gambaran struktur pengelompokan sehingga sangat membantu dalam menentukan jumlah klaster optimal.
Penelitian ini bertujuan untuk:
Berikut library yang digunakan untuk dapat menggunakan fungsi bawaan dari RStudio.
| Library | Fungsi |
|---|---|
| readxl() | Membaca file Excel (.xlsx) |
| dplyr() | Memanipulasi data |
| cluster() | Untuk dapat menggunakan fungsi clustering |
| factoextra() | Untuk memvisualisasikan dendogream atau klaster |
Library wajib dijalankan terlebih dahulu sebelum menggunakan fungsi bawaan.
| Syntax | Pembahasan |
|---|---|
| data_anmul_uprak<-read_excel(“C:/Users/Chrisman Eben Ezer S/Downloads/DATA_SARANA_KESEHATAN.xlsx”) | Membaca file Excel dari path lokal dan menyimpan isi sheet ke dalam dataframe bernama “data_anmul_uprak”. |
| data_anmul_uprak<-data_anmul_uprak %>% as.data.frame() | Mengubah hasil read_excel menjadi data frame. |
| rownames(data_anmul_uprak)<-data_anmul_uprak$Provinsi | Mengganti nama baris dengan nama provinsi, agar dendogram tidak menggunakan label angka baris, namun nama setiap provinsinya. |
| data_standarisasi<-data_anmul_uprak %>% mutate(across(2:6, scale)) | Melakukan standarisasi normal baku hanya pada kolom 2 hingga kolom 6. |
| dist_euclidean<-dist(data_standarisasi[, 2:6], method = “euclidean”) | Menghitung jarak antar amatan menggunakan metode Euclidean. |
| hc_single<-hclust(dist_euclidean, method = “single”) | Menggabungkan amatan sesuai dengan jarak terdekat. |
| plot( hc_single, main = “Dendrogram - Single Linkage (Euclidean Distance)”, xlab = “Provinsi”, ylab = “Jarak Penggabungan”, sub = ““, cex = 0.7 ) | Membentuk visualisasi dendogram dari objek “hclust”. |
height_diff<-diff(hc_single$height) gap_terbesar<-which.max(height_diff) k_optimal<-length(hc_single$height)-gap_terbesar+1 |
Mencari gap terbesar dalam pembentukan klaster. |
| h_cut <- hc_single$height[gap_terbesar] | Mencari gap terbesar antar klaster untuk memotong relasi antar cluster. |
| abline(h = h_cut, col = “red”, lty = 2, lwd = 2) | Membuat garis pemotong pada gap terbesar. |
| rect.hclust(hc_single, k = k_optimal, border = 2:(k_optimal+1)) | Membagi setiap klaster dengan kotak. |
| cluster_hasil <- cutree(hc_single, k = k_optimal) data.frame( Provinsi = names(cluster_hasil), Klaster = cluster_hasil ) | Mendefinisikan setiap provinsi berdasarkan klasternya masing-masing. |
| data_terurut<-read_excel(“C:/Users/Chrisman Eben Ezer S/Documents/Data_FASKES_terurut.xlsx”) | Membaca file Excel dengan data provinsi yang telah disesuaikan dengan klaster. |
Penerapan syntax RStudio dalam melakukan analisis klaster hierarki adalah sebagai berikut.
library(readxl)
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
##
## 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(cluster)
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.3.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
data_anmul_uprak<-read_excel("C:/Users/Chrisman Eben Ezer S/Downloads/DATA_SARANA_KESEHATAN.xlsx")
data_anmul_uprak <- data_anmul_uprak %>%as.data.frame()
rownames(data_anmul_uprak) <- data_anmul_uprak$Provinsi
data_standarisasi<-data_anmul_uprak %>% mutate(across(2:6, scale))
dist_euclidean <- dist(data_standarisasi[, 2:6], method = "euclidean")
hc_single <- hclust(dist_euclidean, method = "single")
#Dendogram
plot(
hc_single,
main = "Dendrogram - Single Linkage (Euclidean Distance)",
xlab = "Provinsi",
ylab = "Jarak Penggabungan",
sub = "",
cex = 0.7
)
#Mencari gap terbesar
height_diff<-diff(hc_single$height)
gap_terbesar<-which.max(height_diff)
k_optimal<-length(hc_single$height)-gap_terbesar+1
#Garis Pemotong
h_cut <- hc_single$height[gap_terbesar]
abline(h = h_cut, col = "red", lty = 2, lwd = 2)
#Kotak klaster
rect.hclust(hc_single, k = k_optimal, border = 2:(k_optimal+1))
#Definisi provinsi menurut klaster
cluster_hasil <- cutree(hc_single, k = k_optimal)
data.frame(
Provinsi = names(cluster_hasil),
Klaster = cluster_hasil
)
## Provinsi Klaster
## ACEH ACEH 1
## SUMATERA UTARA SUMATERA UTARA 2
## SUMATERA BARAT SUMATERA BARAT 1
## RIAU RIAU 1
## JAMBI JAMBI 1
## SUMATERA SELATAN SUMATERA SELATAN 1
## BENGKULU BENGKULU 1
## LAMPUNG LAMPUNG 1
## KEP. BANGKA BELITUNG KEP. BANGKA BELITUNG 1
## KEP. RIAU KEP. RIAU 1
## DKI JAKARTA DKI JAKARTA 1
## JAWA BARAT JAWA BARAT 3
## JAWA TENGAH JAWA TENGAH 4
## DI YOGYAKARTA DI YOGYAKARTA 1
## JAWA TIMUR JAWA TIMUR 5
## BANTEN BANTEN 1
## BALI BALI 1
## NUSA TENGGARA BARAT NUSA TENGGARA BARAT 1
## NUSA TENGGARA TIMUR NUSA TENGGARA TIMUR 1
## KALIMANTAN BARAT KALIMANTAN BARAT 1
## KALIMANTAN TENGAH KALIMANTAN TENGAH 1
## KALIMANTAN SELATAN KALIMANTAN SELATAN 1
## KALIMANTAN TIMUR KALIMANTAN TIMUR 1
## KALIMANTAN UTARA KALIMANTAN UTARA 1
## SULAWESI UTARA SULAWESI UTARA 1
## SULAWESI TENGAH SULAWESI TENGAH 1
## SULAWESI SELATAN SULAWESI SELATAN 1
## SULAWESI TENGGARA SULAWESI TENGGARA 1
## GORONTALO GORONTALO 1
## SULAWESI BARAT SULAWESI BARAT 1
## MALUKU MALUKU 1
## MALUKU UTARA MALUKU UTARA 1
## PAPUA BARAT PAPUA BARAT 1
## PAPUA PAPUA 1
#Data Terurut
data_terurut<-read_excel("C:/Users/Chrisman Eben Ezer S/Documents/Data_FASKES_terurut.xlsx")
Berikut visualisasi dendogram analisis klaster hierarki menggunakan metode single linkage dan perhitungan jarak Euclidean.
Berdasarkan bentuk dendogram di atas, dapat dilihat provinsi mana saja yang memiliki kemiripan dengan provinsi lainnya menggunakan perhitungan jarak terdekat. Namun, perlu analisis lanjutan untuk melihat klaster mana yang memiliki jarak atau gap yang cukup jauh sehingga hubungan antar klaster tersebut dapat dipisahkan. Hasil dari analasis tersebut dapat dilihat melalui dendogram berikut.
Dapat diperhatikan bahwa provinsi Sumatera Utara, Jawa Barat, Jawa Tengah, dan Jawa Timur masing-masing membentuk klaster tersendiri. Sementara provinsi lainnya berada di klaster yang sama. Sehingga menurut jarak terdekatnya, setidaknya terdapat 5 klaster.
Ini dapat dilihat jelas, kita data awal disusun kembali menurut klaster sebagai berikut.
data_terurut
## # A tibble: 34 × 8
## Cluster Provinsi `Rumah Sakit` `Rumah Sakit Bersalin` Poliklinik Puskesmas
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 1 ACEH 64 225 258 395
## 2 1 SUMATERA B… 54 139 127 294
## 3 1 RIAU 55 207 329 272
## 4 1 JAMBI 36 151 103 231
## 5 1 SUMATERA S… 65 248 195 403
## 6 1 BENGKULU 20 5 49 190
## 7 1 LAMPUNG 53 238 307 350
## 8 1 KEP. BANGK… 21 25 25 63
## 9 1 KEP. RIAU 23 35 76 88
## 10 1 DKI JAKARTA 119 156 230 257
## # ℹ 24 more rows
## # ℹ 2 more variables: `Puskesmas Pembantu` <dbl>, Apotek <dbl>
Sekilas terlihat jelas bahwa bahwa provinsi Sumatera Utara, Jawa Barat, Jawa Tengah, dan Jawa Timur memiliki fasilitas kesehatan yang jauh lebih banyak dibanding provinsi lainnya. Nampak bahwa terjadi ketimpangan ketersediaan fasilitas kesehatan antar provinsi di Indonesia.
Berdasarkan analisis yang dilakukan, diperoleh beberapa kesimpulan utama berikut.
Secara keseluruhan, analisis klaster hierarki berhasil menggambarkan variasi dan pola kedekatan antar provinsi dalam hal fasilitas kesehatan. Terdapat ketimpangan tingkat ketersediaan fasilitas antara provinsi berpopulasi besar di Pulau Jawa dan Sumatera Utara dibandingkan provinsi-provinsi lainnya. Hasil ini memperlihatkan bahwa ketimpangan ketersediaan fasilitas kesehatan antarprovinsi di Indonesia masih cukup terlihat, terutama antara provinsi yang berpopulasi besar dan provinsi-provinsi lain yang populasinya lebih sedang atau kecil. Analisis klaster ini memberi gambaran bahwa kebijakan pemerataan dan penambahan fasilitas kesehatan masih diperlukan, khususnya bagi provinsi yang tergolong berada dalam klaster fasilitas rendah atau menengah.
Untuk menghasilkan pemetaan ketimpangan sarana kesehatan yang lebih komprehensif, penelitian lanjutan perlu melibatkan variabel tambahan seperti jumlah penduduk, tingkat urbanisasi, PDRB, rasio fasilitas kesehatan per kapita, serta indikator outcome kesehatan. Penambahan variabel-variabel tersebut akan memperkuat pemahaman mengenai faktor-faktor yang menyebabkan perbedaan jumlah fasilitas kesehatan antarprovinsi.
Di sisi lain, pemerintah perlu memberikan prioritas pada provinsi yang berada dalam klaster besar, terutama melalui peningkatan pembangunan puskesmas dan puskesmas pembantu serta perbaikan distribusi tenaga kesehatan. Upaya pemerataan tersebut sangat penting untuk mengurangi ketimpangan akses layanan antarwilayah. Penguatan layanan kesehatan primer juga harus menjadi fokus utama, mengingat provinsi dengan fasilitas terbatas sangat bergantung pada keberhasilan puskesmas dan puskesmas pembantu dalam memberikan layanan dasar dan mencegah lonjakan rujukan ke provinsi berfasilitas tinggi.
Badan Pusat Statistik. (2023). Jumlah desa/kelurahan yang memiliki sarana kesehatan menurut provinsi. https://www.bps.go.id/id/statistics-table/2/MjMzIzI=/number-of-villages-sub-districts-having-health-facilities-by-province.html
Supranto, J. (2004). Statistik multivariat. Jakarta: Rineka Cipta.
Everitt, B. S., Landau, S., Leese, M., & Stahl, D. (2011). Cluster analysis (5th ed.). Wiley.
Kaufman, L., & Rousseeuw, P. J. (1990). Finding groups in data: An introduction to cluster analysis. Wiley.
Wickham, H., & Grolemund, G. (2016). R for data science. O’Reilly Media. Retrieved from https://r4ds.had.co.nz/