# Membaca dataset
jenis_penyakit <- read_excel("C:/Users/Windows/Downloads/jenis penyakit.xlsx")
View(jenis_penyakit)
sarana_kesehatan <- read_excel("C:/Users/Windows/Downloads/sarana kesehatan.xlsx")
View(sarana_kesehatan)
# Menggabungkan data berdasarkan kolom Provinsi
df_merge <- inner_join(jenis_penyakit, sarana_kesehatan, by = "Provinsi")
# Menampilkan ringkasan statistik data
summary(df_merge)## Provinsi Jumlah Kasus Penyakit - Angka Penemuan TBC
## Length:41 Min. : 41.00
## Class :character 1st Qu.: 63.00
## Mode :character Median : 72.00
## Mean : 71.79
## 3rd Qu.: 80.00
## Max. :112.00
## NA's :2
## Jumlah Kasus Penyakit - Angka Keberhasilan Pengobatan TBC
## Min. :56.00
## 1st Qu.:78.00
## Median :83.00
## Mean :81.46
## 3rd Qu.:86.00
## Max. :92.00
## NA's :2
## Jumlah Kasus Penyakit - HIV/AIDS Kasus Baru
## Min. : 130
## 1st Qu.: 540
## Median : 867
## Mean : 3246
## 3rd Qu.: 1989
## Max. :63297
## NA's :2
## Jumlah Kasus Penyakit - Penemuan Kasus Baru Kusta per 100.000 Penduduk
## Min. : 0.76
## 1st Qu.: 3.00
## Median : 5.29
## Mean :12.53
## 3rd Qu.: 9.88
## Max. :86.89
## NA's :8
## Jumlah Kasus Penyakit - Angka Kesakitan Malaria per 1.000 Penduduk
## Min. : 0.01
## 1st Qu.: 0.02
## Median : 0.21
## Mean : 16.95
## 3rd Qu.: 0.75
## Max. :269.44
## NA's :4
## Jumlah Kasus Penyakit - Angka Kesakitan DBD per 100.000 Penduduk
## Min. : 2.14
## 1st Qu.: 35.50
## Median : 41.63
## Mean : 53.14
## 3rd Qu.: 57.95
## Max. :232.87
## NA's :4
## Desa/Kelurahan Yang Memiliki Sarana Kesehatan - Rumah Sakit
## Min. : 9.0
## 1st Qu.: 23.5
## Median : 44.0
## Mean : 143.7
## 3rd Qu.: 71.5
## Max. :2802.0
## NA's :2
## Desa/Kelurahan Yang Memiliki Sarana Kesehatan - Puskesmas
## Min. : 42.0
## 1st Qu.: 112.0
## Median : 209.0
## Mean : 525.8
## 3rd Qu.: 314.0
## Max. :10254.0
## NA's :2
## Desa/Kelurahan Yang Memiliki Sarana Kesehatan - Puskesmas Pembantu
## Min. : 135
## 1st Qu.: 229
## Median : 460
## Mean : 1273
## 3rd Qu.: 908
## Max. :24815
## NA's :2
## Desa/Kelurahan Yang Memiliki Sarana Kesehatan - Apotek
## Min. : 11.0
## 1st Qu.: 119.0
## Median : 283.0
## Mean : 974.3
## 3rd Qu.: 496.0
## Max. :18998.0
## NA's :2
## Desa/Kelurahan Yang Memiliki Sarana Kesehatan - Klinik Utama (Unit)
## Min. : 1.00
## 1st Qu.: 6.50
## Median : 22.00
## Mean : 76.97
## 3rd Qu.: 43.50
## Max. :1501.00
## NA's :2
## Desa/Kelurahan Yang Memiliki Sarana Kesehatan - Balai Kesehatan
## Min. : 1.00
## 1st Qu.: 1.00
## Median : 2.50
## Mean :10.33
## 3rd Qu.: 5.25
## Max. :93.00
## NA's :23
## Desa/Kelurahan Yang Memiliki Sarana Kesehatan - Klinik Pratama
## Min. : 9.0
## 1st Qu.: 34.0
## Median : 109.0
## Mean : 459.4
## 3rd Qu.: 236.0
## Max. :8958.0
## NA's :2
Rata-rata Angka Keberhasilan Pengobatan TBC adalah NA persen.
Rata-rata Jumlah Rumah Sakit per Provinsi adalah NA unit.
Metode yang digunakan adalah K-Means Clustering. Pengelompokan ini dilakukan berdasarkan minimalisasi jarak Euclidean antar objek ke pusat kelompok (centroid): \[ d(x,y) = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2} \] Sebagai ilustrasi, jarak Euclidean antara Provinsi Aceh dan Sumatera Utara menggunakan data yang telah distandarisasi adalah: \[ d(1, 2) = 1.8629 \] # Analisis kelompok ## Persiapan data
# Mengambil kolom numerik saja
data_num <- df_merge[, -1]
# Mengatasi nilai missing (NA) dengan angka 0
data_num[is.na(data_num)] <- 0
# Standarisasi data menggunakan scale()
data_std <- scale(data_num)Menggunakan metode Elbow untuk menentukan jumlah cluster yang paling optimal.
set.seed(123)
wss <- sapply(1:10, function(k){kmeans(data_std, k, nstart=20)$tot.withinss})
# Plotting Elbow Method
plot(1:10, wss, type="b", pch=19, frame=FALSE,
xlab="Jumlah Kelompok (k)",
ylab="Total Jarak Dalam Kelompok (WSS)",
main="Metode Elbow untuk K Optimal")Berdasarkan hasil plot metode elbow, dipilih jumlah kelompok sebanyak k = 3.
set.seed(123)
hasil_km <- kmeans(data_std, centers = 3, nstart = 25)
# Menampilkan hasil output model k-means
print(hasil_km)## K-means clustering with 3 clusters of sizes 2, 1, 38
##
## Cluster means:
## Jumlah Kasus Penyakit - Angka Penemuan TBC
## 1 -3.3297178
## 2 0.5220522
## 3 0.1615101
## Jumlah Kasus Penyakit - Angka Keberhasilan Pengobatan TBC
## 1 -4.0701054
## 2 0.3945837
## 3 0.2038323
## Jumlah Kasus Penyakit - HIV/AIDS Kasus Baru
## 1 -0.3118996
## 2 6.0820419
## 3 -0.1436380
## Jumlah Kasus Penyakit - Penemuan Kasus Baru Kusta per 100.000 Penduduk
## 1 -0.55167104
## 2 -0.15665952
## 3 0.03315794
## Jumlah Kasus Penyakit - Angka Kesakitan Malaria per 1.000 Penduduk
## 1 -0.29948710
## 2 -0.25111308
## 3 0.02237072
## Jumlah Kasus Penyakit - Angka Kesakitan DBD per 100.000 Penduduk
## 1 -1.10809810
## 2 0.20948207
## 3 0.05280827
## Desa/Kelurahan Yang Memiliki Sarana Kesehatan - Rumah Sakit
## 1 -0.3134321
## 2 6.1119267
## 3 -0.1443437
## Desa/Kelurahan Yang Memiliki Sarana Kesehatan - Puskesmas
## 1 -0.3164454
## 2 6.1706861
## 3 -0.1457315
## Desa/Kelurahan Yang Memiliki Sarana Kesehatan - Puskesmas Pembantu
## 1 -0.3172209
## 2 6.1858070
## 3 -0.1460886
## Desa/Kelurahan Yang Memiliki Sarana Kesehatan - Apotek
## 1 -0.3106598
## 2 6.0578661
## 3 -0.1430670
## Desa/Kelurahan Yang Memiliki Sarana Kesehatan - Klinik Utama (Unit)
## 1 -0.3098382
## 2 6.0418451
## 3 -0.1426886
## Desa/Kelurahan Yang Memiliki Sarana Kesehatan - Balai Kesehatan
## 1 -0.2909892
## 2 5.6742900
## 3 -0.1340082
## Desa/Kelurahan Yang Memiliki Sarana Kesehatan - Klinik Pratama
## 1 -0.3089033
## 2 6.0236142
## 3 -0.1422581
##
## Clustering vector:
## [1] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [39] 2 1 1
##
## Within cluster sum of squares by cluster:
## [1] 0.000 0.000 158.048
## (between_SS / total_SS = 69.6 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
Visualisasi dilakukan dengan mereduksi dimensi data menggunakan Principal Component Analysis (PCA).
pca_res <- prcomp(data_std)
plot(pca_res$x[,1:2], col = hasil_km$cluster, pch = 19,
main = "Peta Klasterisasi Provinsi di Indonesia",
xlab = "Komponen Utama 1", ylab = "Komponen Utama 2")
text(pca_res$x[,1:2], labels = df_merge$Provinsi, pos = 3, cex = 0.6)
abline(h=0, v=0, lty=2)Berdasarkan analisis kelompok, provinsi-provinsi telah terbagi menjadi 3 kelompok.
Sebagai contoh, koordinat pusat kelompok (centroid) untuk Cluster 1 pada variabel pertama adalah -3.3297. Nilai ini menunjukkan posisi rata-rata anggota kelompok tersebut dalam ruang multidimensi.