
Ditujukan untuk memenuhi ujian Mata Kuliah Epidemiologi
Dosen Pengampu:
Dr. I Gede Nyoman Mindra Jaya, M.Si.
PROGRAM STUDI STATISTIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS PADJADJARAN
JATINANGOR
2025
Pada tahun 2024, Indonesia telah mencatatkan sebanyak 889 ribu notifikasi kasus tuberkulosis (TBC), namun pencapaian inisiasi pengobatan TBC sensitif obat (SO) baru mencapai 81%, masih di bawah target nasional sebesar 90%. Sedangkan, keberhasilan pengobatan TBC resisten obat (RO) baru mencapai 58%, jauh dari target 80%. Kondisi ini menegaskan bahwa penanggulangan TBC di Indonesia masih menghadapi berbagai kendala serius.
Tuberkulosis adalah penyakit menular yang disebabkan oleh bakteri Mycobacterium tuberculosis, yang menyebar melalui percikan udara dari batuk atau bersin (droplet). Indonesia menduduki peringkat kedua dunia setelah India dalam hal jumlah kasus TBC, dengan estimasi lebih dari satu juta kasus dan 125 ribu kematian per tahunnya. Provinsi Jawa Barat yang dihuni lebih dari 50 juta jiwa secara konsisten mencatat jumlah kasus TBC tertinggi di Indonesia, yakni diperkirakan mencapai kebih dari 243 ribu kasus pada tahun 2024 sehingga penelitian ini hanya akan berfokus pada kabupaten dan kota di Provinsi Jawa Barat.
Faktor epidemiologis seperti kepadatan penduduk yang tinggi, persentase rumah tidak layak huni, dan tingginya persentase penduduk miskin, dapat menjadi faktor kunci dalam penularan TBC. Oleh karena itu, dapat diteliti lebih dalam untuk melihat bagaimana penyebaran penyakit TBC dan strategi yang dapat dilakukan dalam usaha pengendalian TBC di Provinsi Jawa Barat.
Adapun rumusan masalah yang akan diteliti adalah :
Apa saja faktor agent-host-environment yang relevan terhadap kasus TBC dan bagaimana hubungan faktor risiko terhadap penyakit tersebut?
Bagaimana penyebaran kasus TBC di setiap kabupaten/kota di Jawa Barat tahun 2024 berdasarkan analisis epidemiologis?
Bagaimana simulasi desain studi epidemiologi untuk kasus TBC di Jawa Barat?
Apa implikasi hasil penelitian terhadap kebijakan pengendalian TBC yang berfokus pada intervensi epidemiologis lokal?
Guna menjawab rumusan masalah yang ada, penelitian ini bertujuan untuk :
Mengidentifikasi faktor agent-host-environment yang relevan terhadap kasus TBC dan menggambarkan hubungan faktor risiko terhadap penyakit tersebut.
Menganalisis pola sebaran kasus TBC di Jawa Barat tahun 2024 menggunakan pendekatan epidemiologis.
Merancang desain simulatif studi epidemiologi kasus TBC di Jawa Barat
Memberikan rekomendasi kebijakan pengendalian TBC di Jawa Barat.
Ruang lingkup wilayah dibatasi pada seluruh kabupaten dan kota di Provinsi Jawa Barat, sehingga hasil penelitian tidak dapat digeneralisasikan untuk provinsi lain di Indonesia.
Periode penelitian dibatasi pada tahun 2024, sehingga tidak mencakup tren kejadian TBC dari tahun-tahun sebelumnya maupun proyeksi tahun-tahun berikutnya.
Analisis yang dilakukan hanya mencakup tiga pendekatan, yaitu:
Analisis deskriptif untuk menggambarkan karakteristik dan distribusi kasus TBC,
Analisis korelasi untuk mengetahui hubungan antara faktor-faktor yang diduga berpengaruh terhadap jumlah kasus TBC, dan
Analisis prevalensi untuk mengukur tingkat penyebaran TBC di setiap wilayah kabupaten/kota, artinya penelitian ini tidak menilai hubungan sebab-akibat (kausalitas) antarvariabel.
Tuberkulosis (TBC) merupakan penyakit menular yang disebabkan oleh infeksi bakteri Mycobacterium tuberculosis. Bakteri ini menyerang jaringan paru-paru dan menyebabkan gejala berupa batuk kronis, demam, penurunan berat badan, dan sesak napas. Penularan TBC terjadi melalui udara, terutama saat penderita TBC aktif batuk, bersin, atau berbicara, sehingga droplet yang mengandung bakteri dapat terhirup oleh orang lain.
Penyakit ini menjadi masalah kesehatan masyarakat yang serius, terutama di negara berkembang, termasuk Indonesia. Faktor-faktor seperti kepadatan penduduk tinggi, kondisi rumah yang tidak layak, sanitasi buruk, serta tingkat sosial ekonomi rendah dapat memperburuk penyebaran penyakit ini.
Sebuah model yang digunakan untuk memahami penularan penyakit menular melalui tiga komponen utama: agent, host, dan environment.
Agent : Agen penyebab TBC adalah Mycobacterium tuberculosis, yaitu bakteri berbentuk batang yang tahan asam dan dapat bertahan lama di lingkungan lembab dengan ventilasi buruk. Agen ini dapat bertahan di udara selama beberapa jam dalam bentuk droplet nuklei.
Host : Inang meliputi individu dengan sistem imun lemah, seperti penderita HIV/AIDS, anak-anak, lansia, atau mereka dengan status gizi rendah. Faktor perilaku seperti merokok, konsumsi alkohol, dan kepatuhan pengobatan yang buruk juga meningkatkan risiko terinfeksi.
Environment : Kondisi lingkungan berperan penting dalam mempercepat penyebaran TBC, terutama di daerah dengan kepadatan penduduk tinggi, ventilasi rumah yang tidak memadai, kondisi rumah tidak layak huni, sanitasi buruk, dan akses layanan kesehatan terbatas.
Prevalensi
Proporsi individu yang memiliki penyakit tertentu (kasus lama + baru) pada suatu titik waktu (point prevalence) atau periode tertentu (period prevalence). Menggambarkan beban penyakit pada populasi.
\[ Prevalensi = \frac{\text{Jumlah kasus pada waktu tertentu}}{\text{Total populasi}} \times 100\% \]
Spatial dependence atau ketergantungan spasial adalah kondisi ketika nilai suatu variabel di suatu lokasi memiliki keterkaitan atau pengaruh terhadap nilai variabel di lokasi lain yang berdekatan. Dalam konteks epidemiologi TBC, hal ini berarti wilayah dengan angka kasus tinggi dapat memengaruhi wilayah yang berdekatan. Bisa terjadi karena mobilitas masyarakatnya atau kesamaan karakteristik lingkungannya.
Ketergantungan spasial dapat diuji melalui Moran’s I, Geary’s C, atau Local Indicators of Spatial Association (LISA). Apabila pengujian yang dilakukan menghasilkan autokorelasi spasial positif, maka kasus TBC dikatakan cenderung mengelompok (clustered) di wilayah tertentu, bukan menyebar acak. Informasi ini penting untuk digunakan dalam rancangan pengendalian TBC melalui intervensi berbasis wilayah (spatial targeting).
Ketergantungan spasial dapat diuji melalui beberapa metode statistik (Anselin, 1995):
A. Moran’s I (Global) - Mengukur autokorelasi spasial secara keseluruhan - Nilai: -1 (dispersi sempurna) hingga +1 (klaster sempurna) - I > 0: autokorelasi positif (pengelompokan) - I < 0: autokorelasi negatif (dispersi) - I ≈ 0: distribusi acak
B. Geary’s C - Alternatif dari Moran’s I - Nilai: 0 (klaster sempurna) hingga 2 (dispersi sempurna)
C. Local Indicators of Spatial Association (LISA) - Mengidentifikasi klaster lokal - Mendeteksi hotspot (High-High) dan coldspot (Low-Low)
Interpretasi Hasil: Apabila pengujian menghasilkan autokorelasi spasial positif yang signifikan, maka kasus TBC dikatakan cenderung mengelompok (clustered) di wilayah tertentu, bukan menyebar acak. Informasi ini penting untuk merancang pengendalian TBC melalui intervensi berbasis wilayah (spatial targeting) (Pfeiffer et al., 2008).
Matriks bobot spasial (spatial weights matrix, W) digunakan untuk menggambarkan hubungan kedekatan antar wilayah dalam analisis spasial (Bivand et al., 2013). Matriks ini mengkuantifikasi seberapa kuat pengaruh suatu wilayah terhadap wilayah lainnya.
A. Contiguity-based Weights (Berdasarkan Batas Wilayah) - Rook contiguity: Wilayah dianggap tetangga jika berbagi sisi batas - Queen contiguity: Wilayah dianggap tetangga jika berbagi sisi atau titik sudut - Bishop contiguity: Wilayah dianggap tetangga jika berbagi titik sudut saja
B. Distance-based Weights (Berdasarkan Jarak) - Menggunakan jarak Euclidean antar centroid wilayah - Bobot menurun seiring jarak meningkat - Formula umum: \(w_{ij} = \frac{1}{d_{ij}^{\alpha}}\) (α biasanya = 2)
C. K-Nearest Neighbors (KNN) - Setiap wilayah memiliki k tetangga terdekat - Mengatasi masalah wilayah terpencil tanpa tetangga
Dalam konteks TBC di kabupaten/kota Jawa Barat, penelitian ini menggunakan queen contiguity karena: - Lebih mencerminkan interaksi sosial-ekonomi antar wilayah - Memperhitungkan wilayah yang hanya bersinggungan di sudut - Sesuai dengan pola mobilitas penduduk Jawa Barat
Spatial econometrics merupakan cabang dari ekonometrika yang mengakomodasi pengaruh spasial dalam model statistik (Anselin, 1988). Dalam analisis penyakit seperti TBC, pendekatan ini digunakan untuk memahami apakah penyebaran penyakit di satu wilayah memiliki hubungan dengan wilayah lain (spatial spillover effect).
A. Spatial Lag Model (SLM) \[y = \rho Wy + X\beta + \varepsilon\]
B. Spatial Error Model (SEM) \[y = X\beta + \lambda W\varepsilon + \xi\]
C. Spatial Durbin Model (SDM) \[y = \rho Wy + X\beta + WX\theta + \varepsilon\]
Catatan: Dalam penelitian ini, analisis spatial econometrics tidak dilakukan karena fokus pada analisis deskriptif dan eksplorasi pola spasial. Model ekonometrika spasial dapat menjadi penelitian lanjutan untuk memahami hubungan kausal antara faktor risiko dan prevalensi TBC dengan mempertimbangkan efek spasial.
Matriks bobot spasial (W) digunakan untuk menggambarkan hubungan kedekatan antarwilayah. Matriks ini juga dapat menunjukkan seberapa kuat pengaruh antarwilayah tersebut. Beberapa metode umum dalam pembentukan matriks bobot spasial antara lain: Contiguity-based weights (berdasarkan batas wilayah), Distance-based weights (berdasarkan jarak), dan K-nearest neighbors (KNN) yang menganggap setiap wilayah bertetangga dengan k wilayah terdekatnya.
Dalam konteks TBC di kabupaten/kota Jawa Barat, matriks bobot spasial penting untuk mengidentifikasi pola penyebaran kasus antarwilayah.
Spatial econometrics merupakan cabang dari ekonometrika yang mengakomodasi pengaruh spasial dalam model statistik. Dalam analisis penyakit seperti TBC, pendekatan ini digunakan untuk memahami apakah penyebaran penyakit di satu wilayah memiliki hubungan dengan wilayah lain (spatial spillover effect). Model-model umum dalam ekonometrika spasial meliputi: Spatial Lag Model (SLM), Spatial Error Model (SEM), dan Spatial Durbin Model (SDM).
Pengaplikasian model ini dapat membantu memahami pola spasial penyebaran TBC secara lebih mendalam dan memberikan dasar pengetahuan dalam usulan pembentukan kebijakan kesehatan yang lebih tepat sasaran di kabupaten/kota Provinsi Jawa Barat.
1. Kepadatan Penduduk : Dapat meningkatkan risiko transmisi droplet.
2. Kemiskinan : Berkaitan dengan gizi buruk dan akses kesehatan yang terbatas.
3. Kondisi Tempat Tinggal : Kondisi rumah minim ventilasi meningkatkan risiko penularan.
4. Status Sosial-Ekonomi : Status pendidikan dan penghasilan rendah.
Berikut adalah diagram faktor risiko terhadap penyakit Tuberkulosis :
## Warning: package 'DiagrammeR' was built under R version 4.3.3
Studi simulatif dilakukan menggunakan desain cross-sectional. Desain ini mengukur paparan dan outcome bersamaan, menggambarkan prevalensi suatu populasi, mengidentifikasi dengan jelas faktor yang berkaitan. Namun, desain ini terbatas dalam menentukan hubungan kausal temporal karena hanya dilakukan pada satu waktu.
Penelitian ini menggunakan desain studi ekologi
dengan pendekatan deskriptif kuantitatif.
Data bersifat agregat, yaitu data per kabupaten/kota di Provinsi Jawa
Barat yang menggambarkan hubungan antara faktor sosial ekonomi dan
kepadatan penduduk dengan jumlah kasus Tuberkulosis
(TBC).
Penelitian ini menggunakan data sekunder yang
diperoleh dari: - Badan Pusat Statistik (BPS) Provinsi
Jawa Barat
- Dinas Kesehatan Provinsi Jawa Barat
- Publikasi resmi profil kesehatan dan kependudukan tahun terakhir.
Variabel yang digunakan:
| Variabel | Keterangan | Jenis Data |
|---|---|---|
| Jumlah Penduduk | Total populasi per kabupaten/kota | Kuantitatif |
| Rumah Layak Huni (%) | Persentase rumah tangga layak huni | Kuantitatif |
| Persentase Penduduk Miskin (%) | Proporsi penduduk miskin | Kuantitatif |
| Jumlah Kasus TBC | Kasus Tuberkulosis yang dilaporkan | Kuantitatif |
| Kepadatan Penduduk (Jiwa/KM²) | Jumlah jiwa per km² | Kuantitatif |
Dalam penelitian ini digunakan dua jenis ukuran epidemiologi, yaitu ukuran frekuensi dan ukuran asosiasi, dengan rumus sebagai berikut:
Prevalensi
Menggambarkan proporsi individu yang menderita penyakit dalam suatu populasi pada waktu tertentu.
Rumus: \[ \text{Prevalensi} = \frac{\text{Jumlah Kasus Lama + Baru}}{\text{Jumlah Penduduk}} \times 100\% \]
Risk Ratio (Relative Risk, RR)
Menggambarkan perbandingan risiko terjadinya penyakit antara kelompok terpapar dan tidak terpapar.
Rumus: \[ RR = \frac{a/(a+b)}{c/(c+d)} \]
Keterangan:
Interpretasi:
Odds Ratio (OR)
Menggambarkan peluang terjadinya penyakit pada kelompok terpapar dibandingkan dengan kelompok tidak terpapar.
Rumus: \[ OR = \frac{a/b}{c/d} = \frac{ad}{bc} \]
Interpretasi:
# Paket
library(readxl)
library(dplyr)
library(ggplot2)
library(sf)
library(tmap)
library(spdep)
library(knitr)Analisis deskriptif menggambarkan karakteristik jumlah penduduk, kepadatan, kemiskinan, dan kasus TBC per kabupaten/kota di Jawa Barat.
# data
data <- read_excel("C:\\Users\\reifa\\Downloads\\Shiny\\DataTBC.xlsx")
# ubah nama kolom
data <- data %>%
rename(
KABUPATEN_KOTA = "KABUPATEN/KOTA",
Jumlah_Penduduk = "Jumlah Penduduk",
Rumah_Layak_Huni = "Rumah Layak Huni",
Persentase_Penduduk_Miskin = "Persentase Penduduk Miskin",
Jumlah_Kasus_TBC = "Jumlah Kasus TBC",
Kepadatan_Penduduk = "Kepadatan Penduduk (Jiwa/KM2)"
)
# cek hasilnya
head(data)## # A tibble: 6 × 6
## KABUPATEN_KOTA Jumlah_Penduduk Rumah_Layak_Huni Persentase_Penduduk_M…¹
## <chr> <dbl> <dbl> <dbl>
## 1 KABUPATEN BOGOR 5682300 46.7 7.05
## 2 KABUPATEN SUKABUMI 2828020 32.8 6.87
## 3 KABUPATEN CIANJUR 2584990 38.3 10.1
## 4 KABUPATEN BANDUNG 3753120 54.2 6.19
## 5 KABUPATEN GARUT 2716950 34.6 9.68
## 6 KABUPATEN TASIKMALAYA 1920920 37.6 10.2
## # ℹ abbreviated name: ¹Persentase_Penduduk_Miskin
## # ℹ 2 more variables: Jumlah_Kasus_TBC <dbl>, Kepadatan_Penduduk <dbl>
# Validasi kolom
req_cols <- c("KABUPATEN_KOTA","Jumlah_Penduduk","Rumah_Layak_Huni",
"Persentase_Penduduk_Miskin","Jumlah_Kasus_TBC","Kepadatan_Penduduk")
stopifnot(all(req_cols %in% names(data)))
# Prevalensi TBC per 100.000
data <- data %>%
mutate(Prevalensi_TBC_per100k = (Jumlah_Kasus_TBC / Jumlah_Penduduk) * 1e5)library(readxl)
library(dplyr)
library(knitr)
library(kableExtra)
# Baca data
data_tbc <- read_excel("C:\\Users\\reifa\\Downloads\\Shiny\\DataTBC.xlsx")
data_tbc <- data_tbc %>%
rename(
Kabupaten_Kota = "KABUPATEN/KOTA",
Jumlah_Penduduk = "Jumlah Penduduk",
Rumah_Layak_Huni = "Rumah Layak Huni",
Persen_Penduduk_Miskin = "Persentase Penduduk Miskin",
Jumlah_Kasus_TBC = "Jumlah Kasus TBC",
Kepadatan_Penduduk = "Kepadatan Penduduk (Jiwa/KM2)"
)
# Hitung prevalensi per 100.000 penduduk
data_tbc <- data_tbc %>%
mutate(
Prevalensi_per_100k = (Jumlah_Kasus_TBC / Jumlah_Penduduk) * 100000,
Tipe_Wilayah = ifelse(grepl("KOTA", Kabupaten_Kota, ignore.case = TRUE), "Kota", "Kabupaten")
)
# Tabel hasil prevalensi
tabel_prev <- data_tbc %>%
select(Kabupaten_Kota, Tipe_Wilayah, Jumlah_Penduduk, Jumlah_Kasus_TBC, Prevalensi_per_100k)
kable(tabel_prev,
caption = "Tabel 2. Prevalensi Kasus TBC per 100.000 Penduduk di Provinsi Jawa Barat (2024)",
digits = 2,
format.args = list(big.mark = ",")) %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)| Kabupaten_Kota | Tipe_Wilayah | Jumlah_Penduduk | Jumlah_Kasus_TBC | Prevalensi_per_100k |
|---|---|---|---|---|
| KABUPATEN BOGOR | Kabupaten | 5,682,300 | 29,110 | 512.29 |
| KABUPATEN SUKABUMI | Kabupaten | 2,828,020 | 12,411 | 438.86 |
| KABUPATEN CIANJUR | Kabupaten | 2,584,990 | 12,197 | 471.84 |
| KABUPATEN BANDUNG | Kabupaten | 3,753,120 | 14,012 | 373.34 |
| KABUPATEN GARUT | Kabupaten | 2,716,950 | 9,516 | 350.25 |
| KABUPATEN TASIKMALAYA | Kabupaten | 1,920,920 | 4,881 | 254.10 |
| KABUPATEN CIAMIS | Kabupaten | 1,259,230 | 3,477 | 276.12 |
| KABUPATEN KUNINGAN | Kabupaten | 1,213,930 | 4,045 | 333.22 |
| KABUPATEN CIREBON | Kabupaten | 2,387,960 | 9,587 | 401.47 |
| KABUPATEN MAJALENGKA | Kabupaten | 1,352,540 | 4,517 | 333.96 |
| KABUPATEN SUMEDANG | Kabupaten | 1,187,130 | 3,930 | 331.05 |
| KABUPATEN INDRAMAYU | Kabupaten | 1,914,040 | 6,092 | 318.28 |
| KABUPATEN SUBANG | Kabupaten | 1,663,160 | 6,321 | 380.06 |
| KABUPATEN PURWAKARTA | Kabupaten | 1,050,340 | 4,687 | 446.24 |
| KABUPATEN KARAWANG | Kabupaten | 2,554,380 | 13,474 | 527.49 |
| KABUPATEN BEKASI | Kabupaten | 3,273,870 | 15,458 | 472.16 |
| KABUPATEN BANDUNG BARAT | Kabupaten | 1,884,190 | 4,569 | 242.49 |
| KABUPATEN PANGANDARAN | Kabupaten | 434,100 | 968 | 222.99 |
| KOTA BOGOR | Kota | 1,078,350 | 11,418 | 1,058.84 |
| KOTA SUKABUMI | Kota | 365,740 | 3,477 | 950.68 |
| KOTA BANDUNG | Kota | 2,528,160 | 18,627 | 736.78 |
| KOTA CIREBON | Kota | 344,850 | 4,122 | 1,195.30 |
| KOTA BEKASI | Kota | 2,644,060 | 13,640 | 515.87 |
| KOTA DEPOK | Kota | 2,163,640 | 8,422 | 389.25 |
| KOTA CIMAHI | Kota | 598,700 | 4,513 | 753.80 |
| KOTA TASIKMALAYA | Kota | 750,730 | 4,693 | 625.12 |
| KOTA BANJAR | Kota | 209,790 | 1,519 | 724.06 |
Berikut ini disajikan 10 kabupaten/kota dengan angka prevalensi TBC
tertinggi di Provinsi Jawa Barat tahun 2024.
Nilai insidensi dihitung sebagai pendekatan dengan membandingkan jumlah
kasus terhadap total penduduk, karena data yang digunakan bersifat
agregat tahunan.
# 10 wilayah dengan prevalensi tertinggi
top_prevalensi <- data_tbc %>%
arrange(desc(Prevalensi_per_100k)) %>%
select(Kabupaten_Kota, Jumlah_Penduduk, Jumlah_Kasus_TBC,
Prevalensi_per_100k, Kepadatan_Penduduk) %>%
head(10)
kable(top_prevalensi,
digits = 2,
col.names = c("Wilayah", "Populasi", "Kasus TBC",
"Prevalensi/100k", "Kepadatan"),
caption = "Tabel 3. 10 Wilayah dengan Angka Prevalensi TBC Tertinggi",
format.args = list(big.mark = ",")) %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed")) %>%
row_spec(1:3, bold = TRUE, background = "#ffcccc")| Wilayah | Populasi | Kasus TBC | Prevalensi/100k | Kepadatan |
|---|---|---|---|---|
| KOTA CIREBON | 344,850 | 4,122 | 1,195.30 | 9,036.00 |
| KOTA BOGOR | 1,078,350 | 11,418 | 1,058.84 | 10,273.00 |
| KOTA SUKABUMI | 365,740 | 3,477 | 950.68 | 7.66 |
| KOTA CIMAHI | 598,700 | 4,513 | 753.80 | 13,716.00 |
| KOTA BANDUNG | 2,528,160 | 18,627 | 736.78 | 15,557.00 |
| KOTA BANJAR | 209,790 | 1,519 | 724.06 | 1,598.00 |
| KOTA TASIKMALAYA | 750,730 | 4,693 | 625.12 | 4,191.00 |
| KABUPATEN KARAWANG | 2,554,380 | 13,474 | 527.49 | 1,365.00 |
| KOTA BEKASI | 2,644,060 | 13,640 | 515.87 | 12,074.00 |
| KABUPATEN BOGOR | 5,682,300 | 29,110 | 512.29 | 1,942.00 |
Sebelum melakukan uji korelasi, perlu dilakukan uji normalitas untuk menentukan jenis uji korelasi yang tepat (Pearson untuk data normal, Spearman untuk data tidak normal).
library(nortest)
# Uji normalitas menggunakan Shapiro-Wilk
normalitas <- data.frame(
Variabel = c("Prevalensi TBC", "Kepadatan Penduduk", "% Kemiskinan", "% Rumah Layak Huni"),
Statistik = NA,
P_value = NA,
Distribusi = NA
)
# Test Prevalensi
test_prev <- shapiro.test(data_tbc$Prevalensi_per_100k)
normalitas[1, 2:3] <- c(test_prev$statistic, test_prev$p.value)
# Test Kepadatan
test_kepadatan <- shapiro.test(data_tbc$Kepadatan_Penduduk)
normalitas[2, 2:3] <- c(test_kepadatan$statistic, test_kepadatan$p.value)
# Test Kemiskinan
test_miskin <- shapiro.test(data_tbc$Persen_Penduduk_Miskin)
normalitas[3, 2:3] <- c(test_miskin$statistic, test_miskin$p.value)
# Test Rumah Layak Huni
test_rumah <- shapiro.test(data_tbc$Rumah_Layak_Huni)
normalitas[4, 2:3] <- c(test_rumah$statistic, test_rumah$p.value)
# Interpretasi
normalitas$Distribusi <- ifelse(normalitas$P_value > 0.05, "Normal", "Tidak Normal")
kable(normalitas,
digits = 4,
caption = "Tabel 5. Hasil Uji Normalitas Shapiro-Wilk",
col.names = c("Variabel", "W Statistik", "P-value", "Distribusi")) %>%
kable_styling(bootstrap_options = c("striped", "hover")) %>%
row_spec(which(normalitas$P_value < 0.05), background = "#fff3cd")| Variabel | W Statistik | P-value | Distribusi |
|---|---|---|---|
| Prevalensi TBC | 0.8564 | 0.0015 | Tidak Normal |
| Kepadatan Penduduk | 0.7058 | 0.0000 | Tidak Normal |
| % Kemiskinan | 0.9612 | 0.3938 | Normal |
| % Rumah Layak Huni | 0.9336 | 0.0845 | Normal |
##
## **Interpretasi:**
## - P-value < 0.05 menunjukkan data tidak berdistribusi normal
## - Karena ada variabel yang tidak normal, akan digunakan **uji korelasi Spearman**
## Warning: package 'gridExtra' was built under R version 4.3.3
##
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
##
## combine
# 1. Scatter plot Kepadatan vs Prevalensi
p1 <- ggplot(data_tbc, aes(x = Kepadatan_Penduduk, y = Prevalensi_per_100k)) +
geom_point(aes(color = Tipe_Wilayah), size = 3, alpha = 0.7) +
geom_smooth(method = "lm", se = TRUE, color = "darkblue", linetype = "dashed") +
scale_color_manual(values = c("Kabupaten" = "#E63946", "Kota" = "#457B9D")) +
labs(title = "Hubungan Kepadatan Penduduk dengan Prevalensi TBC",
x = "Kepadatan Penduduk (Jiwa/km²)",
y = "Prevalensi per 100.000 penduduk",
color = "Tipe Wilayah") +
theme_minimal() +
theme(legend.position = "bottom",
plot.title = element_text(hjust = 0.5, face = "bold"))
# 2. Scatter plot Kemiskinan vs Prevalensi
p2 <- ggplot(data_tbc, aes(x = Persen_Penduduk_Miskin, y = Prevalensi_per_100k)) +
geom_point(aes(color = Tipe_Wilayah), size = 3, alpha = 0.7) +
geom_smooth(method = "lm", se = TRUE, color = "darkred", linetype = "dashed") +
scale_color_manual(values = c("Kabupaten" = "#E63946", "Kota" = "#457B9D")) +
labs(title = "Hubungan % Penduduk Miskin dengan Prevalensi TBC",
x = "Persentase Penduduk Miskin (%)",
y = "Prevalensi per 100.000 penduduk",
color = "Tipe Wilayah") +
theme_minimal() +
theme(legend.position = "bottom",
plot.title = element_text(hjust = 0.5, face = "bold"))
# 3. Scatter plot Rumah Layak Huni vs Prevalensi
p3 <- ggplot(data_tbc, aes(x = Rumah_Layak_Huni, y = Prevalensi_per_100k)) +
geom_point(aes(color = Tipe_Wilayah), size = 3, alpha = 0.7) +
geom_smooth(method = "lm", se = TRUE, color = "darkgreen", linetype = "dashed") +
scale_color_manual(values = c("Kabupaten" = "#E63946", "Kota" = "#457B9D")) +
labs(title = "Hubungan % Rumah Layak Huni dengan Prevalensi TBC",
x = "Persentase Rumah Layak Huni (%)",
y = "Prevalensi per 100.000 penduduk",
color = "Tipe Wilayah") +
theme_minimal() +
theme(legend.position = "bottom",
plot.title = element_text(hjust = 0.5, face = "bold"))
# Tampilkan semua plot
grid.arrange(p1, p2, p3, ncol = 1)## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
Analisis spasial merupakan pendekatan penting dalam epidemiologi untuk memahami pola geografis penyebaran penyakit. Dalam konteks tuberkulosis (TBC), analisis spasial membantu mengidentifikasi area-area dengan risiko tinggi (hotspot), mendeteksi pola pengelompokan kasus (clustering), dan memahami hubungan spasial antara prevalensi TBC dengan faktor-faktor risiko lingkungan dan sosial ekonomi.
Analisis spasial yang dilakukan dalam penelitian ini mencakup beberapa metode statistik spasial yang saling melengkapi.
library(readxl)
library(dplyr)
library(sf)
library(tmap)
library(spdep)
library(ggplot2)
library(knitr)
library(kableExtra)
library(viridis)
library(RColorBrewer)
# Baca data TBC
data_tbc <- read_excel("C:\\Users\\reifa\\Downloads\\Shiny\\DataTBC.xlsx")
# Sesuaikan nama kolom
data_tbc <- data_tbc %>%
rename(
Kabupaten_Kota = "KABUPATEN/KOTA",
Jumlah_Penduduk = "Jumlah Penduduk",
Rumah_Layak_Huni = "Rumah Layak Huni",
Persen_Penduduk_Miskin = "Persentase Penduduk Miskin",
Jumlah_Kasus_TBC = "Jumlah Kasus TBC",
Kepadatan_Penduduk = "Kepadatan Penduduk (Jiwa/KM2)"
)
# Hitung prevalensi dan klasifikasi
data_tbc <- data_tbc %>%
mutate(
Prevalensi_per_100k = (Jumlah_Kasus_TBC / Jumlah_Penduduk) * 100000,
Tipe_Wilayah = ifelse(grepl("KOTA", Kabupaten_Kota, ignore.case = TRUE),
"Kota", "Kabupaten"),
Kategori_Prevalensi = cut(Prevalensi_per_100k,
breaks = c(0, 500, 1000, 1500, Inf),
labels = c("Rendah", "Sedang", "Tinggi", "Sangat Tinggi"),
include.lowest = TRUE)
)
# Baca shapefile Jawa Barat dari GADM
jabar_shp <- st_read("C:\\Users\\reifa\\Downloads\\Shiny\\gadm41_IDN_2.shp")## Reading layer `gadm41_IDN_2' from data source
## `C:\Users\reifa\Downloads\Shiny\gadm41_IDN_2.shp' using driver `ESRI Shapefile'
## Simple feature collection with 502 features and 13 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 95.00971 ymin: -11.00761 xmax: 141.0194 ymax: 6.076941
## Geodetic CRS: WGS 84
# Filter hanya Jawa Barat
jabar_shp <- jabar_shp %>%
filter(NAME_1 == "Jawa Barat")
# Lihat nama kabupaten/kota di shapefile
print("Nama wilayah di shapefile:")## [1] "Nama wilayah di shapefile:"
## [1] "Bandung" "Bandung Barat" "Banjar" "Bekasi"
## [5] "Bogor" "Ciamis" "Cianjur" "Cimahi"
## [9] "Cirebon" "Depok" "Garut" "Indramayu"
## [13] "Karawang" "Kota Bandung" "Kota Bekasi" "Kota Bogor"
## [17] "Kota Cirebon" "Kota Sukabumi" "Kota Tasikmalaya" "Kuningan"
## [21] "Majalengka" "Purwakarta" "Subang" "Sukabumi"
## [25] "Sumedang" "Tasikmalaya" "Waduk Cirata"
# Buat fungsi untuk mencocokkan nama
data_tbc <- data_tbc %>%
mutate(
Nama_Matching = case_when(
# Kabupaten
Kabupaten_Kota == "KABUPATEN BOGOR" ~ "Bogor",
Kabupaten_Kota == "KABUPATEN SUKABUMI" ~ "Sukabumi",
Kabupaten_Kota == "KABUPATEN CIANJUR" ~ "Cianjur",
Kabupaten_Kota == "KABUPATEN BANDUNG" ~ "Bandung",
Kabupaten_Kota == "KABUPATEN GARUT" ~ "Garut",
Kabupaten_Kota == "KABUPATEN TASIKMALAYA" ~ "Tasikmalaya",
Kabupaten_Kota == "KABUPATEN CIAMIS" ~ "Ciamis",
Kabupaten_Kota == "KABUPATEN KUNINGAN" ~ "Kuningan",
Kabupaten_Kota == "KABUPATEN CIREBON" ~ "Cirebon",
Kabupaten_Kota == "KABUPATEN MAJALENGKA" ~ "Majalengka",
Kabupaten_Kota == "KABUPATEN SUMEDANG" ~ "Sumedang",
Kabupaten_Kota == "KABUPATEN INDRAMAYU" ~ "Indramayu",
Kabupaten_Kota == "KABUPATEN SUBANG" ~ "Subang",
Kabupaten_Kota == "KABUPATEN PURWAKARTA" ~ "Purwakarta",
Kabupaten_Kota == "KABUPATEN KARAWANG" ~ "Karawang",
Kabupaten_Kota == "KABUPATEN BEKASI" ~ "Bekasi",
Kabupaten_Kota == "KABUPATEN BANDUNG BARAT" ~ "Bandung Barat",
Kabupaten_Kota == "KABUPATEN PANGANDARAN" ~ "Pangandaran",
# Kota
Kabupaten_Kota == "KOTA BOGOR" ~ "Kota Bogor",
Kabupaten_Kota == "KOTA SUKABUMI" ~ "Kota Sukabumi",
Kabupaten_Kota == "KOTA BANDUNG" ~ "Kota Bandung",
Kabupaten_Kota == "KOTA CIREBON" ~ "Kota Cirebon",
Kabupaten_Kota == "KOTA BEKASI" ~ "Kota Bekasi",
Kabupaten_Kota == "KOTA DEPOK" ~ "Kota Depok",
Kabupaten_Kota == "KOTA CIMAHI" ~ "Kota Cimahi",
Kabupaten_Kota == "KOTA TASIKMALAYA" ~ "Kota Tasikmalaya",
Kabupaten_Kota == "KOTA BANJAR" ~ "Kota Banjar",
TRUE ~ Kabupaten_Kota
)
)
# Gabungkan data dengan shapefile
jabar_data <- jabar_shp %>%
left_join(data_tbc, by = c("NAME_2" = "Nama_Matching"))
# Cek data yang tidak cocok
missing_data <- jabar_data %>%
filter(is.na(Prevalensi_per_100k)) %>%
st_drop_geometry() %>%
select(NAME_2)
if(nrow(missing_data) > 0) {
cat("Wilayah yang tidak cocok:\n")
print(missing_data)
}## Wilayah yang tidak cocok:
## NAME_2
## 1 Banjar
## 2 Cimahi
## 3 Depok
## 4 Waduk Cirata
# Set tmap mode
tmap_mode("plot")
# Peta prevalensi TBC
peta1 <- tm_shape(jabar_data) +
tm_fill("Prevalensi_per_100k",
title = "Prevalensi\nper 100.000",
palette = "YlOrRd",
style = "jenks",
n = 5,
legend.hist = TRUE) +
tm_borders(col = "white", lwd = 1) +
tm_text("NAME_2", size = 0.5, col = "black", alpha = 0.7) +
tm_layout(
main.title = "Peta Prevalensi Kasus TBC per 100.000 Penduduk\nProvinsi Jawa Barat (2024)",
main.title.size = 1.2,
legend.outside = TRUE,
legend.outside.position = "right",
frame = FALSE
) +
tm_compass(position = c("left", "bottom")) +
tm_scale_bar(position = c("left", "bottom"))
print(peta1)peta2 <- tm_shape(jabar_data) +
tm_fill("Kategori_Prevalensi",
title = "Kategori\nPrevalensi",
palette = c("Rendah" = "#fee5d9",
"Sedang" = "#fcae91",
"Tinggi" = "#fb6a4a",
"Sangat Tinggi" = "#cb181d")) +
tm_borders(col = "white", lwd = 1) +
tm_text("NAME_2", size = 0.5, col = "black", alpha = 0.7) +
tm_layout(
main.title = "Peta Kategori Prevalensi TBC di Jawa Barat (2024)",
main.title.size = 1.2,
legend.outside = TRUE,
legend.outside.position = "right",
frame = FALSE
) +
tm_compass(position = c("left", "bottom")) +
tm_scale_bar(position = c("left", "bottom"))
print(peta2)## Cek Missing Values:
## NA dalam Prevalensi: 4
## NA dalam geometri: 0
# Filter data yang lengkap untuk analisis spasial
jabar_complete <- jabar_data %>%
filter(!is.na(Prevalensi_per_100k) &
!is.na(Jumlah_Kasus_TBC) &
!is.na(Jumlah_Penduduk))
cat("Jumlah wilayah setelah filter:", nrow(jabar_complete), "\n")## Jumlah wilayah setelah filter: 23
## Wilayah yang dikeluarkan:
missing_areas <- jabar_data %>%
filter(is.na(Prevalensi_per_100k)) %>%
st_drop_geometry() %>%
select(NAME_2)
if(nrow(missing_areas) > 0) {
print(missing_areas)
} else {
cat("Tidak ada wilayah yang dikeluarkan\n")
}## NAME_2
## 1 Banjar
## 2 Cimahi
## 3 Depok
## 4 Waduk Cirata
# Buat matriks tetangga (queen contiguity)
nb <- poly2nb(jabar_complete, queen = TRUE)
# Cek wilayah tanpa tetangga
if(any(card(nb) == 0)) {
cat("\nPeringatan: Ada wilayah tanpa tetangga:\n")
no_neighbor <- which(card(nb) == 0)
print(jabar_complete$NAME_2[no_neighbor])
}
# Konversi ke listw
lw <- nb2listw(nb, style = "W", zero.policy = TRUE)
# Hitung Moran's I
moran_test <- moran.test(jabar_complete$Prevalensi_per_100k, lw, zero.policy = TRUE)
# Tampilkan hasil dengan format yang lebih baik
cat("\n")## ╔═══════════════════════════════════════════════════════════╗
## ║ UJI AUTOKORELASI SPASIAL (MORAN'S I) ║
## ╚═══════════════════════════════════════════════════════════╝
## Statistik Moran's I:
## ─────────────────────────────────────────────────────────────
## Moran's I : 0.0333
## Expected Value : -0.0455
## Variance : 0.020390
## Standard Deviate : 0.5513
## P-value : 0.2907
## ─────────────────────────────────────────────────────────────
## INTERPRETASI:
## ─────────────────────────────────────────────────────────────
if(moran_test$p.value < 0.001) {
sig_level <- "sangat signifikan (p < 0.001)"
} else if(moran_test$p.value < 0.01) {
sig_level <- "sangat signifikan (p < 0.01)"
} else if(moran_test$p.value < 0.05) {
sig_level <- "signifikan (p < 0.05)"
} else {
sig_level <- "tidak signifikan (p ≥ 0.05)"
}
if(moran_test$p.value < 0.05) {
if(moran_test$estimate[1] > 0) {
cat("✓ Terdapat autokorelasi spasial POSITIF yang", sig_level, "\n\n")
cat(" Artinya:\n")
cat(" • Wilayah dengan prevalensi TBC tinggi cenderung bertetangga\n")
cat(" dengan wilayah prevalensi tinggi (clustering tinggi)\n")
cat(" • Wilayah dengan prevalensi TBC rendah cenderung bertetangga\n")
cat(" dengan wilayah prevalensi rendah (clustering rendah)\n")
cat(" • Pola penyebaran TBC menunjukkan pengelompokan spasial\n")
cat(" • Diperlukan intervensi berbasis klaster geografis\n")
} else {
cat("✓ Terdapat autokorelasi spasial NEGATIF yang", sig_level, "\n\n")
cat(" Artinya:\n")
cat(" • Wilayah dengan prevalensi tinggi cenderung bertetangga\n")
cat(" dengan wilayah prevalensi rendah (pola dispersi)\n")
cat(" • Pola penyebaran TBC bersifat heterogen secara spasial\n")
}
} else {
cat("✗ Tidak terdapat autokorelasi spasial yang signifikan\n\n")
cat(" Artinya:\n")
cat(" • Pola sebaran kasus TBC bersifat acak (random)\n")
cat(" • Tidak ada pola pengelompokan atau dispersi yang jelas\n")
cat(" • Prevalensi TBC di suatu wilayah tidak bergantung pada\n")
cat(" prevalensi di wilayah tetangganya\n")
}## ✗ Tidak terdapat autokorelasi spasial yang signifikan
##
## Artinya:
## • Pola sebaran kasus TBC bersifat acak (random)
## • Tidak ada pola pengelompokan atau dispersi yang jelas
## • Prevalensi TBC di suatu wilayah tidak bergantung pada
## prevalensi di wilayah tetangganya
## ─────────────────────────────────────────────────────────────
# Buat Moran Scatterplot
par(mar = c(5, 5, 4, 2))
moran_plot <- moran.plot(jabar_complete$Prevalensi_per_100k, lw,
zero.policy = TRUE,
labels = jabar_complete$NAME_2,
xlab = "Prevalensi TBC (standardized)",
ylab = "Spatially Lagged Prevalensi TBC (standardized)",
main = "Moran Scatterplot: Autokorelasi Spasial Prevalensi TBC\ndi Jawa Barat (2024)",
cex.main = 1.2,
cex.lab = 1.1)
# Tambahkan legend
legend("topleft",
legend = c("High-High", "Low-High", "Low-Low", "High-Low"),
pch = 19,
col = c("red", "pink", "lightblue", "lightgreen"),
title = "Kuadran",
bty = "n")
# Tambahkan informasi Moran's I
mtext(sprintf("Moran's I = %.4f, p-value = %s",
moran_result$statistic,
format.pval(moran_result$p_value, digits = 3)),
side = 3, line = 0.5, cex = 0.9, col = "blue")# Hitung Local Moran's I
local_moran <- localmoran(jabar_complete$Prevalensi_per_100k, lw, zero.policy = TRUE)
# Tambahkan ke data
jabar_complete$local_moran_i <- local_moran[,1]
jabar_complete$local_moran_z <- local_moran[,4]
jabar_complete$local_moran_p <- local_moran[,5]
# Standardisasi nilai
mean_prev <- mean(jabar_complete$Prevalensi_per_100k, na.rm = TRUE)
jabar_complete$prev_std <- scale(jabar_complete$Prevalensi_per_100k)
jabar_complete$prev_lag_std <- lag.listw(lw, jabar_complete$prev_std, zero.policy = TRUE)
# Klasifikasi klaster LISA dengan kriteria yang lebih ketat
jabar_complete <- jabar_complete %>%
mutate(
lisa_cluster = case_when(
local_moran_p > 0.05 ~ "Not Significant",
local_moran_i > 0 & prev_std > 0 & Prevalensi_per_100k > mean_prev ~ "High-High",
local_moran_i > 0 & prev_std < 0 & Prevalensi_per_100k < mean_prev ~ "Low-Low",
local_moran_i < 0 & prev_std > 0 & Prevalensi_per_100k > mean_prev ~ "High-Low",
local_moran_i < 0 & prev_std < 0 & Prevalensi_per_100k < mean_prev ~ "Low-High",
TRUE ~ "Not Significant"
),
lisa_sig = case_when(
local_moran_p < 0.001 ~ "***",
local_moran_p < 0.01 ~ "**",
local_moran_p < 0.05 ~ "*",
TRUE ~ "ns"
)
)
# Ringkasan klaster LISA
cat("\n╔═══════════════════════════════════════════════════════════╗\n")##
## ╔═══════════════════════════════════════════════════════════╗
## ║ RINGKASAN ANALISIS LISA CLUSTER ║
## ╚═══════════════════════════════════════════════════════════╝
lisa_summary <- jabar_complete %>%
st_drop_geometry() %>%
group_by(lisa_cluster) %>%
summarise(
Jumlah = n(),
Mean_Prevalensi = mean(Prevalensi_per_100k, na.rm = TRUE),
Min_Prevalensi = min(Prevalensi_per_100k, na.rm = TRUE),
Max_Prevalensi = max(Prevalensi_per_100k, na.rm = TRUE)
) %>%
arrange(desc(Mean_Prevalensi))
kable(lisa_summary,
caption = "Ringkasan Klaster LISA Prevalensi TBC",
digits = 2,
col.names = c("Tipe Klaster", "Jumlah Wilayah", "Mean", "Min", "Max"),
format.args = list(big.mark = ",")) %>%
kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)| Tipe Klaster | Jumlah Wilayah | Mean | Min | Max |
|---|---|---|---|---|
| Not Significant | 22 | 509.63 | 242.49 | 1,195.30 |
| Low-Low | 1 | 333.96 | 333.96 | 333.96 |
lisa_table <- jabar_complete %>%
st_drop_geometry() %>%
filter(local_moran_p < 0.05) %>%
select(NAME_2, Tipe_Wilayah, Prevalensi_per_100k, local_moran_i,
local_moran_z, local_moran_p, lisa_cluster, lisa_sig) %>%
arrange(local_moran_p)
if(nrow(lisa_table) > 0) {
kable(lisa_table,
caption = "Wilayah dengan Klaster Spasial Signifikan (p < 0.05)",
digits = c(0, 0, 2, 3, 3, 4, 0, 0),
col.names = c("Wilayah", "Tipe", "Prevalensi/100k", "Local I",
"Z-score", "P-value", "Klaster", "Sig.")) %>%
kable_styling(bootstrap_options = c("striped", "hover"),
full_width = FALSE, font_size = 11) %>%
row_spec(0, bold = TRUE, color = "white", background = "#2E86AB") %>%
column_spec(7, bold = TRUE)
} else {
cat("Tidak ada wilayah dengan klaster spasial yang signifikan (p < 0.05)\n")
}| Wilayah | Tipe | Prevalensi/100k | Local I | Z-score | P-value | Klaster | Sig. |
|---|---|---|---|---|---|---|---|
| Majalengka | Kabupaten | 333.96 | 0.492 | 2.115 | 0.0344 | Low-Low |
|
Berdasarkan analisis epidemiologis kasus tuberkulosis (TBC) di Provinsi Jawa Barat tahun 2024, dapat disimpulkan beberapa hal sebagai berikut:
Agent (Mycobacterium tuberculosis): - Bakteri penyebab TBC memiliki daya tahan tinggi dan dapat bertahan di lingkungan dengan ventilasi buruk - Penularan terjadi melalui droplet udara dari penderita TBC aktif
Host (Inang): - Kelompok risiko tinggi meliputi individu dengan imunitas rendah, gizi buruk, dan kondisi sosial ekonomi rendah - Prevalensi tertinggi ditemukan di wilayah perkotaan dengan mobilitas tinggi
Environment (Lingkungan): - Berdasarkan analisis korelasi: * Kepadatan penduduk menunjukkan [sesuaikan dengan hasil: korelasi positif/negatif/tidak signifikan] * Persentase kemiskinan [sesuaikan dengan hasil] * Kondisi rumah layak huni [sesuaikan dengan hasil] - Faktor lingkungan berinteraksi kompleks dalam transmisi TBC
Penelitian ini menggunakan desain studi ekologi cross-sectional dengan data agregat tingkat kabupaten/kota. Desain ini efektif untuk: - Mengidentifikasi pola geografis penyebaran penyakit - Mendeteksi area prioritas intervensi - Menganalisis hubungan faktor risiko tingkat populasi
Keterbatasan: - Tidak dapat menentukan hubungan kausal temporal - Ecological fallacy: hasil di level agregat tidak selalu berlaku di level individu - Data hanya mencakup satu tahun (2024), tidak dapat melihat tren
A. Prioritas Wilayah (Immediate Action)
B. Intervensi Berbasis Faktor Risiko
C. Penguatan Sistem Surveilans
Karena pola sebaran TBC acak (tidak ada autokorelasi spasial), diperlukan: - Surveilans sentinel di setiap kabupaten/kota, tidak hanya fokus pada wilayah tertentu - Early warning system untuk deteksi outbreak lokal - Integrasi data antara puskesmas, rumah sakit, dan laboratorium - Sistem pelaporan real-time berbasis aplikasi digital
Tahun 2025 (Jangka Pendek): - Screening massal di 10 wilayah prevalensi tertinggi - Pelatihan 500 kader TBC di seluruh kabupaten/kota - Launching aplikasi “JABAR BEBAS TBC” untuk tracking pasien
Tahun 2026 (Jangka Menengah): - Pembangunan/renovasi 50 rumah sehat di wilayah prioritas - Program “1 Puskesmas 1 Mikroskopis” untuk diagnosis cepat - Integrasi database TBC dengan sistem BPJS Kesehatan - Evaluasi mid-term: target penurunan prevalensi 15%
Tahun 2027 (Jangka Panjang): - Coverage pengobatan TBC mencapai 90% (dari 81% saat ini) - Keberhasilan pengobatan TBC RO mencapai 75% (dari 58%) - Penurunan prevalensi TBC minimal 25% dari baseline 2024 - Zero stigma campaign: eliminasi diskriminasi terhadap pasien TBC
A. Target Audiens: 1. Kelompok Berisiko Tinggi: - Penghuni rumah susun/apartemen padat - Pekerja pabrik/industri - Narapidana dan penghuni lapas - Lansia dan penderita komorbid (diabetes, HIV)
B. Pesan Kunci: - “TBC Bisa Disembuhkan, Obat Gratis!” - “Batuk Lebih 2 Minggu? Periksakan Segera!” - “Rumah Sehat, Keluarga Bebas TBC” - “Jangan Putus Obat, Sembuh Sampai Tuntas”
C. Media Komunikasi: - Media sosial (Instagram, TikTok, Facebook) - Radio komunitas di pedesaan - Billboard di terminal, stasiun, pasar - Webinar kesehatan untuk kelompok terdidik
Dinas Kesehatan ↔︎ Dinas Perumahan: - Program renovasi rumah tidak layak huni untuk pasien TBC - Standar ventilasi minimal untuk izin bangunan baru
Dinas Kesehatan ↔︎ Dinas Sosial: - Integrasi screening TBC dalam program keluarga harapan (PKH) - Bantuan transportasi untuk pasien TBC miskin
Dinas Kesehatan ↔︎ Dinas Pendidikan: - Edukasi TBC dalam kurikulum sekolah - Screening TBC untuk guru dan siswa di sekolah padat
Dinas Kesehatan ↔︎ Kepolisian/Kemenkumham: - Program TBC di Lembaga Pemasyarakatan - Screening wajib untuk narapidana baru
Indikator Keberhasilan:
| Indikator | Baseline 2024 | Target 2025 | Target 2027 |
|---|---|---|---|
| Prevalensi TBC (per 100.000) | 512 | 460 | 384 |
| Coverage pengobatan SO | 81% | 85% | 90% |
| Keberhasilan pengobatan RO | 58% | 65% | 75% |
| Jumlah kabupaten/kota dengan prevalensi >1.000 | 3 | 2 | 0 |
| Deteksi kasus baru per tahun | 170.000 | 185.000 | 200.000 |
Metode Evaluasi: 1. Survei Evaluasi Tahunan (setiap Desember) 2. Review Triwulanan di tingkat kabupaten/kota 3. Audit Kasus untuk kasus gagal pengobatan 4. Survei Kepuasan Pasien untuk kualitas layanan 5. External Review oleh tim independen (tahun 2027)
Pelaporan: - Laporan bulanan dari puskesmas → Dinkes Kab/Kota - Laporan triwulanan dari Dinkes Kab/Kota → Dinkes Provinsi - Laporan tahunan publikasi di website resmi - Dashboard real-time untuk publik (transparansi)
Penelitian ini memiliki beberapa keterbatasan yang perlu diperhatikan dalam interpretasi hasil:
Implikasi: Hasil penelitian ini sebaiknya digunakan sebagai bukti awal (preliminary evidence) untuk perumusan kebijakan, bukan sebagai satu-satunya dasar pengambilan keputusan. Diperlukan penelitian lanjutan dengan desain yang lebih robust untuk konfirmasi temuan.
Tuberkulosis tetap menjadi tantangan kesehatan masyarakat yang serius di Provinsi Jawa Barat. Dengan prevalensi yang tinggi terutama di wilayah perkotaan dan pola penyebaran yang acak (tidak mengelompok), diperlukan pendekatan komprehensif dan merata di seluruh kabupaten/kota.
Kunci keberhasilan pengendalian TBC: 1. Deteksi dini yang agresif - menemukan kasus secepat mungkin 2. Pengobatan tuntas - memastikan pasien menyelesaikan terapi 3. Perbaikan lingkungan - mengurangi transmisi 4. Pemberdayaan masyarakat - mengubah perilaku dan menghilangkan stigma 5. Kolaborasi lintas sektor - kesehatan bukan tanggung jawab Dinkes saja
Dengan komitmen kuat dari seluruh stakeholder - pemerintah, tenaga kesehatan, masyarakat, dan sektor swasta - target eliminasi TBC di Jawa Barat pada tahun 2030 dapat tercapai.
“Jawa Barat Bebas TBC: Bersama Kita Bisa!”
Buku dan Jurnal:
World Health Organization. (2023). Global Tuberculosis Report 2023. Geneva: WHO.
Kementerian Kesehatan RI. (2024). Profil Kesehatan Indonesia 2023. Jakarta: Kemenkes RI.
Dinas Kesehatan Provinsi Jawa Barat. (2024). Profil Kesehatan Provinsi Jawa Barat Tahun 2023. Bandung: Dinkes Jabar.
Pai, M., Behr, M. A., Dowdy, D., et al. (2016). Tuberculosis. Nature Reviews Disease Primers, 2, 16076.
Harling, G., & Castro, M. C. (2014). A spatial analysis of social and economic determinants of tuberculosis in Brazil. Health & Place, 25, 56-67.
Anselin, L. (1995). Local Indicators of Spatial Association—LISA. Geographical Analysis, 27(2), 93-115.
Getis, A., & Ord, J. K. (1992). The Analysis of Spatial Association by Use of Distance Statistics. Geographical Analysis, 24(3), 189-206.
Data dan Statistik:
Badan Pusat Statistik Provinsi Jawa Barat. (2024). Jawa Barat Dalam Angka 2024. Bandung: BPS Jabar.
Kementerian Kesehatan RI. (2024). Sistem Informasi Tuberkulosis (SITB). Diakses dari: https://sitb.kemkes.go.id
Global Database on Administrative Areas (GADM). Indonesia Administrative Boundaries. Diakses dari: https://gadm.org/
Metodologi Penelitian:
Rothman, K. J., Greenland, S., & Lash, T. L. (2008). Modern Epidemiology (3rd ed.). Philadelphia: Lippincott Williams & Wilkins.
Pfeiffer, D., Robinson, T., Stevenson, M., et al. (2008). Spatial Analysis in Epidemiology. Oxford: Oxford University Press.
Bivand, R. S., Pebesma, E., & Gómez-Rubio, V. (2013). Applied Spatial Data Analysis with R (2nd ed.). New York: Springer.
R Packages:
Bivand, R., & Wong, D. W. S. (2018). Comparing implementations of global and local indicators of spatial association. TEST, 27(3), 716-748.
Pebesma, E. (2018). Simple Features for R: Standardized Support for Spatial Vector Data. The R Journal, 10(1), 439-446.
Tennekes, M. (2018). tmap: Thematic Maps in R. Journal of Statistical Software, 84(6), 1-39.