library(readxl)
library(dplyr)
library(ggplot2)
library(openxlsx)
library(tidyverse)
library(tidyr)
library(scales)
Data yang digunakan dalam penelitian ini merupakan data sekunder yang diperoleh dari publikasi resmi Dinas Kesehatan Kabupaten Bojonegoro pada tahun 2024 [1]. Data tersebut disajikan pada tingkat kecamatan, dengan total sebanyak 28 kecamatan.
Variabel yang digunakan dalam penelitian ini meliputi:
Jumlah penduduk
Jumlah kasus diare
Jumlah kasus diare yang mendapatkan pelayanan kesehatan
Variabel pelayanan kesehatan selanjutnya diklasifikasikan berdasarkan kelompok umur, yaitu semua umur dan Balita (anak usia di bawah lima tahun)[2]. Data ini digunakan untuk menggambarkan kondisi epidemiologi diare di Kabupaten Bojonegoro.
# 1. Import Data
datadiare<- read_excel("C:/Users/asus/Downloads/data_rapih(2).xlsx", sheet = 1)
datadiare
## # A tibble: 28 × 8
## Tahun Kecamatan JumlahPenduduk Diseases JUMLAH TARGET PENEMUAN (SEMUA UMUR…¹
## <dbl> <chr> <dbl> <dbl> <dbl>
## 1 2024 Balen 66973 301 509
## 2 2024 Baureno 82214 706 625
## 3 2024 Bojonegoro 86000 668 653
## 4 2024 Bubulan 15265 171 116
## 5 2024 Dander 84966 209 646
## 6 2024 Gayam 33425 92 254
## 7 2024 Gondang 25834 407 196
## 8 2024 Kalitidu 50748 467 385
## 9 2024 Kanor 60849 423 462
## 10 2024 Kapas 56149 562 427
## # ℹ 18 more rows
## # ℹ abbreviated name: ¹`JUMLAH TARGET PENEMUAN (SEMUA UMUR)`
## # ℹ 3 more variables: `JUMLAH TARGET PENEMUAN (BALITA)` <dbl>,
## # `DILAYANI SEMUA UMUR (JUMLAH)` <dbl>, `DILAYANI BALITA (JUMLAH)` <dbl>
# 2. Cek Struktur Data
str(datadiare)
## tibble [28 × 8] (S3: tbl_df/tbl/data.frame)
## $ Tahun : num [1:28] 2024 2024 2024 2024 2024 ...
## $ Kecamatan : chr [1:28] "Balen" "Baureno" "Bojonegoro" "Bubulan" ...
## $ JumlahPenduduk : num [1:28] 66973 82214 86000 15265 84966 ...
## $ Diseases : num [1:28] 301 706 668 171 209 92 407 467 423 562 ...
## $ JUMLAH TARGET PENEMUAN (SEMUA UMUR): num [1:28] 509 625 653 116 646 254 196 385 462 427 ...
## $ JUMLAH TARGET PENEMUAN (BALITA) : num [1:28] 78 96 100 18 100 39 30 59 71 65 ...
## $ DILAYANI SEMUA UMUR (JUMLAH) : num [1:28] 1794 2013 1702 883 2130 ...
## $ DILAYANI BALITA (JUMLAH) : num [1:28] 641 687 507 165 589 255 143 305 460 537 ...
names(datadiare)
## [1] "Tahun" "Kecamatan"
## [3] "JumlahPenduduk" "Diseases"
## [5] "JUMLAH TARGET PENEMUAN (SEMUA UMUR)" "JUMLAH TARGET PENEMUAN (BALITA)"
## [7] "DILAYANI SEMUA UMUR (JUMLAH)" "DILAYANI BALITA (JUMLAH)"
# 3. Rename Kolom Pada Data
datadiare <- datadiare %>%
rename(
Kecamatan = Kecamatan,
Penduduk = JumlahPenduduk,
Diseases = Diseases,
Target_Semua = `JUMLAH TARGET PENEMUAN (SEMUA UMUR)`,
Target_Balita = `JUMLAH TARGET PENEMUAN (BALITA)`,
Dilayani_Semua = `DILAYANI SEMUA UMUR (JUMLAH)`,
Dilayani_Balita = `DILAYANI BALITA (JUMLAH)`
)
# 4. Statistik Deskriptif
summary(datadiare$Diseases)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 71.0 351.2 466.0 466.7 603.5 877.0
sd(datadiare$Diseases)
## [1] 213.5941
Interpretasi :
Berdasarkan hasil analisis deskriptif, jumlah kasus diare memiliki nilai rata-rata sebesar 466,7 kasus per kecamatan, dengan nilai minimum 71 kasus dan maksimum 877 kasus. Nilai median (466) yang hampir sama dengan mean menunjukkan bahwa distribusi data relatif simetris, meskipun masih terdapat variasi yang cukup besar antar wilayah.Hal ini diperkuat oleh nilai standar deviasi sebesar 213,59 yang menunjukkan bahwa penyebaran kasus diare antar kecamatan cukup tinggi, sehingga terdapat perbedaan beban penyakit yang signifikan di setiap wilayah.
# 5. Perhitungan Kasus Penyakit
## Menghitung rate dan proporsi
datadiare <- datadiare %>%
mutate(
# Angka kesakitan per 1000 penduduk
rate = (Diseases / Penduduk) * 1000,
# Proporsi balita
prop_balita = (Dilayani_Balita / Dilayani_Semua) * 100
)
## Menghitung period prevalence
datadiare <- datadiare %>%
mutate(
# Period Prevalence
period_prevalence = (Diseases / Penduduk)
)
hasil_epi <- datadiare %>%
select(
Kecamatan,
Diseases,
Penduduk,
rate,
prop_balita,
period_prevalence
)
print(hasil_epi, n = 28)
## # A tibble: 28 × 6
## Kecamatan Diseases Penduduk rate prop_balita period_prevalence
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Balen 301 66973 4.49 35.7 0.00449
## 2 Baureno 706 82214 8.59 34.1 0.00859
## 3 Bojonegoro 668 86000 7.77 29.8 0.00777
## 4 Bubulan 171 15265 11.2 18.7 0.0112
## 5 Dander 209 84966 2.46 27.7 0.00246
## 6 Gayam 92 33425 2.75 27.9 0.00275
## 7 Gondang 407 25834 15.8 19.8 0.0158
## 8 Kalitidu 467 50748 9.20 19.2 0.00920
## 9 Kanor 423 60849 6.95 25.3 0.00695
## 10 Kapas 562 56149 10.0 27.1 0.0100
## 11 Kasiman 515 31495 16.4 16.6 0.0164
## 12 Kedewan 667 13366 49.9 31.9 0.0499
## 13 Kedungadem 877 82927 10.6 32.8 0.0106
## 14 Kepohbaru 465 66183 7.03 28.6 0.00703
## 15 Malo 873 31640 27.6 15.3 0.0276
## 16 Margomulyo 662 22755 29.1 28.0 0.0291
## 17 Ngambon 531 11613 45.7 11.9 0.0457
## 18 Ngasem 751 61081 12.3 36.2 0.0123
## 19 Ngraho 368 47023 7.83 32.7 0.00783
## 20 Padangan 584 44245 13.2 27.3 0.0132
## 21 Purwosari 508 30170 16.8 29.4 0.0168
## 22 Sekar 432 28046 15.4 18.8 0.0154
## 23 Sugihwaras 301 46474 6.48 35.4 0.00648
## 24 Sukosewu 408 43344 9.41 38.1 0.00941
## 25 Sumberejo 389 71631 5.43 40.1 0.00543
## 26 Tambakrejo 474 55015 8.62 29.5 0.00862
## 27 Temayang 71 36848 1.93 29.0 0.00193
## 28 Trucuk 186 39020 4.77 38.3 0.00477
Interpretasi :
Berdasarkan hasil_epi bisa dilihat bahwa beberapa kecamatan seperti Kedewan, Ngambon, dan Margomulyo memiliki nilai rate dan period prevalence yang tinggi, meskipun jumlah penduduknya relatif lebih kecil. Sebaliknya, kecamatan dengan jumlah penduduk besar tidak selalu memiliki tingkat kejadian tertinggi. Hal ini menunjukkan bahwa risiko diare tidak hanya dipengaruhi oleh ukuran populasi. Selain itu, terdapat kecamatan seperti Temayang yang memiliki nilai prevalensi sangat rendah, mengindikasikan adanya perbedaan kondisi lingkungan atau akses layanan kesehatan yang signifikan antar wilayah. Variabel proporsi balita (prop_balita) juga menunjukkan variasi, yang dapat menjadi indikator penting mengingat kelompok balita, dikarenakan balita adalah populasi yang lebih rentan terhadap penyakit diare. Secara keseluruhan, pola ini mengindikasikan bahwa kejadian diare dipengaruhi oleh faktor yang kompleks (multifaktorial), seperti sanitasi, akses air bersih, dan perilaku hidup bersih dan sehat, sehingga diperlukan pendekatan berbasis wilayah (spatial-based approach) dalam analisis dan intervensi.
## DIAGRAM BATANG
ggplot(datadiare, aes(x = reorder(Kecamatan, Diseases),
y = Diseases,
fill = Diseases)) +
geom_col() +
geom_text(aes(label = Diseases),
hjust = -0.1, size = 3) +
coord_flip() +
# warna dari rendah ke tinggi
scale_fill_gradient(
low = "#85C1E9", # biru muda (rendah)
high = "#1B4F72" # biru tua (tinggi)
) +
labs(title = "Number of Diarrhea Cases per Subdistrict",
x = "Subdistrict",
y = "Number of Cases") +
theme_minimal() +
theme(
legend.position = "none",
plot.title = element_text(face = "bold", size = 14),
axis.text.y = element_text(size = 8)
) +
# biar angka ga kepotong
expand_limits(y = max(datadiare$Diseases) * 1.1)
Interpretasi :
Visualisasi diatas menunjukkan bahwa secara umum terlihat adanya ketimpangann antar kecamatan. Kecamatan Kedungadem mencatat jumlah kasus tertinggi yaitu 877 kasus, diikuti oleh Malo (873 kasus) dan Ngasem (751 kasus). Tingginya jumlah kasus di wilayah-wilayah ini menunjukkan bahwa kecamatan tersebut memiliki beban epidemiologis yang lebih besar, sehingga berpotensi membutuhkan perhatian dan intervensi kesehatan yang lebih intensif. Sebaliknya, jumlah kasus terendah tercatat di kecamatan Bubulan (171 kasus). Rendahnya jumlah kasus di wilayah ini dapat disebabkan oleh beberapa faktor, seperti kondisi lingkungan yang lebih baik, jumlah penduduk yang lebih sedikit, atau kemungkinan perbedaan dalam pelaporan kasus. Perbedaan jumlah kasus ini menunjukkan bahwa distribusi penyakit diare tidak bersifat homogen, melainkan terkonsentrasi pada wilayah-wilayah tertentu.
## PIE CHART
pie_data <- datadiare %>%
summarise(
"All Ages" = sum(Dilayani_Semua),
"Children Under Five" = sum(Dilayani_Balita)
) %>%
pivot_longer(cols = everything(),
names_to = "Category",
values_to = "Jumlah") %>%
mutate(
prop = Jumlah / sum(Jumlah),
label = paste0(Category, "\n", percent(prop, accuracy = 0.1))
)
# pie chart
ggplot(pie_data, aes(x = "", y = Jumlah, fill = Category)) +
geom_col(width = 1, color = "black", size = 0.7) +
coord_polar(theta = "y") +
# label di tengah
geom_text(aes(label = label),
position = position_stack(vjust = 0.7),
size = 4, color = "black") +
# warna jurnal (clean & profesional)
scale_fill_manual(values = c(
"All Ages" = "yellowgreen",
"Children Under Five" = "lightpink"
)) +
labs(
title = "Proportion of Diarrhea Health Services by Age Group",
fill = "Age Group"
) +
theme_void() +
theme(
plot.title = element_text(face = "bold", size = 14, hjust = 0.7),
legend.position = "right",
legend.title = element_text(size = 10),
legend.text = element_text(size = 9)
)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Interpretasi :
Gambar dari hasil visualisasi diatas menunjukkan bahwa pelayanan kesehatan pada kelompok semua umur mendominasi dengan proporsi sebesar 77,4%, sedangkan pelayanan pada kelompok balita sebesar 22,6%. Hal ini menunjukkan bahwa program kesehatan lebih banyak menjangkau populasi umum. Namun demikian, kelompok balita tetap merupakan kelompok yang rentan terhadap diare akibat sistem kekebalan tubuh yang belum berkembang secara optimal. Oleh karena itu, meskipun proporsi pelayanannya lebih kecil, intervensi pada kelompok balita tetap memiliki peran yang sangat penting dalam menurunkan angka kesakitan serta mencegah komplikasi yang lebih serius.
Hasil penelitian menunjukkan kejadian diare di Kabupaten Bojonegoro tahun 2024 masih tergolong tinggi dengan total 13.068 kasus dari populasi 1,36 juta jiwa. Distribusi kasus menunjukkan variasi yang signifikan antar kecamatan, yang mencerminkan perbedaan tingkat risiko dan beban penyakit. Analisis prevalensi menunjukkan bahwa wilayah seperti Kedewan dan Ngambon memiliki tingkat risiko tertinggi, sedangkan Temayang terendah. Hal ini menegaskan bahwa jumlah kasus absolut saja tidak cukup, sehingga prevalensi menjadi ukuran yang lebih representatif dalam menggambarkan risiko penyakit. Secara keseluruhan, diare masih menjadi masalah kesehatan masyarakat yang signifikan, sehingga diperlukan pendekatan berbasis data untuk mendukung intervensi yang lebih tepat sasaran.