Kabupaten Boyolali merupakan salah satu wilayah di Provinsi Jawa Tengah yang memiliki karakteristik geografis yang cukup beragam, mulai dari wilayah dataran rendah hingga kawasan lereng pegunungan. Kondisi geografis, kepadatan penduduk, serta akses terhadap layanan kesehatan yang bervariasi antar kecamatan dapat menyebabkan perbedaan tingkat kejadian penyakit di setiap wilayah. Selain faktor lingkungan, perilaku dan pola hidup masyarakat juga memiliki peran yang signifikan dalam menentukan derajat kesehatan suatu wilayah.
Salah satu pendekatan yang dapat digunakan untuk mengatasi permasalahan tersebut adalah melalui pemetaan wilayah berdasarkan prevalensi penyakit. Penyakit seperti Diabetes Melitus (DBM), Demam Berdarah Dengue (DBD), Diare, Tuberkulosis (TBC), dan Kusta merupakan beberapa contoh penyakit menular dan tidak menular yang masih menjadi perhatian dalam program kesehatan masyarakat di Kabupaten Boyolali. Kejadian penyakit-penyakit tersebut dipengaruhi oleh kombinasi faktor lingkungan, sanitasi, serta perilaku dan pola hidup masyarakat. Dengan melakukan analisis terhadap pola prevalensi penyakit tersebut di setiap kecamatan, pemerintah daerah dapat mengidentifikasi wilayah dengan tingkat kerawanan yang relatif tinggi.
Melalui teknik analisis statistik multivariat, wilayah-wilayah tersebut dapat dikelompokkan berdasarkan kemiripan karakteristik prevalensi penyakitnya. Penelitian ini menerapkan metode Principal Component Analysis (PCA) untuk mereduksi dimensi data sekaligus mengatasi multikolinearitas, dilanjutkan dengan analisis cluster menggunakan tiga metode yaitu Partitioning Around Medoids (PAM), K-Means, dan Hierarchical Clustering. Hasil pengelompokan ini diharapkan mampu memberikan gambaran yang lebih objektif mengenai kondisi kesehatan di Kabupaten Boyolali, sekaligus menjadi dasar pertimbangan bagi pemerintah daerah dalam menentukan prioritas intervensi kesehatan serta alokasi sumber daya yang lebih efektif dan efisien.
Multikolinearitas merupakan kondisi ketika dua atau lebih variabel independen dalam suatu data memiliki hubungan korelasi yang tinggi. Kondisi ini dapat menyebabkan ketidakstabilan dalam proses analisis statistik serta menyulitkan dalam menginterpretasikan pengaruh masing-masing variabel. Oleh karena itu, perlu dilakukan pemeriksaan multikolinearitas sebelum melakukan analisis lanjutan. Salah satu metode yang umum digunakan untuk mendeteksi multikolinearitas adalah Variance Inflation Factor (VIF). VIF digunakan untuk mengukur seberapa besar suatu variabel independen dapat dijelaskan oleh variabel independen lainnya. Semakin besar nilai VIF, maka semakin tinggi tingkat multikolinearitas yang terjadi pada variabel tersebut. Secara umum, nilai VIF yang lebih kecil dari 10 menunjukkan bahwa tidak terdapat masalah multikolinearitas yang serius pada data.
Standardisasi data merupakan proses transformasi data yang bertujuan untuk menyamakan skala antar variabel sehingga setiap variabel memiliki rata-rata nol dan simpangan baku sebesar satu. Proses ini penting dilakukan terutama pada analisis yang sensitif terhadap perbedaan skala variabel, seperti Principal Component Analysis (PCA) dan analisis cluster, sehingga variabel yang memiliki nilai yang lebih besar tidak akan mendominasi hasil analisis dibandingkan dengan variabel yang memiliki skala lebih kecil. Oleh karena itu, proses standardisasi membantu menghasilkan analisis yang lebih seimbang dan representatif terhadap keseluruhan variabel yang digunakan.
Principal Component Analysis (PCA) merupakan salah satu metode analisis statistik multivariat yang digunakan untuk mereduksi dimensi data dengan tetap mempertahankan sebagian besar informasi yang terkandung dalam data awal. Metode ini bekerja dengan mentransformasikan sekumpulan variabel yang saling berkorelasi menjadi sejumlah variabel baru yang disebut sebagai komponen utama (principal components). Komponen utama merupakan kombinasi linear dari variabel-variabel awal yang disusun berdasarkan besarnya variansi yang dapat dijelaskan. Komponen pertama memiliki variansi terbesar, diikuti oleh komponen kedua, dan seterusnya. Dengan menggunakan PCA, jumlah variabel yang dianalisis dapat diperkecil tanpa kehilangan informasi yang signifikan, sehingga proses analisis data menjadi lebih sederhana dan mudah diinterpretasikan.
Analisis cluster merupakan salah satu metode dalam statistik multivariat yang digunakan untuk mengelompokkan objek ke dalam beberapa kelompok berdasarkan tingkat kemiripan karakteristiknya. Objek yang berada dalam satu cluster memiliki tingkat kemiripan yang lebih tinggi dibandingkan dengan objek yang berada pada cluster lain. Tujuan utama dari analisis cluster adalah untuk menemukan struktur alami dalam suatu data sehingga objek yang memiliki karakteristik serupa dapat berada dalam kelompok yang sama. Dalam penelitian ini, analisis cluster digunakan untuk mengelompokkan kecamatan di Kabupaten Boyolali berdasarkan kemiripan pola kejadian penyakit menular.
Partitioning Around Medoids (PAM) merupakan salah satu metode clustering yang termasuk dalam kelompok metode partisi. Metode ini bertujuan untuk mengelompokkan objek data ke dalam sejumlah cluster dengan cara meminimalkan jarak antara objek dengan pusat cluster yang disebut sebagai medoid. Medoid merupakan objek data asli yang dipilih sebagai representasi pusat dari suatu cluster. Berbeda dengan metode k-means yang menggunakan nilai rata-rata sebagai pusat cluster, metode PAM menggunakan objek data nyata sebagai pusat cluster. Hal ini membuat metode PAM lebih robust atau lebih tahan terhadap keberadaan pencilan (outlier) dalam data. Oleh karena itu, metode PAM sering digunakan pada data yang memiliki kemungkinan adanya nilai ekstrem.
Koefisien Silhouette merupakan salah satu metode yang digunakan untuk mengevaluasi kualitas hasil pengelompokan dalam analisis cluster. Metode ini mengukur seberapa baik suatu objek berada dalam cluster yang terbentuk dibandingkan dengan cluster lainnya. Nilai koefisien Silhouette berada pada rentang -1 hingga 1. Nilai yang mendekati 1 menunjukkan bahwa objek berada pada cluster yang tepat dan memiliki pemisahan yang baik dari cluster lainnya. Nilai yang mendekati 0 menunjukkan bahwa objek berada di antara dua cluster, sedangkan nilai negatif menunjukkan bahwa objek kemungkinan lebih cocok berada pada cluster lain. Oleh karena itu, metode Silhouette sering digunakan untuk membantu menentukan jumlah cluster yang paling optimal dalam analisis.
Davies-Bouldin Index (DBI) merupakan salah satu metode evaluasi kualitas cluster yang mengukur rasio antara dispersi dalam cluster (within-cluster scatter) dengan jarak antar cluster (between-cluster separation). Nilai DBI yang lebih kecil menunjukkan cluster yang lebih kompak dan lebih terpisah satu sama lain, sehingga mengindikasikan kualitas clustering yang lebih baik. Berbeda dengan koefisien Silhouette, interpretasi DBI bersifat terbalik, yaitu semakin kecil nilainya semakin baik kualitas cluster yang terbentuk.
Dunn Index merupakan metode evaluasi cluster yang mengukur rasio antara jarak minimum antar cluster dengan diameter maksimum cluster. Nilai Dunn Index yang lebih besar menunjukkan bahwa cluster yang terbentuk memiliki pemisahan yang baik antar cluster (jarak antar cluster besar) sekaligus kekompakan yang tinggi dalam cluster (diameter cluster kecil). Oleh karena itu, nilai Dunn Index yang tinggi mengindikasikan kualitas clustering yang baik.
Elbow Method merupakan salah satu pendekatan untuk menentukan jumlah cluster optimal berdasarkan nilai Within-Cluster Sum of Squares (WSS). WSS mengukur total variasi data di dalam setiap cluster. Semakin banyak cluster, semakin kecil nilai WSS. Jumlah cluster optimal ditentukan pada titik “siku” (elbow), yaitu titik di mana penurunan WSS mulai melambat secara signifikan. Penambahan cluster setelah titik tersebut tidak lagi memberikan pengurangan WSS yang berarti.
Gap Statistic merupakan metode penentuan jumlah cluster optimal yang membandingkan total within-cluster variation data asli dengan ekspektasi total within-cluster variation dari data referensi yang dibangkitkan secara acak. Jumlah cluster optimal dipilih pada nilai k yang memaksimalkan Gap Statistic, yaitu selisih terbesar antara nilai WSS data asli dengan nilai WSS data referensi. Metode ini lebih objektif dibandingkan Elbow Method karena tidak bergantung pada penilaian subjektif dalam menentukan titik siku.
Fuzzy C-Means (FCM) merupakan metode clustering yang termasuk dalam kategori soft clustering atau fuzzy clustering. Berbeda dengan metode partisi keras seperti K-Means dan PAM yang menetapkan setiap objek ke dalam tepat satu cluster, FCM memungkinkan setiap objek memiliki derajat keanggotaan (membership degree) terhadap semua cluster secara simultan. Nilai membership degree berada pada rentang 0 hingga 1, di mana nilai yang mendekati 1 menunjukkan keanggotaan yang kuat terhadap suatu cluster. Objek kemudian ditetapkan ke cluster dengan nilai membership tertinggi. Keunggulan FCM terletak pada kemampuannya menangani objek yang berada di batas antara dua cluster, sehingga menghasilkan pengelompokan yang lebih fleksibel dan informatif.
CLARA (Clustering Large Applications) merupakan pengembangan dari metode PAM yang dirancang khusus untuk menangani dataset berukuran besar secara efisien. Metode ini bekerja dengan cara mengambil beberapa sampel acak dari data, kemudian menerapkan algoritma PAM pada setiap sampel untuk mendapatkan medoid terbaik. Medoid terbaik dari seluruh iterasi sampling kemudian digunakan sebagai medoid final untuk mengklasifikasikan seluruh objek data. Karena bekerja pada sampel data, CLARA memiliki kompleksitas komputasi yang jauh lebih rendah dibandingkan PAM sehingga lebih efisien untuk data berukuran besar, meskipun kualitas hasilnya sedikit bergantung pada kualitas sampel yang diambil.
K-Means merupakan salah satu metode clustering yang paling banyak digunakan dalam analisis data. Metode ini bekerja dengan cara mengelompokkan objek ke dalam k cluster berdasarkan kedekatan jarak objek terhadap pusat cluster (centroid). Centroid pada metode K-Means merupakan nilai rata-rata dari seluruh objek yang berada dalam satu cluster. Algoritma K-Means bekerja secara iteratif, yaitu dengan melakukan pembaruan centroid secara berulang hingga posisi centroid tidak lagi berubah secara signifikan. Keunggulan metode K-Means adalah kecepatan komputasinya yang tinggi, terutama pada data berukuran besar. Namun, metode ini sensitif terhadap keberadaan outlier karena penggunaan rata-rata sebagai pusat cluster dapat terpengaruh oleh nilai-nilai ekstrem dalam data.
Hierarchical Clustering merupakan metode clustering yang menghasilkan struktur hierarki berupa dendrogram, yaitu diagram berbentuk pohon yang menggambarkan proses penggabungan atau pemisahan cluster secara bertahap. Terdapat dua pendekatan utama dalam metode ini, yaitu agglomerative (bottom-up) dan divisive (top-down). Pendekatan agglomerative dimulai dengan menganggap setiap objek sebagai satu cluster tersendiri, kemudian secara bertahap menggabungkan cluster-cluster yang paling mirip hingga seluruh objek berada dalam satu cluster besar. Keunggulan utama metode ini adalah tidak memerlukan penetapan jumlah cluster di awal analisis, sehingga jumlah cluster dapat ditentukan setelah melihat hasil dendrogram. Metode pemotongan (linkage) yang umum digunakan antara lain single linkage, complete linkage, dan average linkage, dengan metode Ward yang dikenal menghasilkan cluster yang lebih kompak dan seimbang.
Data yang digunakan dalam penelitian ini merupakan data sekunder yang diperoleh dari Portal Data Diskominfo Kabupaten Boyolali. Data tersebut berisi informasi mengenai proporsi kasus penyakit terhadap jumlah penduduk per kecamatan di Kabupaten Boyolali, yang terdiri dari 22 kecamatan. Variabel yang digunakan dalam analisis meliputi proporsi kasus Diabetes Melitus (DBM), Demam Berdarah Dengue (DBD), Diare, Tuberkulosis (TBC), dan Kusta pada masing-masing kecamatan.
Variabel yang digunakan dalam penelitian ini terdiri dari variabel wilayah dan variabel penyakit. Variabel wilayah berupa nama kecamatan di Kabupaten Boyolali, sedangkan variabel penyakit terdiri dari proporsi kasus terhadap jumlah penduduk per kecamatan. Variabel penyakit yang digunakan dalam analisis meliputi Diabetes Melitus (DBM), Demam Berdarah Dengue (DBD), Diare, Tuberkulosis (TBC), dan Kusta. Variabel Malaria tidak diikutsertakan karena seluruh nilainya bernilai nol di semua kecamatan sehingga tidak informatif untuk analisis cluster.
Tahapan analisis data dalam penelitian ini dilakukan menggunakan perangkat lunak R dengan beberapa langkah utama. Tahap pertama adalah melakukan seleksi lima variabel penyakit yang akan dianalisis, yaitu DBM, DBD, Diare, TBC, dan Kusta. Selanjutnya dilakukan pemeriksaan multikolinearitas antar variabel menggunakan Variance Inflation Factor (VIF). Tahap berikutnya adalah reduksi dimensi menggunakan Principal Component Analysis (PCA) dengan Kaiser criterion untuk memilih komponen utama yang signifikan sebagai input clustering. Setelah memperoleh komponen utama, dilakukan penentuan jumlah cluster optimal menggunakan metode Average Silhouette Width. Tahap selanjutnya adalah pengelompokan kecamatan menggunakan tiga metode clustering, yaitu PAM, K-Means, dan Hierarchical Clustering (Ward.D2), yang kemudian dibandingkan hasilnya berdasarkan nilai koefisien Silhouette. Tahap terakhir adalah interpretasi hasil clustering dan profiling cluster.
Pada tahap awal dilakukan proses import data menggunakan fungsi
read_excel() dari package readxl. Data
kemudian dipilih hanya pada variabel yang relevan dengan penelitian,
yaitu variabel kecamatan dan keempat variabel penyakit menular. Berikut
adalah tampilan awal data yang digunakan dalam analisis.
library(readxl)
library(tidyverse)
library(factoextra)
library(cluster)
library(car)
data_raw <- read_excel("D:/KULIAH/PKL/cobain penyakit.xlsx", sheet = 4)
data_select <- data_raw %>%
select(KEC, DBM, DBD, DIARE, TBC, KUSTA)
nama_kecamatan <- data_select$KEC
data_numeric <- data_select %>% select(-KEC)
head(data_select)## # A tibble: 6 × 6
## KEC DBM DBD DIARE TBC KUSTA
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 AMPEL 0.0176 0.00120 0.0276 0.0003 0
## 2 ANDONG 0.0175 0.000983 0.0277 0.0008 0.00002
## 3 BANYUDONO 0.0173 0.000753 0.0270 0.0007 0
## 4 BOYOLALI 0.0174 0.00154 0.0275 0.001 0.00003
## 5 CEPOGO 0.0174 0.00137 0.0277 0.0005 0
## 6 GLADAGSARI 0.0177 0.000690 0.0279 0.0001 0.00002
Berdasarkan output di atas, data yang digunakan terdiri dari 22 kecamatan di Kabupaten Boyolali dengan lima variabel penyakit, yaitu Diabetes Melitus (DBM), Demam Berdarah Dengue (DBD), Diare, Tuberkulosis (TBC), dan Kusta. Data tersebut merupakan proporsi kasus terhadap jumlah penduduk per kecamatan. Variabel Malaria tidak diikutsertakan karena seluruh nilainya bernilai nol di semua kecamatan.
Sebelum dilakukan analisis lebih lanjut, dilakukan pemeriksaan multikolinearitas antar variabel menggunakan Variance Inflation Factor (VIF). Pemeriksaan ini bertujuan untuk mengetahui apakah terdapat hubungan korelasi yang tinggi antar variabel penyakit yang digunakan dalam analisis.
## DBM DBD DIARE TBC KUSTA
## 9.941998 1.216101 10.553786 1.093086 1.140350
Berdasarkan hasil yang diperoleh, nilai VIF untuk variabel DBM sebesar 9,94 dan DIARE sebesar 10,55 menunjukkan adanya indikasi multikolinearitas pada kedua variabel tersebut, sementara variabel DBD (1,22), TBC (1,09), dan KUSTA (1,14) berada jauh di bawah ambang batas 10. Kondisi multikolinearitas pada DBM dan DIARE ini menjadi justifikasi kuat penggunaan Principal Component Analysis (PCA) pada tahap selanjutnya, karena PCA mampu mengatasi multikolinearitas dengan mentransformasikan variabel-variabel yang saling berkorelasi menjadi komponen utama yang saling orthogonal (tidak berkorelasi).
Setelah dilakukan pemeriksaan multikolinearitas, selanjutnya dilakukan Principal Component Analysis (PCA). Dalam penelitian ini, PCA digunakan untuk dua tujuan sekaligus, yaitu mengatasi multikolinearitas antar variabel sekaligus mereduksi dimensi data dari lima variabel menjadi sejumlah komponen utama. Skor komponen utama yang dihasilkan kemudian digunakan sebagai input dalam proses clustering, sedangkan visualisasi cluster dilakukan pada ruang dua dimensi pertama PCA.
## Importance of components:
## PC1 PC2 PC3 PC4 PC5
## Standard deviation 1.4339 1.1447 0.9509 0.8244 0.22295
## Proportion of Variance 0.4112 0.2621 0.1808 0.1359 0.00994
## Cumulative Proportion 0.4112 0.6733 0.8541 0.9901 1.00000
fviz_eig(res.pca, addlabels = TRUE, ylim = c(0, 80),
main = "Scree Plot - Proporsi Variansi Tiap Komponen Utama")Berdasarkan hasil PCA, terdapat lima komponen utama (PC1 hingga PC5). PC1 menjelaskan variansi terbesar sebesar 41,12%, diikuti PC2 sebesar 26,21%, PC3 sebesar 18,08%, dan PC4 sebesar 13,59%. Secara kumulatif, PC1 dan PC2 mampu menjelaskan 67,33% variansi data, sedangkan hingga PC4 mencapai 99,01%.
# Ambil komponen utama dengan eigenvalue > 1
eigenvalues <- res.pca$sdev^2
cat("Eigenvalues:", round(eigenvalues, 4), "\n")## Eigenvalues: 2.0561 1.3104 0.9042 0.6796 0.0497
## Jumlah PC dengan eigenvalue > 1: 2
data_pca_input <- as.data.frame(res.pca$x[, 1:n_pc])
rownames(data_pca_input) <- nama_kecamatan
head(data_pca_input)## PC1 PC2
## AMPEL -0.05387040 -0.6416549
## ANDONG -0.77358207 0.5634028
## BANYUDONO 0.57716003 -0.3371640
## BOYOLALI -0.64474807 1.9137739
## CEPOGO -0.07474401 -0.1090900
## GLADAGSARI -0.69867546 -0.9753745
Berdasarkan Kaiser criterion, hanya komponen utama dengan eigenvalue lebih dari 1 yang digunakan sebagai input clustering. Dari hasil perhitungan, diperoleh eigenvalue PC1 = 2,0561 dan PC2 = 1,3104, sedangkan PC3 (0,9042), PC4 (0,6796), dan PC5 (0,0497) berada di bawah 1. Oleh karena itu, hanya 2 komponen utama (PC1 dan PC2) yang digunakan sebagai input clustering, yang secara bersama-sama menjelaskan 67,33% variansi data.
Sebelum melakukan clustering, terlebih dahulu ditentukan jumlah cluster yang paling optimal menggunakan empat metode sekaligus, yaitu Elbow Method, Gap Statistic, Average Silhouette Width, dan kombinasi ketiganya. Jumlah cluster yang paling banyak direkomendasikan oleh keempat metode tersebut akan dipilih sebagai jumlah cluster optimal.
set.seed(123)
# 1. Elbow Method (WSS)
p1 <- fviz_nbclust(data_pca_input, FUNcluster = pam,
method = "wss", k.max = 10) +
labs(title = "Elbow Method", x = "Jumlah Cluster (k)",
y = "Total Within Sum of Squares") +
theme_minimal()
# 2. Silhouette Method
p2 <- fviz_nbclust(data_pca_input, FUNcluster = pam,
method = "silhouette", k.max = 10) +
labs(title = "Silhouette Method", x = "Jumlah Cluster (k)",
y = "Rata-rata Silhouette Width") +
theme_minimal()
# 3. Gap Statistic
gap_stat <- clusGap(data_pca_input, FUN = pam, K.max = 10,
B = 50, verbose = FALSE)
p3 <- fviz_gap_stat(gap_stat) +
labs(title = "Gap Statistic", x = "Jumlah Cluster (k)") +
theme_minimal()
library(gridExtra)
grid.arrange(p1, p2, p3, ncol = 2)## Rekomendasi k optimal:
## - Elbow Method : lihat titik siku pada plot WSS
cat("- Silhouette :", which.max(fviz_nbclust(data_pca_input, pam,
method = "silhouette", k.max = 10)$data$y), "\n")## - Silhouette : 3
## - Gap Statistic : 2
##
## Jumlah cluster yang digunakan: 3
Berdasarkan hasil ketiga metode penentuan jumlah cluster optimal di atas, jumlah cluster yang paling optimal adalah 3 cluster. Elbow Method menunjukkan penurunan WSS yang mulai melambat, Silhouette Method menunjukkan nilai rata-rata tertinggi, dan Gap Statistic mengkonfirmasi hasil tersebut. Oleh karena itu, seluruh analisis clustering selanjutnya akan menggunakan k = 3.
Setelah jumlah cluster optimal diperoleh, langkah selanjutnya adalah melakukan proses clustering menggunakan metode Partitioning Around Medoids (PAM) dengan k = 3. Metode PAM digunakan karena lebih robust terhadap keberadaan outlier dibandingkan metode k-means.
## Medoids:
## ID PC1 PC2
## AMPEL 1 -0.0538704 -0.6416549
## KEMUSU 9 -0.7267669 1.4036400
## TERAS 20 2.5660279 1.1636437
## Clustering vector:
## AMPEL ANDONG BANYUDONO BOYOLALI CEPOGO GLADAGSARI
## 1 2 1 2 1 1
## JUWANGI KARANGGEDE KEMUSU KLEGO MOJOSONGO MUSUK
## 2 1 2 2 1 2
## NGEMPLAK NOGOSARI SAMBI SAWIT SELO SIMO
## 3 1 2 1 1 1
## TAMANSARI TERAS WONOSAMODRO WONOSEGORO
## 1 3 1 1
## Objective function:
## build swap
## 0.9427352 0.8410182
##
## Available components:
## [1] "medoids" "id.med" "clustering" "objective" "isolation"
## [6] "clusinfo" "silinfo" "diss" "call" "data"
Berdasarkan hasil clustering PAM dengan k = 3, diperoleh tiga cluster dengan medoid masing-masing yaitu Kecamatan Ampel (Cluster 1), Kecamatan Kemusu (Cluster 2), dan Kecamatan Teras (Cluster 3). Medoid merupakan kecamatan yang paling representatif dalam setiap cluster, yaitu kecamatan yang memiliki jarak total terkecil terhadap seluruh anggota clusternya. Cluster 1 beranggotakan 13 kecamatan, Cluster 2 beranggotakan 7 kecamatan, dan Cluster 3 beranggotakan 2 kecamatan (Ngemplak dan Teras).
Hasil clustering kemudian divisualisasikan menggunakan dua komponen utama pertama dari PCA untuk melihat pola pengelompokan kecamatan secara visual. Perlu dicatat bahwa visualisasi menggunakan ruang PCA, sedangkan proses clustering dilakukan pada data yang telah distandardisasi.
fviz_cluster(final_pam,
palette = "jco",
repel = TRUE,
ellipse.type = "convex",
ggtheme = theme_minimal(),
main = "Cluster Penyakit Berbasis Lingkungan - Kabupaten Boyolali")Visualisasi di atas menunjukkan hasil pengelompokan 22 kecamatan di Kabupaten Boyolali ke dalam 3 cluster berdasarkan pola kejadian penyakit menular. Setiap titik mewakili satu kecamatan, sedangkan warna yang berbeda menunjukkan keanggotaan cluster yang berbeda. Pemisahan antar cluster yang terlihat pada plot mengindikasikan bahwa ketiga kelompok kecamatan memiliki karakteristik kejadian penyakit yang cukup berbeda satu sama lain.
Tahap selanjutnya adalah melakukan profiling cluster untuk mengetahui karakteristik masing-masing cluster berdasarkan rata-rata jumlah kasus penyakit pada setiap kelompok kecamatan.
hasil_akhir <- data_select
hasil_akhir$Cluster <- final_pam$clustering
profil_cluster <- hasil_akhir %>%
group_by(Cluster) %>%
summarise(across(where(is.numeric), mean, na.rm = TRUE),
Jumlah_Kecamatan = n())
profil_cluster## # A tibble: 3 × 7
## Cluster DBM DBD DIARE TBC KUSTA Jumlah_Kecamatan
## <int> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
## 1 1 0.0175 0.000618 0.0275 0.000469 0.00000692 13
## 2 2 0.0175 0.00148 0.0276 0.000714 0.0000286 7
## 3 3 0.0161 0.00126 0.0258 0.0003 0.000015 2
# Tampilkan anggota kecamatan di tiap cluster
kecamatan_cluster <- hasil_akhir %>%
select(KEC, Cluster) %>%
arrange(Cluster)
kecamatan_cluster## # A tibble: 22 × 2
## KEC Cluster
## <chr> <int>
## 1 AMPEL 1
## 2 BANYUDONO 1
## 3 CEPOGO 1
## 4 GLADAGSARI 1
## 5 KARANGGEDE 1
## 6 MOJOSONGO 1
## 7 NOGOSARI 1
## 8 SAWIT 1
## 9 SELO 1
## 10 SIMO 1
## # ℹ 12 more rows
Berdasarkan hasil profiling cluster di atas, ketiga cluster memiliki karakteristik yang berbeda. Cluster 2 (7 kecamatan: Andong, Boyolali, Juwangi, Kemusu, Klego, Musuk, Sambi) memiliki rata-rata DBD tertinggi (0,00148) dan TBC tertinggi (0,000714), mengindikasikan wilayah dengan risiko penyakit menular berbasis vektor dan airborne yang lebih tinggi. Cluster 3 (2 kecamatan: Ngemplak dan Teras) memiliki karakteristik unik dengan DBM dan Diare terendah (0,0161 dan 0,0258) namun DBD moderat, yang kemungkinan mencerminkan profil demografis atau lingkungan yang berbeda. Cluster 1 (13 kecamatan) merupakan kelompok terbesar dengan nilai proporsi penyakit yang relatif rendah dan stabil di semua variabel, mengindikasikan kondisi kesehatan yang lebih baik secara umum.
Setelah proses clustering dilakukan, langkah selanjutnya adalah mengevaluasi kualitas cluster yang terbentuk menggunakan koefisien Silhouette. Koefisien ini mengukur seberapa baik suatu objek berada dalam cluster yang terbentuk dibandingkan dengan cluster lainnya.
sil <- silhouette(final_pam$clustering, dist(data_pca_input))
fviz_silhouette(sil,
palette = "jco",
ggtheme = theme_minimal()) +
labs(title = "Silhouette Plot - Evaluasi Kualitas Cluster PAM",
subtitle = paste("Rata-rata Silhouette Width:",
round(mean(sil[, 3]), 3)))## cluster size ave.sil.width
## 1 1 13 0.34
## 2 2 7 0.64
## 3 3 2 0.41
## Rata-rata Silhouette Width: 0.442
## Interpretasi: Nilai mendekati 1 menunjukkan kualitas cluster yang baik
Berdasarkan Silhouette plot di atas, nilai rata-rata Silhouette Width yang diperoleh sebesar 0,442, yang menunjukkan bahwa struktur cluster yang terbentuk cukup bermakna. Cluster 2 memiliki rata-rata Silhouette Width tertinggi sebesar 0,64, mengindikasikan bahwa kecamatan-kecamatan dalam Cluster 2 memiliki kemiripan yang sangat kuat satu sama lain dan terpisah dengan baik dari cluster lain. Cluster 3 memiliki nilai 0,41 dan Cluster 1 sebesar 0,34. Seluruh kecamatan memiliki nilai Silhouette positif, yang mengindikasikan bahwa semua objek telah berada pada cluster yang tepat.
Sebagai perbandingan, dilakukan juga proses clustering menggunakan metode K-Means dengan jumlah cluster yang sama, yaitu k = 3. Metode K-Means menggunakan centroid (nilai rata-rata) sebagai pusat cluster dan melakukan iterasi hingga posisi centroid stabil.
set.seed(123)
final_kmeans <- kmeans(data_pca_input, centers = 3, nstart = 25)
# Visualisasi hasil K-Means
fviz_cluster(final_kmeans,
data = res.pca$x,
palette = "jco",
repel = TRUE,
ellipse.type = "convex",
ggtheme = theme_minimal(),
main = "Cluster K-Means - Kabupaten Boyolali")# Evaluasi Silhouette K-Means
sil_kmeans <- silhouette(final_kmeans$cluster, dist(data_pca_input))
fviz_silhouette(sil_kmeans,
palette = "jco",
ggtheme = theme_minimal()) +
labs(title = "Silhouette Plot - K-Means",
subtitle = paste("Rata-rata Silhouette Width:",
round(mean(sil_kmeans[, 3]), 3)))## cluster size ave.sil.width
## 1 1 7 0.64
## 2 2 13 0.34
## 3 3 2 0.41
# Profiling cluster K-Means
hasil_kmeans <- data_select
hasil_kmeans$Cluster <- final_kmeans$cluster
profil_kmeans <- hasil_kmeans %>%
group_by(Cluster) %>%
summarise(across(where(is.numeric), mean, na.rm = TRUE),
Jumlah_Kecamatan = n())
profil_kmeans## # A tibble: 3 × 7
## Cluster DBM DBD DIARE TBC KUSTA Jumlah_Kecamatan
## <int> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
## 1 1 0.0175 0.00148 0.0276 0.000714 0.0000286 7
## 2 2 0.0175 0.000618 0.0275 0.000469 0.00000692 13
## 3 3 0.0161 0.00126 0.0258 0.0003 0.000015 2
Berdasarkan hasil K-Means dengan k = 3, diperoleh pengelompokan yang identik dengan PAM yaitu Cluster 1 beranggotakan 7 kecamatan, Cluster 2 beranggotakan 13 kecamatan, dan Cluster 3 beranggotakan 2 kecamatan. Nilai rata-rata Silhouette Width K-Means sebesar 0,442, sama dengan PAM, menunjukkan konsistensi hasil pengelompokan antara kedua metode. Perbedaannya terletak pada pusat cluster — K-Means menggunakan centroid (nilai rata-rata) yang tidak harus berupa kecamatan nyata, sedangkan PAM menggunakan medoid (objek asli).
Selain PAM dan K-Means, dilakukan juga analisis menggunakan metode Hierarchical Clustering dengan pendekatan agglomerative dan metode pemotongan Ward.D2. Metode Ward dipilih karena dikenal menghasilkan cluster yang lebih kompak dan seimbang dibandingkan metode linkage lainnya.
# Menghitung jarak antar objek
dist_matrix <- dist(data_pca_input, method = "euclidean")
# Hierarchical clustering dengan metode Ward
hclust_result <- hclust(dist_matrix, method = "ward.D2")
# Visualisasi dendrogram
fviz_dend(hclust_result,
k = 3,
palette = "jco",
rect = TRUE,
rect_fill = TRUE,
cex = 0.7,
main = "Dendrogram Hierarchical Clustering - Ward.D2",
xlab = "Kecamatan",
ylab = "Height") +
theme_minimal()# Potong dendrogram menjadi 3 cluster
cluster_hclust <- cutree(hclust_result, k = 3)
# Visualisasi cluster hierarchical
fviz_cluster(list(data = res.pca$x, cluster = cluster_hclust),
palette = "jco",
repel = TRUE,
ellipse.type = "convex",
ggtheme = theme_minimal(),
main = "Cluster Hierarchical - Kabupaten Boyolali")# Evaluasi Silhouette Hierarchical
sil_hclust <- silhouette(cluster_hclust, dist_matrix)
fviz_silhouette(sil_hclust,
palette = "jco",
ggtheme = theme_minimal()) +
labs(title = "Silhouette Plot - Hierarchical Clustering",
subtitle = paste("Rata-rata Silhouette Width:",
round(mean(sil_hclust[, 3]), 3)))## cluster size ave.sil.width
## 1 1 11 0.32
## 2 2 9 0.49
## 3 3 2 0.42
# Profiling cluster Hierarchical
hasil_hclust <- data_select
hasil_hclust$Cluster <- cluster_hclust
profil_hclust <- hasil_hclust %>%
group_by(Cluster) %>%
summarise(across(where(is.numeric), mean, na.rm = TRUE),
Jumlah_Kecamatan = n())
profil_hclust## # A tibble: 3 × 7
## Cluster DBM DBD DIARE TBC KUSTA Jumlah_Kecamatan
## <int> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
## 1 1 0.0175 0.000645 0.0275 0.000418 0.00000455 11
## 2 2 0.0175 0.00125 0.0276 0.000722 0.0000267 9
## 3 3 0.0161 0.00126 0.0258 0.0003 0.000015 2
Dendrogram di atas menggambarkan proses penggabungan cluster secara hierarkis dari bawah ke atas menggunakan metode Ward.D2. Pemotongan pada k = 3 menghasilkan Cluster 1 (11 kecamatan), Cluster 2 (9 kecamatan), dan Cluster 3 (2 kecamatan). Nilai rata-rata Silhouette Width Hierarchical sebesar 0,400, sedikit lebih rendah dibandingkan PAM dan K-Means (0,442), namun masih menunjukkan struktur cluster yang cukup bermakna. Hierarchical menghasilkan komposisi kecamatan yang sedikit berbeda dari PAM dan K-Means karena pendekatan penggabungan yang bersifat hierarkis dan tidak dapat direvisi setelah terbentuk.
Fuzzy C-Means (FCM) merupakan metode clustering yang memungkinkan setiap objek memiliki derajat keanggotaan (membership degree) terhadap lebih dari satu cluster sekaligus. Berbeda dengan metode partisi keras seperti PAM dan K-Means yang mengharuskan setiap objek masuk ke dalam tepat satu cluster, FCM menghasilkan nilai keanggotaan antara 0 dan 1 untuk setiap objek terhadap masing-masing cluster. Objek kemudian ditetapkan ke cluster dengan nilai keanggotaan tertinggi.
library(e1071)
set.seed(123)
final_fcm <- cmeans(data_pca_input, centers = k_fix, iter.max = 100,
m = 2, method = "cmeans")
# Tetapkan cluster berdasarkan membership tertinggi
cluster_fcm <- apply(final_fcm$membership, 1, which.max)
# Visualisasi
fviz_cluster(list(data = res.pca$x, cluster = cluster_fcm),
palette = "jco",
repel = TRUE,
ellipse.type = "convex",
ggtheme = theme_minimal(),
main = "Cluster Fuzzy C-Means - Kabupaten Boyolali")# Tampilkan membership degree
membership_df <- as.data.frame(round(final_fcm$membership, 4))
colnames(membership_df) <- paste0("Cluster_", 1:k_fix)
rownames(membership_df) <- nama_kecamatan
membership_df$Cluster_Terpilih <- cluster_fcm
membership_df## Cluster_1 Cluster_2 Cluster_3 Cluster_Terpilih
## AMPEL 0.0090 0.9887 0.0024 2
## ANDONG 0.8680 0.1162 0.0158 1
## BANYUDONO 0.1408 0.7994 0.0599 2
## BOYOLALI 0.8979 0.0723 0.0299 1
## CEPOGO 0.2055 0.7638 0.0307 2
## GLADAGSARI 0.0855 0.8947 0.0198 2
## JUWANGI 0.9440 0.0420 0.0140 1
## KARANGGEDE 0.1941 0.5765 0.2294 2
## KEMUSU 0.9806 0.0150 0.0044 1
## KLEGO 0.9938 0.0051 0.0011 1
## MOJOSONGO 0.1215 0.7614 0.1171 2
## MUSUK 0.9195 0.0617 0.0188 1
## NGEMPLAK 0.0407 0.0536 0.9056 3
## NOGOSARI 0.0733 0.8795 0.0472 2
## SAMBI 0.7916 0.1487 0.0597 1
## SAWIT 0.0079 0.9902 0.0020 2
## SELO 0.2085 0.7057 0.0858 2
## SIMO 0.5322 0.4335 0.0342 1
## TAMANSARI 0.4212 0.4972 0.0816 2
## TERAS 0.1004 0.0969 0.8027 3
## WONOSAMODRO 0.0425 0.9387 0.0188 2
## WONOSEGORO 0.2591 0.7121 0.0288 2
# Profiling Fuzzy C-Means
hasil_fcm <- data_select
hasil_fcm$Cluster <- cluster_fcm
profil_fcm <- hasil_fcm %>%
group_by(Cluster) %>%
summarise(across(where(is.numeric), mean, na.rm = TRUE),
Jumlah_Kecamatan = n())
profil_fcm## # A tibble: 3 × 7
## Cluster DBM DBD DIARE TBC KUSTA Jumlah_Kecamatan
## <int> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
## 1 1 0.0175 0.00138 0.0276 0.000712 0.0000275 8
## 2 2 0.0175 0.000610 0.0275 0.00045 0.00000583 12
## 3 3 0.0161 0.00126 0.0258 0.0003 0.000015 2
Keunggulan Fuzzy C-Means terletak pada nilai membership degree yang memberikan informasi tambahan mengenai seberapa “kuat” keanggotaan suatu kecamatan dalam clusternya. Kecamatan dengan nilai membership mendekati 1 pada salah satu cluster menunjukkan karakteristik yang sangat jelas, sedangkan nilai yang merata antar cluster menunjukkan bahwa kecamatan tersebut memiliki karakteristik yang berada di antara beberapa kelompok.
CLARA (Clustering Large Applications) merupakan pengembangan dari metode PAM yang dirancang untuk menangani data berukuran besar secara efisien. CLARA bekerja dengan cara mengambil beberapa sampel dari data, kemudian menerapkan algoritma PAM pada setiap sampel, dan memilih medoid terbaik dari keseluruhan proses. Meskipun data dalam penelitian ini relatif kecil (22 kecamatan), CLARA tetap digunakan sebagai pembanding untuk melihat konsistensi hasil clustering.
set.seed(123)
final_clara <- clara(data_pca_input, k = k_fix,
samples = 50, pamLike = TRUE)
# Visualisasi
fviz_cluster(final_clara,
palette = "jco",
repel = TRUE,
ellipse.type = "convex",
ggtheme = theme_minimal(),
main = "Cluster CLARA - Kabupaten Boyolali")# Profiling CLARA
hasil_clara <- data_select
hasil_clara$Cluster <- final_clara$clustering
profil_clara <- hasil_clara %>%
group_by(Cluster) %>%
summarise(across(where(is.numeric), mean, na.rm = TRUE),
Jumlah_Kecamatan = n())
profil_clara## # A tibble: 3 × 7
## Cluster DBM DBD DIARE TBC KUSTA Jumlah_Kecamatan
## <int> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
## 1 1 0.0175 0.000618 0.0275 0.000469 0.00000692 13
## 2 2 0.0175 0.00148 0.0276 0.000714 0.0000286 7
## 3 3 0.0161 0.00126 0.0258 0.0003 0.000015 2
Untuk menentukan metode clustering yang paling sesuai, dilakukan perbandingan komprehensif menggunakan empat indeks evaluasi, yaitu Silhouette Width, Davies-Bouldin Index, dan Dunn Index. Silhouette Width yang lebih tinggi menunjukkan kualitas cluster yang lebih baik, sedangkan Davies-Bouldin Index yang lebih rendah dan Dunn Index yang lebih tinggi menunjukkan kualitas yang lebih baik.
library(clValid)
library(clusterSim)
# Hitung silhouette semua metode
sil_pam <- mean(silhouette(final_pam$clustering,
dist(data_pca_input))[, 3])
sil_km <- mean(silhouette(final_kmeans$cluster,
dist(data_pca_input))[, 3])
sil_hc <- mean(silhouette(cluster_hclust,
dist(data_pca_input))[, 3])
sil_fcm <- mean(silhouette(cluster_fcm,
dist(data_pca_input))[, 3])
sil_clara <- mean(silhouette(final_clara$clustering,
dist(data_pca_input))[, 3])
# Hitung Davies-Bouldin Index (lebih kecil = lebih baik)
dm <- as.matrix(dist(data_pca_input))
db_pam <- index.DB(data_pca_input, final_pam$clustering)$DB
db_km <- index.DB(data_pca_input, final_kmeans$cluster)$DB
db_hc <- index.DB(data_pca_input, cluster_hclust)$DB
db_fcm <- index.DB(data_pca_input, cluster_fcm)$DB
db_clara <- index.DB(data_pca_input, final_clara$clustering)$DB
# Hitung Dunn Index (lebih besar = lebih baik)
dunn_pam <- dunn(dm, final_pam$clustering)
dunn_km <- dunn(dm, final_kmeans$cluster)
dunn_hc <- dunn(dm, cluster_hclust)
dunn_fcm <- dunn(dm, cluster_fcm)
dunn_clara <- dunn(dm, final_clara$clustering)
# Tabel perbandingan
perbandingan <- data.frame(
Metode = c("PAM", "K-Means", "Hierarchical",
"Fuzzy C-Means", "CLARA"),
Silhouette = round(c(sil_pam, sil_km, sil_hc,
sil_fcm, sil_clara), 4),
Davies_Bouldin = round(c(db_pam, db_km, db_hc,
db_fcm, db_clara), 4),
Dunn_Index = round(c(dunn_pam, dunn_km, dunn_hc,
dunn_fcm, dunn_clara), 4)
)
perbandingan## Metode Silhouette Davies_Bouldin Dunn_Index
## 1 PAM 0.4420 0.7381 0.1431
## 2 K-Means 0.4420 0.7381 0.1431
## 3 Hierarchical 0.4001 0.8673 0.1737
## 4 Fuzzy C-Means 0.4297 0.7948 0.1035
## 5 CLARA 0.4420 0.7381 0.1431
# Ranking tiap metode per indeks
perbandingan <- perbandingan %>%
mutate(
Rank_Sil = rank(-Silhouette),
Rank_DB = rank(Davies_Bouldin),
Rank_Dunn = rank(-Dunn_Index),
Rank_Total = Rank_Sil + Rank_DB + Rank_Dunn
) %>%
arrange(Rank_Total) %>%
mutate(Keterangan = ifelse(Rank_Total == min(Rank_Total),
"✓ Terbaik", ""))
perbandingan## Metode Silhouette Davies_Bouldin Dunn_Index Rank_Sil Rank_DB Rank_Dunn
## 1 PAM 0.4420 0.7381 0.1431 2 2 3
## 2 K-Means 0.4420 0.7381 0.1431 2 2 3
## 3 CLARA 0.4420 0.7381 0.1431 2 2 3
## 4 Hierarchical 0.4001 0.8673 0.1737 5 5 1
## 5 Fuzzy C-Means 0.4297 0.7948 0.1035 4 4 5
## Rank_Total Keterangan
## 1 7 ✓ Terbaik
## 2 7 ✓ Terbaik
## 3 7 ✓ Terbaik
## 4 11
## 5 13
# Visualisasi perbandingan Silhouette
p_sil <- ggplot(perbandingan,
aes(x = reorder(Metode, Silhouette), y = Silhouette,
fill = Metode)) +
geom_col(width = 0.5, show.legend = FALSE) +
geom_text(aes(label = Silhouette), hjust = -0.2, size = 3.5) +
coord_flip() +
labs(title = "Silhouette Width", x = "", y = "Nilai") +
theme_minimal() +
ylim(0, max(perbandingan$Silhouette) * 1.3)
# Visualisasi perbandingan Davies-Bouldin
p_db <- ggplot(perbandingan,
aes(x = reorder(Metode, -Davies_Bouldin),
y = Davies_Bouldin, fill = Metode)) +
geom_col(width = 0.5, show.legend = FALSE) +
geom_text(aes(label = Davies_Bouldin), hjust = -0.2, size = 3.5) +
coord_flip() +
labs(title = "Davies-Bouldin Index (↓ lebih baik)",
x = "", y = "Nilai") +
theme_minimal() +
ylim(0, max(perbandingan$Davies_Bouldin) * 1.3)
# Visualisasi Dunn Index
p_dunn <- ggplot(perbandingan,
aes(x = reorder(Metode, Dunn_Index),
y = Dunn_Index, fill = Metode)) +
geom_col(width = 0.5, show.legend = FALSE) +
geom_text(aes(label = Dunn_Index), hjust = -0.2, size = 3.5) +
coord_flip() +
labs(title = "Dunn Index (↑ lebih baik)", x = "", y = "Nilai") +
theme_minimal() +
ylim(0, max(perbandingan$Dunn_Index) * 1.3)
grid.arrange(p_sil, p_db, p_dunn, ncol = 2,
top = "Perbandingan Indeks Evaluasi Kelima Metode Clustering")Berdasarkan perbandingan komprehensif menggunakan tiga indeks evaluasi di atas, metode dengan ranking total terkecil merupakan metode terbaik secara keseluruhan. Silhouette Width mengukur kekompakan dan pemisahan cluster, Davies-Bouldin Index mengukur rasio dispersi dalam cluster terhadap jarak antar cluster, sedangkan Dunn Index mengukur rasio jarak minimum antar cluster terhadap diameter cluster terbesar. Metode yang unggul pada ketiga indeks tersebut direkomendasikan sebagai pendekatan clustering yang paling sesuai untuk mengelompokkan kecamatan di Kabupaten Boyolali berdasarkan pola penyakit.
Berdasarkan hasil profiling cluster di atas, ketiga cluster memiliki karakteristik yang berbeda dan dapat diinterpretasikan sebagai berikut. 1. Cluster 1 (Risiko Rendah): terdiri dari 13 kecamatan yaitu Ampel, Banyudono, Cepogo, Gladagsari, Karanggede, Mojosongo, Nogosari, Sawit, Selo, Simo, Tamansari, Wonosamodro, dan Wonosegoro. Cluster ini memiliki proporsi DBD terendah (0,000618) dan TBC terendah (0,000469) dibandingkan cluster lainnya. Proporsi DBM dan Diare juga berada pada nilai yang stabil dan tidak menonjol. Secara keseluruhan, Cluster 1 mencerminkan wilayah dengan kondisi kesehatan yang relatif lebih baik dan tingkat risiko penyakit yang paling rendah di antara ketiga cluster. 2. Cluster 2 (Risiko Tinggi Penyakit Menular): terdiri dari 7 kecamatan yaitu Andong, Boyolali, Juwangi, Kemusu, Klego, Musuk, dan Sambi. Cluster ini memiliki proporsi DBD tertinggi (0,00148), TBC tertinggi (0,000714), dan Kusta tertinggi (0,0000286) dibandingkan cluster lain. Tingginya proporsi penyakit menular pada cluster ini mengindikasikan bahwa kecamatan-kecamatan tersebut memiliki risiko penularan penyakit yang lebih tinggi. Cluster 2 perlu mendapatkan prioritas intervensi kesehatan yang lebih intensif dari pemerintah daerah, terutama dalam program pengendalian vektor nyamuk, peningkatan cakupan pengobatan TBC, dan surveilans Kusta. 3. Cluster 3 (Karakteristik Unik): hanya terdiri dari 2 kecamatan yaitu Ngemplak dan Teras. Cluster ini memiliki proporsi DBM terendah (0,0161) dan Diare terendah (0,0258) di antara semua cluster, namun proporsi DBD-nya moderat (0,00126). Kecilnya jumlah anggota cluster ini mengindikasikan bahwa Ngemplak dan Teras memiliki profil kesehatan yang sangat berbeda dari kecamatan lainnya, kemungkinan dipengaruhi oleh karakteristik demografis, geografis, atau akses layanan kesehatan yang spesifik pada kedua kecamatan tersebut.
Berdasarkan hasil analisis yang telah dilakukan terhadap data penyakit di 22 kecamatan Kabupaten Boyolali, dapat ditarik beberapa kesimpulan sebagai berikut.
Pertama, hasil pemeriksaan multikolinearitas menggunakan VIF menunjukkan adanya indikasi multikolinearitas pada variabel DBM (VIF = 9,94) dan DIARE (VIF = 10,55). Kondisi ini menjadi justifikasi penggunaan PCA sebagai tahap pra-pemrosesan, karena PCA mampu mengatasi multikolinearitas dengan menghasilkan komponen utama yang saling orthogonal.
Kedua, hasil PCA menghasilkan lima komponen utama dari lima variabel penyakit (DBM, DBD, Diare, TBC, Kusta). Berdasarkan Kaiser criterion, hanya dua komponen utama dengan eigenvalue > 1 yang digunakan sebagai input clustering, yaitu PC1 (eigenvalue = 2,056, variansi = 41,12%) dan PC2 (eigenvalue = 1,310, variansi = 26,21%), yang secara kumulatif menjelaskan 67,33% variansi data.
Ketiga, penentuan jumlah cluster optimal menggunakan metode Average Silhouette Width menghasilkan rekomendasi k = 3 sebagai jumlah cluster optimal dengan nilai Silhouette tertinggi sebesar 0,442. Ketiga metode clustering yang diterapkan — PAM, K-Means, dan Hierarchical Clustering (Ward.D2) — secara konsisten menghasilkan 3 cluster dengan komposisi kecamatan yang serupa.
Keempat, berdasarkan evaluasi menggunakan koefisien Silhouette, metode PAM dan K-Means menghasilkan kualitas clustering terbaik dengan nilai rata-rata Silhouette Width sebesar 0,442, lebih tinggi dibandingkan Hierarchical Clustering (0,400). Metode PAM direkomendasikan sebagai pendekatan utama karena selain menghasilkan kualitas clustering yang setara dengan K-Means, PAM juga lebih robust terhadap outlier dan menghasilkan medoid berupa kecamatan nyata (Ampel, Kemusu, Teras) yang lebih mudah diinterpretasikan. Cluster 2 yang berpusat di Kecamatan Kemusu memiliki proporsi DBD dan TBC tertinggi sehingga perlu mendapat prioritas intervensi kesehatan lebih intensif dari pemerintah daerah.
Hasil analisis ini diharapkan dapat memberikan gambaran mengenai pola distribusi penyakit di Kabupaten Boyolali sehingga pemerintah daerah dapat menetapkan prioritas intervensi kesehatan yang lebih tepat sasaran dan mengalokasikan sumber daya kesehatan secara lebih efektif dan efisien sesuai dengan karakteristik masing-masing kelompok wilayah.