Fenomena Kasus Tuberkulosis di Pulau Jawa-Barat periode 2021 - 2024
Dosen Pembimbing:
Dr. I Gede Nyoman Mindra Jaya, M.Si.
Disusun Oleh:
Rasendriya Nandana Kurniawan 140610230009
PROGRAM STUDI S-1 STATISTIKA
DEPARTEMEN STATISTIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS PADJADJARAN
TAHUN AJARAN 2025/2026
Tuberkulosis (TBC) menjadi salah satu tantangan kesehatan masyarakat yang terjadi di seluruh dunia. Meskipun telah terjadi kemajuan dalam diagnostik dan pengobatan, World Health Organization (WHO) terus melaporkan TBC sebagai salah satu penyebab utama kematian akibat penyakit menular di seluruh dunia, dengan jutaan kasus baru dilaporkan setiap tahun (WHO, 2024). Beban penyakit ini tidak terdistribusi secara merata, dengan sebagian besar kasus terkonsentrasi di negara-negara berkembang, salah satunya adalah Indonesia.
Secara nasional, Indonesia menghadapi beban TBC yang tergolong berat. Beberapa tahun terakhir, Indonesia secara konsisten berada di peringkat kedua atau ketiga negara dengan insidensi TBC tertinggi di dunia (Kementerian Kesehatan RI, 2024). Situasi ini menempatkan pengendalian TBC sebagai prioritas utama dalam agenda kesehatan nasional, yang tertuang dalam berbagai strategi dan rencana aksi nasional yang bertujuan untuk mencapai eliminasi TBC pada tahun 2030.
Dalam konteks nasional tersebut, Provinsi Jawa Barat muncul sebagai wilayah dengan perhatian khusus. Jawa Barat merupakan provinsi dengan jumlah penduduk terbesar di Indonesia, menampung lebih dari 49 juta jiwa (BPS Provinsi Jawa Barat, 2023). Konsekuensi demografis ini secara langsung berkorelasi dengan beban kasus TBC. Laporan kesehatan provinsi secara konsisten menunjukkan Jawa Barat sebagai kontributor utama jumlahkasus TBC di Indonesia (Dinas Kesehatan Provinsi Jawa Barat, 2023). Tingginya kepadatan penduduk, laju urbanisasi yang pesat, serta kompleksitas masalah sosial-ekonomi di kantong-kantong perkotaan dan pedesaan menciptakan lingkungan yang menantang untuk pengendalian TBC.
Berdasarkan latar belakang tersebut, beberapa masalah utama yang diidentifikasi adalah:
Adapun penelitian ini bertujuan untuk:
Untuk memahami dinamika penularan penyakit menular seperti tuberkulosis (TBC), kerangka kerja konseptual yang paling fundamental adalah model Segitiga Epidemiologi atau Epidemiologic Triad (Gordis, 2018). Model ini bersifat dinamis yang kejadian dan distribusi penyakit dalam populasi bukanlah disebabkan oleh satu faktor tunggal, melainkan hasil dari interaksi kompleks dan berkelanjutan antara tiga komponen utama: Agent, Host, dan Environment. Kejadian penyakit (TBC) terjadi ketika keseimbangan antara ketiga faktor ini terganggu. Misalnya, kerentanan pejamu meningkat (misal, akibat gizi buruk) atau lingkungan berubah menjadi lebih mendukung transmisi (misal, urbanisasi padat). Dalam konteks TBC secara keseluruhan di Jawa Barat, ketiga elemen ini berinteraksi secara konstan.
Agen merujuk pada mikroorganisme penyebab penyakit. Dalam kasus TBC, agennya adalah bakteri Mycobacterium tuberculosis. Dalam konteks TBC keseluruhan, karakteristik agen yang relevan meliputi:
Host merujuk pada manusia yang rentan (suspektibel) terhadap infeksi. Faktor-faktor intrinsik pada pejamu sangat menentukan apakah paparan terhadap agen akan menyebabkan infeksi (TBC laten) dan apakah infeksi tersebut akan berkembang menjadi penyakit aktif (TBC aktif). Faktor pejamu yang krusial untuk TBC meliputi:
Environment merujuk pada kondisi ekstrinsik di luar pejamu yang mempengaruhi paparan dan kerentanan. Lingkungan bertindak sebagai mediator yang memfasilitasi atau menghambat transmisi agen.
Interaksi ketiga komponen inilah yang menentukan tingkat endemisitas TBC di suatu wilayah.
Desain studi adalah cetak biru atau arsitektur penelitian yang memandu peneliti dalam mengumpulkan dan menganalisis data untuk menjawab pertanyaan penelitian (Budiarto, 2012). Secara garis besar, desain studi dibagi menjadi deskriptif (mendeskripsikan distribusi penyakit) dan analitik (menguji hipotesis hubungan sebab-akibat).Desain analitik observasional yang umum digunakan meliputi:
Dalam studi cross-sectional, pengukuran variabel paparan (faktor risiko) dan variabel outcome (penyakit/TBC) dilakukan secara bersamaan (simultaneously) pada satu titik waktu (Rothman, 2012). Desain ini dapat diibaratkan sebagai “potret” atau snapshot dari populasi pada saat itu.
Kelebihan:
Kekurangan:
Desain ini mengikuti sekelompok individu (kohort) yang bebas dari penyakit pada awal studi, yang dibagi berdasarkan status paparan (terpapar dan tidak terpapar). Kohort tersebut kemudian diikuti dari waktu ke waktu (follow-up) untuk melihat siapa yang berkembang menjadi sakit.
Kelebihan:
Kekurangan:
Desain ini dimulai dengan mengidentifikasi kelompok kasus (individu yang sakit TBC) dan kelompok kontrol (individu yang tidak sakit TBC). Peneliti kemudian melihat ke belakang (retrospektif) untuk membandingkan riwayat paparan faktor risiko antara kedua kelompok tersebut.
Kelebihan:
Kekurangan:
Dalam epidemiologi, ukuran digunakan untuk mengkuantifikasi frekuensi penyakit dan kekuatan hubungan antara paparan dan penyakit.
Prevalensi adalah ukuran proporsi individu dalam suatu populasi yang memiliki penyakit (kasus existing, baik baru maupun lama) pada satu titik waktu tertentu (point prevalence) atau selama periode waktu tertentu (period prevalence).
\[ \text{Prevalensi} = \frac{\text{Jumlah kasus (baru + lama) pada waktu } t}{\text{Total populasi pada waktu } t} \]
Ukuran ini menggambarkan beban penyakit (burden of disease) di masyarakat.
Insidensi mengukur jumlah kasus baru suatu penyakit yang terjadi dalam populasi berisiko selama periode waktu tertentu. Insidensi mencerminkan risiko seseorang untuk terkena penyakit. Ini biasanya diukur dalam studi kohort. Rumus untuk Cumulative Incidence (CI) atau Risk adalah:
\[ \text{Insidensi Kumulatif (Risk)} = \frac{\text{Jumlah kasus baru selama periode waktu tertentu}} {\text{Jumlah populasi berisiko}} \]
Attack Rate adalah ukuran frekuensi yang digunakan dalam epidemiologi untuk menggambarkan proporsi individu dalam suatu populasi yang menjadi sakit (terinfeksi) selama periode waktu tertentu. \[ AR = \frac{\text{Jumlah kasus baru selama periode wabah}} {\text{Jumlah populasi yang berisiko}} \times 100\% \]
OR adalah ukuran asosiasi yang digunakan dalam studi kasus-kontrol dan cross-sectional. OR membandingkan odds (peluang) terjadinya penyakit pada kelompok terpapar dengan odds terjadinya penyakit pada kelompok tidak terpapar.
RR adalah ukuran asosiasi yang digunakan dalam studi kohort. RR membandingkan risiko (insidensi) penyakit pada kelompok terpapar dengan risiko (insidensi) penyakit pada kelompok tidak terpapar.
\[ RR = \frac{\text{Insidensi pada kelompok terpapar}} {\text{Insidensi pada kelompok tidak terpapar}} = \frac{a / (a + b)}{c / (c + d)} \]
AR (atau Selisih Risiko) adalah ukuran yang menunjukkan kelebihan risiko penyakit pada kelompok terpapar yang dapat diatribusikan (disebabkan) oleh paparan tersebut. Ukuran ini juga memerlukan data insidensi dari studi kohort.
\[ AR = (\text{Insidensi terpapar}) - (\text{Insidensi tidak terpapar}) \]
Data yang digunakan dalam penelitian ini merupakan data sekunder yang diperoleh dari sumber resmi yaitu Website Dinas Kesehatan Provinsi Jawa Barat pada website Open Data Jabar.
Variabel yang digunakan pada penelitian ini adalah jumlah kasus Tuberkulosis (TBC) di setiap kabupaten/kota di Provinsi Jawa Barat dan jumlah penduduk di setiap Kabupaten/Kota di Provinsi Jawa Barat pada periode tahun 2021-2024.
Analisis yang digunakan terdiri atas perhitungan prevalensi dan autokorelasi spasial. Analisis deskriptif dilakukan untuk memvisualisasikan persebaran kasus TBC di Jawa Barat. Autokorelasi spasial dihitung menggunakan Global Moran’s I dan Geary’s C untuk mendeteksi pola sebaran secara keseluruhan dan Local Moran’s I (LISA) untuk mengidentifikasi klaster signifikan antarwilayah.
Adapun alur kerja pada kasus ini adalah dimulai dengan pencarian data sekunder dari sumber resmi, kemudian dilakukan pemetaan jumlah kasus dan jumlah penduduk berdasarkan kabupaten/kota serta periode tahun data yang dihimpun. Selanjutnya, dilakukan perhitungan prevalensi dan analisis autokorelasi spasial pada prevalensi kasus tuberkulsis di Provinsi Jawa Barat.
Pemangilan Package (Warning dan Message disembunyikan)
library(sf)
library(dplyr)
library(ggplot2)
library(viridis)
library(tmap)
library(spdep)
library(readr)
library(tidyr)
library(grid)
library(gridExtra)
Memanggil Bahan Membuat Peta Chloropeth dan Data yang akan Digunakan
# Setting Directory da
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
shp <- st_read("geoBoundaries-IDN-ADM2-all/geoBoundaries-IDN-ADM2.shp")
shp <- shp %>% mutate(NAME_join = toupper(shapeName))
kabkota_jabar <- toupper(c(
"Bandung", "Bandung Barat", "Bekasi", "Bogor", "Ciamis",
"Cianjur", "Cirebon", "Garut", "Indramayu", "Karawang",
"Kota Bandung", "Kota Banjar", "Kota Bekasi", "Kota Bogor",
"Kota Cimahi", "Kota Cirebon", "Kota Depok", "Kota Sukabumi",
"Kota Tasikmalaya", "Kuningan", "Majalengka", "Pangandaran",
"Purwakarta", "Subang", "Sukabumi", "Sumedang", "Tasikmalaya"
))
jabar_shp_filtered <- shp %>% filter(NAME_join %in% kabkota_jabar)
# Pemanggilan data dari File .csv
data <- read.csv("TBC - Penduduk.csv")
data$Kabupaten.Kota <- toupper(data$Kabupaten.Kota)
# Penggabungan data dari File .shp dan File .csv
jabar_merged <- jabar_shp_filtered %>%
mutate(Kabupaten.Kota = NAME_join) %>%
left_join(data, by = "Kabupaten.Kota")
# Menghitung Prevalensi Penduduk
jabar_merged <- jabar_merged %>%
mutate(
PR_2021 = (Kasus.TBC.2021 / Populasi.2021) * 100000,
PR_2022 = (Kasus.TBC.2022 / Populasi.2022) * 100000,
PR_2023 = (Kasus.TBC.2023 / Populasi.2023) * 100000,
PR_2024 = (Kasus.TBC.2024 / Populasi.2024) * 100000
)
# Tabel Prevalensi
tabel_prevalensi <- jabar_merged %>%
st_drop_geometry() %>% # Hapus geometri (hanya data tabular)
select(
Kabupaten.Kota, # Nama kabupaten/kota
PR_2021, PR_2022, PR_2023, PR_2024 # Prevalensi per tahun
) %>%
mutate(
across(starts_with("PR_"), ~ round(., 1)) # Bulatkan 1 desimal
) %>%
arrange(Kabupaten.Kota) %>% # Urutkan alfabetis
rename_with(~ gsub("PR_", "Prevalensi_", .), starts_with("PR_")) # Ganti nama kolom
# Tampilkan tabel
print(tabel_prevalensi)
## Kabupaten.Kota Prevalensi_2021 Prevalensi_2022 Prevalensi_2023
## 1 BANDUNG 156.3 288.8 341.2
## 2 BANDUNG BARAT 96.0 165.9 224.7
## 3 BEKASI 152.4 262.3 417.5
## 4 BOGOR 217.8 387.2 492.1
## 5 CIAMIS 130.1 236.9 243.1
## 6 CIANJUR 186.9 279.0 364.6
## 7 CIREBON 147.0 299.4 349.0
## 8 GARUT 183.1 299.0 321.0
## 9 INDRAMAYU 91.9 145.7 271.8
## 10 KARAWANG 183.6 321.3 509.4
## 11 KOTA BANDUNG 362.4 585.4 731.1
## 12 KOTA BANJAR 132.7 361.7 566.2
## 13 KOTA BEKASI 235.6 413.7 543.5
## 14 KOTA BOGOR 137.0 729.5 967.0
## 15 KOTA CIMAHI 310.2 741.6 779.0
## 16 KOTA CIREBON 568.8 814.3 1206.8
## 17 KOTA DEPOK 194.2 309.8 365.9
## 18 KOTA SUKABUMI 349.3 670.5 951.4
## 19 KOTA TASIKMALAYA 204.1 387.5 640.2
## 20 KUNINGAN 140.4 205.3 308.3
## 21 MAJALENGKA 131.0 238.1 322.1
## 22 PANGANDARAN 96.3 171.3 221.1
## 23 PURWAKARTA 238.9 448.5 540.7
## 24 SUBANG 179.7 291.6 343.4
## 25 SUKABUMI 174.9 269.9 390.7
## 26 SUMEDANG 118.4 214.0 256.3
## 27 TASIKMALAYA 106.3 164.4 185.0
## Prevalensi_2024
## 1 373.3
## 2 242.5
## 3 472.2
## 4 512.3
## 5 276.1
## 6 471.8
## 7 401.5
## 8 350.2
## 9 318.3
## 10 527.5
## 11 736.8
## 12 724.1
## 13 515.9
## 14 1058.8
## 15 753.8
## 16 1195.3
## 17 389.3
## 18 950.7
## 19 625.1
## 20 333.2
## 21 334.0
## 22 223.0
## 23 446.2
## 24 380.1
## 25 438.9
## 26 331.1
## 27 254.1
# Statistik Deskriptif Prevalensi Kasus TBC di Jawa Barat
summary(tabel_prevalensi)
## Kabupaten.Kota Prevalensi_2021 Prevalensi_2022 Prevalensi_2023
## Length:27 Min. : 91.9 Min. :145.7 Min. : 185.0
## Class :character 1st Qu.:131.8 1st Qu.:237.5 1st Qu.: 314.6
## Mode :character Median :174.9 Median :299.0 Median : 365.9
## Mean :193.5 Mean :359.4 Mean : 476.0
## 3rd Qu.:210.9 3rd Qu.:400.6 3rd Qu.: 554.9
## Max. :568.8 Max. :814.3 Max. :1206.8
## Prevalensi_2024
## Min. : 223.0
## 1st Qu.: 333.6
## Median : 438.9
## Mean : 505.0
## 3rd Qu.: 576.3
## Max. :1195.3
Adapun hal yang dapat disimpulkan dari Output tersebut adalah:
# ==============================
# 1. Plot Total Kasus
# ==============================
p1 <- jabar_merged %>%
st_drop_geometry() %>%
summarise(
Total_2021 = sum(Kasus.TBC.2021, na.rm = TRUE),
Total_2022 = sum(Kasus.TBC.2022, na.rm = TRUE),
Total_2023 = sum(Kasus.TBC.2023, na.rm = TRUE),
Total_2024 = sum(Kasus.TBC.2024, na.rm = TRUE)
) %>%
pivot_longer(cols = everything(), names_to = "Tahun", values_to = "Total_Kasus") %>%
mutate(Tahun = as.numeric(gsub("Total_", "", Tahun))) %>%
ggplot(aes(x = Tahun, y = Total_Kasus)) +
geom_col(fill = "#3288BD", width = 0.6) +
geom_line(color = "darkred", size = 1.2, group = 1) +
geom_point(color = "darkred", size = 3) +
labs(
title = "Total Kasus TBC",
x = NULL,
y = "Jumlah Kasus"
) +
theme_minimal(base_size = 13) +
theme(plot.title = element_text(face = "bold", hjust = 0.5))
# ==============================
# 2. Plot Prevalensi Total
# ==============================
# Hitung total populasi per tahun
total_pop <- jabar_merged %>%
st_drop_geometry() %>%
summarise(
Pop_2021 = sum(Populasi.2021, na.rm = TRUE),
Pop_2022 = sum(Populasi.2022, na.rm = TRUE),
Pop_2023 = sum(Populasi.2023, na.rm = TRUE),
Pop_2024 = sum(Populasi.2024, na.rm = TRUE)
)
# Hitung prevalensi total: (total kasus / total populasi) * 100000
prev_total <- data.frame(
Tahun = 2021:2024,
Prev_Total = c(
(sum(jabar_merged$Kasus.TBC.2021, na.rm = TRUE) / total_pop$Pop_2021) * 100000,
(sum(jabar_merged$Kasus.TBC.2022, na.rm = TRUE) / total_pop$Pop_2022) * 100000,
(sum(jabar_merged$Kasus.TBC.2023, na.rm = TRUE) / total_pop$Pop_2023) * 100000,
(sum(jabar_merged$Kasus.TBC.2024, na.rm = TRUE) / total_pop$Pop_2024) * 100000
)
) %>%
mutate(Prev_Total = round(Prev_Total, 1)) # Bulatkan 1 desimal untuk konsistensi
p2 <- ggplot(prev_total, aes(x = Tahun, y = Prev_Total)) +
geom_col(fill = "#F46D43", width = 0.6) +
geom_line(color = "darkblue", size = 1.2, group = 1) +
geom_point(color = "darkblue", size = 3) +
labs(
title = "Prevalensi Kasus TBC di Jawa Barat",
x = NULL,
y = "Prevalensi\n(per 100.000)"
) +
theme_minimal(base_size = 13) +
theme(plot.title = element_text(face = "bold", hjust = 0.5))
# ==============================
# 3. GABUNGKAN: 1 Output, 2 Plot Berdampingan
# ==============================
library(grid) # Untuk textGrob (pastikan sudah di-load)
grid.arrange(
p1, p2,
ncol = 2,
top = textGrob(
"Tren Kasus dan Prevalensi TBC di Jawa Barat (2021–2024)",
gp = gpar(fontface = "bold", fontsize = 15)
)
)
Dari kedua grafik, terlihat bahwa jumlah kasus dan prevalensi TBC di Provinsi Jawa Barat terus meningkat dari tahun 2021 hingga 2024. Namun, laju kenaikan menunjukkan kecenderungan melambat, terutama pada periode 2023–2024, yang ditandai dengan kemiringan grafik yang semakin landai. Hal ini mengindikasikan adanya penurunan dalam tingkat pertumbuhan tahunan, meskipun kasus dan prevalensi secara keseluruhan masih berada pada tren naik.
# ==============================
# Fungsi peta prevalensi
# ==============================
plot_prevalensi <- function(data_sf, var, year) {
vals <- data_sf[[var]]
if (all(is.na(vals))) stop(paste("Semua nilai", var, "adalah NA."))
min_val <- min(vals, na.rm = TRUE)
max_val <- max(vals, na.rm = TRUE)
breaks_seq <- seq(min_val, max_val, length.out = 8) # 8 kelas
label_class <- paste0(
round(head(breaks_seq, -1), 1), " – ", round(tail(breaks_seq, -1), 1)
)
data_sf <- data_sf %>%
mutate(
kelas_prevalensi = cut(
.data[[var]],
breaks = breaks_seq,
include.lowest = TRUE,
labels = label_class
)
)
ggplot(data_sf) +
geom_sf(aes(fill = kelas_prevalensi), color = "gray30", size = 0.3) +
scale_fill_viridis_d(option = "plasma", direction = -1, na.value = "gray90") +
labs(
title = paste("Prevalensi TBC di Jawa Barat Tahun", year),
fill = "Prevalensi (per 100.000)"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
legend.position = "right"
)
}
# ==============================
# Buat 4 peta
# ==============================
plot_prevalensi(jabar_merged, "PR_2021", 2021)
plot_prevalensi(jabar_merged, "PR_2022", 2022)
plot_prevalensi(jabar_merged, "PR_2023", 2023)
plot_prevalensi(jabar_merged, "PR_2024", 2024)
Buat Matriks Bobot Spasial
nb <- poly2nb(jabar_merged, queen = TRUE)
lw <- nb2listw(nb, style = "W", zero.policy = TRUE)
years <- 2021:2024
for (year in years) {
var <- paste0("PR_", year)
cat("\n==============================\n")
cat("Uji Autokorelasi Spasial untuk Prevalensi TBC Tahun", year, "\n")
cat("==============================\n")
print(moran.test(jabar_merged[[var]], lw, zero.policy = TRUE))
}
##
## ==============================
## Uji Autokorelasi Spasial untuk Prevalensi TBC Tahun 2021
## ==============================
##
## Moran I test under randomisation
##
## data: jabar_merged[[var]]
## weights: lw
##
## Moran I statistic standard deviate = 0.45122, p-value = 0.3259
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.01746724 -0.03846154 0.01536363
##
##
## ==============================
## Uji Autokorelasi Spasial untuk Prevalensi TBC Tahun 2022
## ==============================
##
## Moran I test under randomisation
##
## data: jabar_merged[[var]]
## weights: lw
##
## Moran I statistic standard deviate = 0.84992, p-value = 0.1977
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.07889033 -0.03846154 0.01906451
##
##
## ==============================
## Uji Autokorelasi Spasial untuk Prevalensi TBC Tahun 2023
## ==============================
##
## Moran I test under randomisation
##
## data: jabar_merged[[var]]
## weights: lw
##
## Moran I statistic standard deviate = 0.58868, p-value = 0.278
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.04155478 -0.03846154 0.01847590
##
##
## ==============================
## Uji Autokorelasi Spasial untuk Prevalensi TBC Tahun 2024
## ==============================
##
## Moran I test under randomisation
##
## data: jabar_merged[[var]]
## weights: lw
##
## Moran I statistic standard deviate = 0.60773, p-value = 0.2717
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.04413265 -0.03846154 0.01847043
for (year in years) {
var <- paste0("PR_", year)
cat("\n==================================\n")
cat("Uji Geary’s C untuk Prevalensi TBC Tahun", year, "\n")
cat("==================================\n")
print(geary.test(jabar_merged[[var]], lw, zero.policy = TRUE))
}
##
## ==================================
## Uji Geary’s C untuk Prevalensi TBC Tahun 2021
## ==================================
##
## Geary C test under randomisation
##
## data: jabar_merged[[var]]
## weights: lw
##
## Geary C statistic standard deviate = 1.281, p-value = 0.1001
## alternative hypothesis: Expectation greater than statistic
## sample estimates:
## Geary C statistic Expectation Variance
## 0.71732764 1.00000000 0.04869638
##
##
## ==================================
## Uji Geary’s C untuk Prevalensi TBC Tahun 2022
## ==================================
##
## Geary C test under randomisation
##
## data: jabar_merged[[var]]
## weights: lw
##
## Geary C statistic standard deviate = 1.803, p-value = 0.03569
## alternative hypothesis: Expectation greater than statistic
## sample estimates:
## Geary C statistic Expectation Variance
## 0.69138634 1.00000000 0.02929659
##
##
## ==================================
## Uji Geary’s C untuk Prevalensi TBC Tahun 2023
## ==================================
##
## Geary C test under randomisation
##
## data: jabar_merged[[var]]
## weights: lw
##
## Geary C statistic standard deviate = 1.5209, p-value = 0.06415
## alternative hypothesis: Expectation greater than statistic
## sample estimates:
## Geary C statistic Expectation Variance
## 0.72632061 1.00000000 0.03238205
##
##
## ==================================
## Uji Geary’s C untuk Prevalensi TBC Tahun 2024
## ==================================
##
## Geary C test under randomisation
##
## data: jabar_merged[[var]]
## weights: lw
##
## Geary C statistic standard deviate = 1.6571, p-value = 0.04875
## alternative hypothesis: Expectation greater than statistic
## sample estimates:
## Geary C statistic Expectation Variance
## 0.70168080 1.00000000 0.03241075
for (year in years) {
var <- paste0("PR_", year)
# Hitung Local Moran's I
local_moran <- localmoran(jabar_merged[[var]], lw, zero.policy = TRUE)
# Ekstrak p-value (biasanya kolom ke-5: Pr(z) atau Pr(z > 0))
pval_col <- ncol(local_moran) # Kolom terakhir biasanya p-value
local_I <- local_moran[, 1] # Ii
local_p <- local_moran[, pval_col]
# Tambahkan ke data
jabar_merged[[paste0("LocalI_", year)]] <- local_I
jabar_merged[[paste0("pval_", year)]] <- local_p
# Hitung lag spasial
lag_var <- lag.listw(lw, jabar_merged[[var]], zero.policy = TRUE)
# Standarisasi nilai dan lag
z_var <- scale(jabar_merged[[var]])[, 1]
z_lag <- scale(lag_var)[, 1]
# Klasifikasi LISA
jabar_merged[[paste0("cluster_", year)]] <- case_when(
z_var > 0 & z_lag > 0 & local_p <= 0.05 ~ "High-High",
z_var < 0 & z_lag < 0 & local_p <= 0.05 ~ "Low-Low",
z_var > 0 & z_lag < 0 & local_p <= 0.05 ~ "High-Low",
z_var < 0 & z_lag > 0 & local_p <= 0.05 ~ "Low-High",
TRUE ~ "Not Significant"
)
# Plot peta LISA
p <- ggplot(jabar_merged) +
geom_sf(aes(fill = .data[[paste0("cluster_", year)]]), color = "gray30", size = 0.3) +
scale_fill_manual(
values = c(
"High-High" = "#E41A1C",
"Low-Low" = "#377EB8",
"High-Low" = "#4DAF4A",
"Low-High" = "#984EA3",
"Not Significant" = "grey80"
),
drop = FALSE
) +
labs(
title = paste("Peta LISA (Local Moran’s I) – Prevalensi TBC Tahun", year),
fill = "Klaster Spasial"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
legend.position = "right"
)
print(p)
}
Dari hasil output Global Moran’s I dan Geary’s C prevalensi kasus TBC di Jawa Barat, terdapat beberapa persamaan dan perbedaan dari hasil output perhitungan p-valuenya. Dengan taraf signifikansi sebesar 5%, adapun yang dapat disimpulkan dari hasil kedua uji tersebut adalah:
Namun demikian, terlihat bahwa dari hasil peta LISA, hanya Kabupaten Majalengka yang terindikasi “Low-Low” pada keempat tahun tersebut dan Kabupaten Sumedang yang terindikasi “Low-Low” pada tahun 2023. Hal tersebut juga bisa menjadi bukti kalau peran lokasi pada prevalensi kasus TBC di Jawa Barat pada 4 tahun terakhir tidak memberikan dampak secara signifikan terhadap prevalensi kasus TBC di wilayah sekitarnya. Hanya pada Kabupaten Majalengka dan Kabupaten Sumedang yang terindikasi memberi dampak pada wilayah di sekitarnya.
Berikut adalah bentuk desain studi untuk penelitan mengenai kasus TBC di Jawa Barat lebih mendalam:
Aspek 1: Populasi Target dan Sampling
Populasi yang menjadi
unit eksperimen merupakan penduduk dewasa (>18 tahun) pada Kabupaten
dan Kota di Jawa Barat. Sampling akan dilakukan dengan mengambil daftar
pasien yang sedang menderita TBC yang ada di rumah sakit/klinik di
beberapa titik yang kerap dikunjungi oleh masyarakat untuk berobat,
diprioritaskan pasien-pasien yang relatif baru menderita penyakit TBC
untuk mengurangi adanya Berkson Bias. Untuk memastikan benarinya
sampling serta mengurangi bias juga diberlakukan skrining ketat bagi
yang menderita untuk memastikan bahwa individu benari-benar terdiagnosa
menderita TBC oleh dokter. Untuk kontrol, individu yang tidak menderita
TBC ataupun punya riwayat TBC, akan dipilih berdasarkan dari individu
dari komunitas sama contohnya adalah tetangga dari individu yang
menderita ataupun teman/rekannya. Untuk mengurangi bias maka akan
dilakukan frequency matching untuk ememastikan persamaan karakteristik
pada kontrol serta yang menderita TBC dalam aspek etnis dan umur untuk
mengurangi bias. Serta diberlakukan skrining untuk memastikan tidak
adanya riwayat menderita TBC.
Aspek 2: Variabel Utama
Variabel utama pada penelitian ini
adalah pasien dewasa yang menderita dari penyakit TBC melalui diagnosis
pada fasilitas kesehatan (sudah terkonfirmasi). Kontrol berupa individu
dewasa yang tidak menderita serta mempunyai riwayat TBC.
Aspek 3: Variabel Independen
Akan ada 3 variabel yang akan
dihimpun jawabannya untuk dilakukan penelitian lebih lanjut, yaitu:
Aspek 4: Desain Studi yang Digunakan
Aspek 5: Potential Bias
Dari hasil uji-uji yang sudah dilakukan, terlihat bahwa kasus TBC di Jawa Barat pada 4 tahun terakhir ada dalam tren yang naik, baik dari total kasus maupun prevalensi provinsi. Meski begitu, tren yang naik ini terlihat semakin landai, terlihat dari kenaikan total dan prevalensi yang semakin sedikit dari tahun ke tahun. Salah satu wilayah di Jawa Barat yang paling menonjol adalah Kota Cirebon, menjadi satu-satunya kota dengan prevalensi kasus TBC terbanyak di Jawa Barat menjadi kota dengan prevalensi kasus TBC terbanyak pada 4 tahun terakhir, meski terdapat sedikit penurunan prevalensi kasus TBC di Kota Cirebon dari tahun 2023 ke 2024.
Selain itu, terlihat juga bahwa prevalensi kasus TBC di Jawa Barat pada 4 tahun terakhir cenderung tidak mengalami autokorelasi spasial. Meski pada 2 dari 4 uji Geary’s C dan Kabupaten Majalengka dan Sumedang memiliki indikasi autokorelasi spasial, wilayah-wilayah lainnya tidak terdeteksi autokorelasi secara lokal sehingga kasus prevalensi TBC di Jawa Barat cenderung tidak berpola.
Untuk mendapatkan informasi lebih banyak, bisa dilakukan studi case-control lewat sampling pasien-pasien yang sudah terverifikasi terkena penyakit Tuberkulosis pada beberapa titik rumah sakit yang ditentukan. Fungsi dari melakukan studi ini adalah agar dapat mendeteksi gejala-gejala Tuberkulosis lebih awal, sehingga pencegahan yang diberikan bisa lebih awal dan kasus baru bisa ditekan semaksimal mungkin.
Kasus TBC menjadi sebuah hal yang membebankan Indonesia, termasuk Provinsi Jawa Barat yang menjadi salah satu provinsi dengan kasus TBC terbanyak se-Indonesia. Melakukan kajian lebih dalam secara epidemiologis dan spasial bisa menjadi hal yang baik untuk mengenal lebih banyak mengenai pola persebaran kasus TBC dan mengetahui wilayah yang perlu ditingkatkan infrastruktur kesehatannya agar angka kasus lama dan baru TBC bisa menurun secara terus menerus. Adapun saran untuk penelitan berikutnya ada dengan melakukan kajian lebih lanjut dan menggunakan desain studi case-control untuk mendeteksi apakah seseorang terkena atau tidak gejala TBC lebih awal, sehingga semakin sedikit orang dengan penyakit TBC yang harus ditangani.
Open Data Jabar. (2025). Jumlah Kasus Penyakit Tuberkulosis Berdasarkan Kabupaten/Kota di Jawa Barat .https://opendata.jabarprov.go.id/id/dataset/jumlah-kasus-penyakit-tuberkulosis-berdasarkan-kabupatenkota-di-jawa-barat
Budiarto, E. (2012). Metodologi penelitian kedokteran: Sebuah pengantar. EGC.
Celentano, D. D., & Szklo, M. (2018). Gordis epidemiology (6th ed.). Elsevier.
Dinas Kesehatan Provinsi Jawa Barat. (2023). Profil kesehatan Provinsi Jawa Barat tahun 2023. Dinas Kesehatan Provinsi Jawa Barat.
Kementerian Kesehatan RI. (2023). Pedoman nasional pelayanan kedokteran: Tata laksana tuberkulosis. Kementerian Kesehatan RI.
Kementerian Kesehatan RI. (2024). Profil kesehatan Indonesia 2023. Kementerian Kesehatan RI.
Kėvelaitienė, K., Davidavičienė, V. E., & Danila, E. (2025). Tuberculosis treatment failure: what are the risk factors? A comprehensive literature review. Multidisciplinary Respiratory Medicine, 20. https://doi.org/10.5826/mrm.2025.1030
Rothman, K. J. (2012). Epidemiology: An introduction (2nd ed.). Oxford University Press.
World Health Organization. (2024). Global tuberculosis report 2024. World Health Organization.
Dashboard Kasus Tuberkulosis tahun 2021-2024: https://nanaurum.shinyapps.io/Dashboard_UTS_Epidemiologi/