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

Bab 1. Pendahuluan

1.1 Latar Belakang

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.

1.2 Rumusan Masalah

Berdasarkan latar belakang tersebut, beberapa masalah utama yang diidentifikasi adalah:

  1. Berapa angka prevalensi kasus tuberkulosis (TBC) di Provinsi Jawa Barat pada tahun 2021-2024?
  2. Bagaimana distribusi prevalensi tuberkulosis (TBC) berdasarkan Kabupaten/Kota di Provinsi Jawa Barat?
  3. Bagaimana model simulasi desain studi cross-sectional dapat dibangun untuk mengukur asosiasi antara Kabupaten/Kota dengan prevalensi tuberkulosis di Jawa Barat?

1.3 Tujuan

Adapun penelitian ini bertujuan untuk:

  1. Mendeskripsikan pola sebaran spasial kasus tuberkulosis di Provinsi Jawa Barat pada tahun 2021-2024 pada tingkat kabupaten/kota.
  2. Menghitung angka prevalensi tuberkulosis (TBC) di Provinsi Jawa Barat pada tahun 2021-2024.
  3. Mengidentifikasi distribusi prevalensi tuberkulosis (TBC) berdasarkan Kabupaten/Kota di Provinsi Jawa Barat.
  4. Mengetahui gambaran prevalensi kejadian tuberkulosis (TBC) di Provinsi Jawa Barat menggunakan desain studi cross-sectional.

Bab 2. Tinjauan Pustaka

2.1 Konsep Agent-Host-Environment

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.

Agent (Agen)

Agen merujuk pada mikroorganisme penyebab penyakit. Dalam kasus TBC, agennya adalah bakteri Mycobacterium tuberculosis. Dalam konteks TBC keseluruhan, karakteristik agen yang relevan meliputi:

  • Infektivitas: Kemampuan agen untuk masuk dan berkembang biak dalam pejamu.
  • Patogenisitas: Kemampuan agen untuk menimbulkan penyakit klinis (TBC aktif) setelah berhasil menginfeksi. Penting diingat bahwa tidak semua orang yang terinfeksi M. tuberculosis akan jatuh sakit (menjadi TBC Laten).
  • Virulensi: Tingkat keparahan atau keganasan penyakit yang disebabkan oleh agen.
  • Transmisibilitas: Kemudahan agen untuk ditularkan. M. tuberculosis utamanya ditularkan melalui airborne (via droplet nuclei), yang memungkinkannya bertahan lama di udara dalam ruangan tertutup dan terhirup oleh pejamu baru (Kementerian Kesehatan RI, 2023).

Host (Pejamu)

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:

  • Faktor Imunologi: Ini adalah faktor terpenting. Sistem kekebalan tubuh yang lemah (imunokompromais) akibat kondisi seperti koinfeksi HIV, diabetes melitus, atau malnutrisi (gizi buruk), secara drastis meningkatkan risiko transisi dari TBC laten ke TBC aktif (WHO, 2024).
  • Faktor Perilaku: Perilaku yang meningkatkan paparan atau menurunkan pertahanan tubuh. Contoh utamanya adalah kebiasaan merokok, yang merusak mekanisme pertahanan paru-paru dan meningkatkan risiko TBC aktif.
  • Faktor Demografis: Usia (kelompok usia sangat muda dan lanjut usia lebih rentan) dan riwayat kontak erat sebelumnya dengan penderita TBC.
  • Faktor Genetik: Adanya predisposisi genetik tertentu yang mungkin memengaruhi respons imun individu terhadap bakteri.

Environment (Lingkungan)

Environment merujuk pada kondisi ekstrinsik di luar pejamu yang mempengaruhi paparan dan kerentanan. Lingkungan bertindak sebagai mediator yang memfasilitasi atau menghambat transmisi agen.

  • Lingkungan Fisik: Ini sangat sentral dalam penularan TBC. Meliputi: (1) Kepadatan hunian, di mana tinggal di rumah yang sempit dan penuh sesak (overcrowding) meningkatkan intensitas dan durasi paparan; (2) Kualitas ventilasi udara yang buruk, yang menyebabkan droplet nuclei terakumulasi di dalam ruangan; dan (3) Kurangnya paparan sinar matahari langsung (sinar UV dapat membunuh M. tuberculosis).
  • Lingkungan Sosial-Ekonomi: Faktor ini seringkali menjadi akar masalah (root cause) dari kerentanan. Kemiskinan berkorelasi langsung dengan malnutrisi (menurunkan status imun host) dan kondisi hunian yang buruk (faktor environment). Tingkat pendidikan dan pengetahuan yang rendah dapat menghambat perilaku pencarian layanan kesehatan, sementara stigma sosial dapat menyebabkan penderita menunda pengobatan (Dinas Kesehatan Provinsi Jawa Barat, 2023).

Interaksi ketiga komponen inilah yang menentukan tingkat endemisitas TBC di suatu wilayah.

2.2 Ukuran Frekuensi dan Asosiasi

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:

Studi Cross-sectional

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:

  • Efisien: Relatif cepat untuk dilaksanakan dan biaya lebih murah dibandingkan desain analitik lainnya.
  • Mengukur Prevalensi: Merupakan desain terbaik untuk mengukur frekuensi penyakit (prevalensi) di populasi, sehingga cocok untuk menggambarkan beban penyakit (burden of disease).
  • Hipoetetis Awal: Baik untuk mengeksplorasi asosiasi dan menghasilkan hipotesis awal untuk penelitian kohort atau eksperimen lebih lanjut.

Kekurangan:

  • Masalah Temporal : Kekurangan utamanya adalah ketidakmampuan menentukan mana yang lebih dulu terjadi (temporalitas). Sulit dipastikan apakah paparan menyebabkan penyakit atau penyakit yang menyebabkan paparan (misalnya, apakah status gizi buruk menyebabkan TBC, atau TBC aktif menyebabkan gizi buruk?).
  • Tidak Mengukur Insidensi: Tidak dapat digunakan untuk mengukur laju kasus baru (insidensi), sehingga tidak dapat menghitung Risk Ratio (RR).
  • Bias Prevalensi: Dapat terjadi bias jika paparan (faktor risiko) berhubungan dengan durasi penyakit.

Studi Kohort (Cohort)

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:

  • Temporalitas Jelas: Dapat menentukan urutan waktu (paparan terjadi sebelum penyakit), sehingga menjadi desain observasional terkuat untuk menentukan penyebab (causality).
  • Mengukur Insidensi & RR: Dapat menghitung angka insidensi (kasus baru) secara langsung dan menghitung Risk Ratio (RR).
  • Paparan Langka: Baik untuk meneliti paparan yang langka.

Kekurangan:

  • Mahal dan Lama: Membutuhkan biaya sangat besar dan waktu yang sangat lama, terutama untuk penyakit dengan masa laten panjang seperti TBC.
  • Loss to Follow-up: Risiko subjek penelitian hilang atau keluar dari studi selama periode follow-up, yang dapat menyebabkan bias.
  • Penyakit Langka: Tidak efisien untuk meneliti penyakit yang langka.

Studi Kasus-Kontrol (Case-Control)

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:

  • Efisien untuk Penyakit Langka: Sangat cocok untuk meneliti penyakit yang jarang terjadi atau memiliki masa laten panjang (seperti TBC).
  • Cepat dan Murah: Relatif cepat dan murah dibandingkan kohort, karena tidak memerlukan follow-up.
  • Multiple Paparan: Dapat meneliti berbagai kemungkinan faktor risiko (paparan) secara bersamaan.

Kekurangan:

  • Bias Recall (Daya Ingat): Sangat rentan terhadap bias daya ingat, karena subjek (terutama kasus) mungkin mengingat paparan masa lalu secara berbeda dibandingkan kelompok kontrol.
  • Bias Seleksi: Sulit untuk memilih kelompok kontrol yang benar-benar sebanding (representatif) dengan populasi asal kasus.
  • Tidak Mengukur Prevalensi/Insidensi: Tidak dapat menghitung prevalensi atau insidensi. Hanya menghasilkan Odds Ratio (OR).

2.3 Ukuran Frekuensi dan Asosiasi

Dalam epidemiologi, ukuran digunakan untuk mengkuantifikasi frekuensi penyakit dan kekuatan hubungan antara paparan dan penyakit.

Prevalensi

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

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 (AR)

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\% \]

Odds Ratio (OR)

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.

  • OR = 1 → tidak ada asosiasi antara paparan dan penyakit.
  • OR > 1 → paparan berhubungan dengan peningkatan odds penyakit (faktor risiko).
  • OR < 1 → paparan berhubungan dengan penurunan odds penyakit (faktor protektif).

Risk Ratio (RR) atau Relative Risk

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)} \]

Attributable Risk (AR)

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}) \]

Bab 3. Metodologi

3.1 Sumber Data

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.

3.2 Variabel Penelitian

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.

3.3 Metode Analisis

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.

3.4 Alur Kerja

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.

Bab 4. Hasil dan Pembahasan

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")

4.1 Tabel Hasil Perhitungan Prevalensi

# 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:

  • Pada Tahun 2021, wilayah dengan prevalensi kasus Tuberkulosis terbesar adalah Kota Cirebon dengan prevalensi sebesar 568.8 kasus per 100.000 orang dan wilayah dengan prevalensi kasus Tuberkulosis terkecil adalah Kabupaten Indramayu dengan prevalensi sebesar 91.9 kasus per 100.000 orang
  • Pada Tahun 2022, wilayah dengan prevalensi kasus Tuberkulosis terbesar adalah Kota Cirebon dengan prevalensi sebesar 814.3 kasus per 100.000 orang dan wilayah dengan prevalensi kasus Tuberkulosis terkecil adalah Kabupaten Indramayu dengan prevalensi sebesar 145.7 kasus per 100.000 orang
  • Pada Tahun 2023, wilayah dengan prevalensi kasus Tuberkulosis terbesar adalah Kota Cirebon dengan prevalensi sebesar 1206.8 kasus per 100.000 orang dan wilayah dengan prevalensi kasus Tuberkulosis terkecil adalah Kabupaten Tasikmalaya dengan prevalensi sebesar 185 kasus per 100.000 orang
  • Pada Tahun 2024, wilayah dengan prevalensi kasus Tuberkulosis terbesar adalah Kota Cirebon dengan prevalensi sebesar 1195.3 kasus per 100.000 orang dan wilayah dengan prevalensi kasus Tuberkulosis terkecil adalah Kabupaten Pangandaran dengan prevalensi sebesar 223 kasus per 100.000 orang

4.2 Grafik Tren

# ==============================
# 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.

4.3 Peta Chloropeth Prevalensi

# ==============================
# 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)

4.4 Analisis Autokorelasi Spasial

Buat Matriks Bobot Spasial

nb <- poly2nb(jabar_merged, queen = TRUE)
lw <- nb2listw(nb, style = "W", zero.policy = TRUE)

Global Moran’s I

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

Geary’s C

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

Local Moran’s I

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:

  • Tidak ada indikasi autokorelasi spasial baik positif ataupun negatif pada tahun 2021 dan 2023 dikarenakan p-value pada kedua uji memiliki nilai yang lebih besar dari taraf signifikansi (Global Moran’s I 2021 dan 2023 masing-masing sebesar 0.3259 dan 0.278, Geary’s C 2021 dan 2023 masing-masing sebesar 0.1001 dan 0.06415)
  • Terdapat perbedaan indikasi autokorelasi, dimana uji Global Moran’s I tidak menunjukkan adanya indikasi autokorelasi spasial pada tahun 2022 dan 2024. Namun, uji Geary’s C menunjukkan adanya indikasi autokorelasi spasial positif pada tahun 2022 dan 2024, dilihat dari nilai p-value yang kurang dari 0.05 dan nilai Geary’s C statistik yang lebih kecil dari nilai ekspektasi

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.

4.5 Desain Studi Untuk Kasus Tuberkulosis

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:

  • Riwayat Sebagai Perokok Aktif (Ya/Tidak)
  • Riwayat Penyakit Diabetes (Ya/Tidak)
  • Jenis Kelamin (Pria/Wanita)

Aspek 4: Desain Studi yang Digunakan

  • Penentuan Kasus dan Kontrol: Semua penderita TBC terkonfirmasi dalam periode tertentu
  • Variabel Kontrol: Individu dari populasi sama tanpa tanpa TBC serta riwayat TBC dipilih berdasarkan frequency matching.
  • Pengukuran Paparan: Melalui wawancara dilihat status perokok dan riwayat diabetes. Ditanyakan pada kontrol serta yang menderita TBC.
  • Langkah Analisis: Setelah data siap, analisis yang pertama dilakukan berupa asosiasi awal (uji Odds Ratio) antara TBC dan setiap variabel, lalu analisis dengan regresi logistik untuk mengontrol variabel confounder.

Aspek 5: Potential Bias

  • Selection Bias: Adanya bias pada pemilihan unit observasi terutama pada yang menderita TBC karena kemungkinan yang masuk pada rumah sakit tidak mewakili semua penderita TBC terutama yang sedang rawat inap sehingga melakukan distorsi pada OR. Serta juga pada pemolihan kontrol yang bisa tidak mewakili sumber populasi sehingga membuat ambigu pada analisis data.
  • Prevalence-Incidence Bias: Memasuki pasien yang sudah lama (prevalent) dimana bisa mudah hilang dari sampling karena sudah meninggal, menyebabkan underestimasi OR.
  • Recall Bias: Melaporkan paparan faktor risiko yang lebih intens daripada kontrol sehingga menimbulkan bias pada asosiasi dimana odds akan terlihat lebih besar karena kurangnya intensitas pada kontrol.
  • Measurement Error: Adanya permasalahn mendata terutama mengenai faktor risiko dimana ada kasus underreporting karena tekanan sosial sehingga banyak yang tidak mengaku dirinya sebagai perokok ataupun riwayat diabetes sehingga terjadinya underreporting.
  • Confounding Variable: Adanya variabel ketiga yang memengaruhi peluangnya seseorang terkena penyakit TBC serta pada variabel independen seperti variabel sosio-ekonomik, HIV, dan juga pekerjaan yang tidak dimasukkan model.

4.6 Interpretasi Epidemiologis

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.

Bab 5. Kesimpulan dan Saran

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.

Daftar Pustaka

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.

Lampiran

Dashboard Kasus Tuberkulosis tahun 2021-2024: https://nanaurum.shinyapps.io/Dashboard_UTS_Epidemiologi/