Link : https://ghozzypurwana.shinyapps.io/Laporan_Epidem_140610230084_Ghozzy_Averillio_Purwana/
Tuberkulosis (TBC) masih menjadi masalah kesehatan masyarakat yang signifikan di Indonesia, khususnya di Provinsi Jawa Barat dengan jumlah penduduk yang sangat besar. Penelitian ini bertujuan untuk menganalisis pola spasial dan faktor wilayah yang berhubungan dengan jumlah kasus TBC di Jawa Barat tahun 2024 menggunakan data sekunder dari Open Data Jawa Barat yang mencakup 27 kabupaten/kota. Analisis dilakukan dengan statistik Moran’s I dan Local Moran’s I (LISA) untuk mendeteksi pola pengelompokan spasial serta model Regresi Binomial Negatif untuk mengidentifikasi faktor yang memengaruhi jumlah kasus. Hasil penelitian menunjukkan adanya pola pengelompokan kasus di wilayah perkotaan seperti Kota Bandung, Bekasi, dan Depok, dengan kepadatan penduduk berhubungan positif dan signifikan terhadap jumlah kasus TBC, sedangkan proporsi rumah layak huni berhubungan negatif dan tidak signifikan. Temuan ini mengindikasikan bahwa kepadatan penduduk menjadi faktor utama yang memengaruhi penyebaran TBC, sementara kondisi hunian yang baik berpotensi menurunkan risiko penularan. Secara keseluruhan, faktor sosial dan lingkungan berperan penting dalam penyebaran TBC di Jawa Barat, sehingga upaya pengendalian perlu difokuskan pada wilayah padat penduduk dan hunian kurang layak guna mendukung target Indonesia Bebas TBC 2030.
Tuberkulosis (TBC) merupakan penyakit menular yang disebabkan oleh Mycobacterium tuberculosis, yang umumnya menyerang paru-paru namun juga dapat memengaruhi organ lain dalam tubuh. Penyakit ini masih menjadi salah satu permasalahan kesehatan masyarakat yang serius di tingkat global maupun nasional karena jumlah kasusnya yang tinggi serta tingkat penularannya yang mudah melalui udara, terutama ketika penderita batuk, bersin, atau berbicara [1]. Risiko penularan TBC semakin besar di wilayah dengan kepadatan penduduk tinggi dan kondisi hunian yang kurang layak. Menurut Global Tuberculosis Report 2024 oleh World Health Organization (WHO), terdapat sekitar 10,6 juta kasus baru TBC di dunia dengan 1,3 juta kematian akibat penyakit ini [1]. Data tersebut menunjukkan bahwa TBC masih menjadi tantangan utama bagi sistem kesehatan global, termasuk di Indonesia.
Indonesia sendiri merupakan salah satu negara dengan beban TBC tertinggi di dunia, menempati posisi kedua setelah India. WHO memperkirakan terdapat sekitar satu juta kasus baru setiap tahunnya di Indonesia, atau setara dengan 394 kasus per 100.000 penduduk [1]. Berdasarkan laporan Kementerian Kesehatan RI tahun 2023, TBC termasuk dalam sepuluh penyebab kematian tertinggi di Indonesia bersama penyakit jantung dan stroke [2]. Selain berdampak pada kesehatan masyarakat, TBC juga menimbulkan konsekuensi sosial dan ekonomi yang signifikan, karena penyakit ini kerap berkaitan dengan kemiskinan, kepadatan hunian, serta rendahnya tingkat pendidikan [3][4].
Provinsi Jawa Barat merupakan salah satu wilayah dengan jumlah kasus TBC tertinggi di Indonesia [5]. Dengan jumlah penduduk lebih dari 49 juta jiwa, perbedaan kondisi sosial ekonomi dan kepadatan penduduk antar kabupaten/kota di provinsi ini berpotensi memengaruhi tingkat penyebaran penyakit. Daerah dengan populasi padat dan kualitas lingkungan yang rendah cenderung memiliki prevalensi TBC yang lebih tinggi dibanding wilayah lainnya [6][7]. Hal ini sejalan dengan penelitian yang menyebutkan bahwa faktor-faktor sosial seperti kepadatan penduduk, kondisi ekonomi, dan kualitas hunian berpengaruh signifikan terhadap angka kejadian TBC di Indonesia [8]. Oleh karena itu, analisis spasial terhadap distribusi kasus TBC di Jawa Barat menjadi penting untuk memahami pola persebaran penyakit dan mengidentifikasi faktor wilayah yang berperan. Hasil penelitian ini diharapkan dapat menjadi dasar bagi perumusan kebijakan pengendalian TBC yang lebih efektif dalam rangka mendukung target Indonesia Bebas TBC 2030 [5].
Berdasarkan latar belakang di atas, permasalahan utama yang diangkat dalam penelitian ini adalah masih tingginya angka kejadian Tuberkulosis (TBC) di Provinsi Jawa Barat yang menjadi tantangan dalam upaya pengendalian penyakit menular. Perbedaan jumlah kasus antar kabupaten/kota mengindikasikan adanya variasi kondisi lingkungan dan sosial ekonomi yang memengaruhi penyebaran penyakit. Faktor-faktor seperti kepadatan penduduk, kondisi hunian, serta tingkat kesejahteraan masyarakat diduga memiliki keterkaitan dengan peningkatan risiko TBC. Oleh karena itu, penelitian ini difokuskan untuk mengidentifikasi pola spasial kejadian TBC di Jawa Barat serta menganalisis hubungan antara karakteristik wilayah dengan tingginya kasus TBC, guna mendukung perumusan kebijakan pengendalian penyakit yang lebih tepat sasaran dan efektif.
Penelitian ini bertujuan untuk memberikan gambaran epidemiologis mengenai penyebaran penyakit Tuberkulosis (TBC) di Provinsi Jawa Barat berdasarkan data kasus terkini. Secara khusus, tujuan penelitian ini meliputi:
Mengetahui tingkat kejadian dan distribusi spasial kasus TBC di setiap kabupaten/kota di Provinsi Jawa Barat.
Menganalisis perbedaan tingkat kasus TBC antar wilayah di Provinsi Jawa Barat.
Mengidentifikasi pengaruh faktor wilayah seperti kepadatan penduduk dan kondisi hunian terhadap tingginya angka kejadian TBC.
Tuberkulosis (TBC) disebabkan oleh bakteri Mycobacterium tuberculosis yang umumnya menyerang saluran pernapasan serta menyebar melalui partikel udara kecil saat penderita yang memiliki penyakit aktif batuk, bersin, berbicara, atau bernyanyi. Penularan paling mungkin terjadi pada ruang tertutup dengan ventilasi buruk dan kepadatan manusia tinggi; individu dengan infeksi laten tidak menularkan hingga penyakitnya menjadi aktif. Oleh karena itu, pemahaman trifaktor agent-host-environment penting untuk menjelaskan pola sebaran TBC serta menentukan intervensi pencegahan di tingkat komunitas. [1][12].
Penjelasan singkat hubungan ke variabel penelitian:
Agent: sifat biologis M. tuberculosis yang membutuhkan paparan udara berulang untuk penularan.
Host: individu yang terinfeksi atau beresiko terinfeksi.
Environment: kepadatan penduduk, kualitas hunian (ventilasi, kelembapan), dan kondisi sosial-ekonomi yang memfasilitasi atau menghambat penularan. Sifat lingkungan inilah yang sering dianalisis pada skala spasial (kabupaten/kota) untuk mengetahui klaster kasus.
Ukuran asosiasi digunakan dalam epidemiologi untuk menggambarkan sejauh mana suatu faktor risiko atau variabel paparan berhubungan dengan kejadian penyakit pada populasi tertentu. Dalam penelitian ini, ukuran asosiasi yang digunakan adalah Prevalence Rate Ratio (PRR), yang diperoleh melalui model regresi Poisson atau regresi Binomial Negatif ketika terdapat indikasi overdispersi pada data [13][14].
PRR menggambarkan perbandingan tingkat kejadian penyakit (prevalensi) antara kelompok dengan paparan tertentu dan kelompok tanpa paparan. Nilai PRR lebih dari 1 menunjukkan bahwa faktor tersebut meningkatkan risiko atau prevalensi penyakit, sedangkan nilai di bawah 1 menandakan efek protektif atau menurunkan risiko kejadian penyakit [13].
Dalam konteks penelitian ini, PRR digunakan untuk mengukur hubungan antara faktor-faktor wilayah seperti kepadatan penduduk dan proporsi rumah layak huni dengan jumlah kasus Tuberkulosis (TBC) di tingkat kabupaten/kota di Provinsi Jawa Barat. Pemilihan model Binomial Negatif didasarkan pada adanya overdispersi data, yang sering terjadi pada data jumlah kasus penyakit menular. Model ini dianggap lebih sesuai dibandingkan model Poisson standar karena dapat mengakomodasi variabilitas data yang lebih besar serta menghasilkan estimasi parameter yang lebih stabil dan akurat [14][15].
Studi ini menggunakan desain cross-sectional (lintas-seksi) yang mengamati variabel paparan (mis. kepadatan penduduk, proporsi rumah layak) dan hasil (jumlah kasus atau prevalensi TBC) pada satu titik waktu atau periode pengamatan. Kekuatan desain ini meliputi kemampuan menggambarkan prevalensi penyakit dan hubungan asosiasi antar variabel secara cepat dan relatif hemat biaya, serta cocok untuk analisis spasial antar wilayah administratif. Namun, keterbatasan utamanya adalah ketidakmampuan membuktikan hubungan sebab-akibat karena paparan dan hasil diukur bersamaan; oleh karena itu hasil asosiasi perlu diinterpretasikan sebagai hubungan statistika/ekploratori yang mendukung hipotesis, bukan bukti kausal. Untuk komplementer, analisis spasial (mis. Moran’s I global dan Local Moran’s I/LISA) digunakan untuk menguji autokorelasi spasial dan mengidentifikasi klaster wilayah sehingga memudahkan penentuan area prioritas intervensi.
Penelitian ini menggunakan data sekunder yang diperoleh dari Open Data Jawa Barat serta publikasi resmi lembaga pemerintah terkait, seperti Badan Pusat Statistik (BPS) dan Dinas Kesehatan Provinsi Jawa Barat [8][9][10]. Data mencakup jumlah kasus Tuberkulosis (TBC), kepadatan penduduk, dan persentase rumah tangga yang menempati rumah layak huni di 27 kabupaten/kota di Provinsi Jawa Barat.
Variabel independen (Y) dan variabel dependen (X) yang digunakan adalah sebagai berikut:
| Variabel | Keterangan |
|---|---|
| Y | Jumlah Kasus TBC (kasus per kabupaten/kota) |
| X1 | Kepadatan Penduduk (jiwa per km²) |
| X2 | Persentase Rumah Tangga yang Menempati Rumah Layak Huni (%) |
Selain itu, dihitung juga prevalensi TBC per 100.000 penduduk untuk menggambarkan tingkat kejadian penyakit di setiap wilayah, serta variabel turunan proporsi rumah layak huni yang diperoleh dari konversi nilai persentase ke bentuk proporsi.
Penelitian ini menggunakan rancangan studi cross-sectional dengan pendekatan analisis spasial dan regresi Binomial Negatif. Tujuan analisis adalah untuk mengidentifikasi hubungan antara faktor wilayah (kepadatan penduduk dan kondisi hunian) dengan jumlah kasus TBC di Jawa Barat.
Tahapan analisis dilakukan secara berurutan sebagai berikut:
Eksplorasi Data
Melakukan analisis deskriptif terhadap variabel penelitian (kasus TBC,
kepadatan penduduk, dan hunian layak) dan menampilkan ukuran pemusatan
serta penyebaran.
Pemetaan Spasial
Membuat peta persebaran kasus TBC menggunakan dengan tujuan melihat
distribusi kasus antar wilayah secara visual.
Uji Autokorelasi Spasial
Mengukur ketergantungan spasial antar wilayah dengan Moran’s I global,
serta mendeteksi klaster lokal (High-High, Low-Low, High-Low, Low-High)
menggunakan Local Moran’s I (LISA). Analisis ini dilakukan untuk
mengetahui apakah kasus TBC cenderung mengelompok secara
geografis.
Penghitungan Prevalensi
Menghitung prevalensi TBC per 100.000 penduduk untuk menggambarkan
proporsi penduduk yang menderita TBC pada waktu pengamatan
tertentu.
Pemodelan Regresi Binomial Negatif
Melakukan analisis regresi Binomial Negatif untuk mengatasi masalah
overdispersi yang sering terjadi pada data jumlah kasus penyakit. Model
ini mengestimasi hubungan antara kepadatan penduduk dan proporsi hunian
layak terhadap jumlah kasus TBC, dengan offset(log(population)) untuk
menyesuaikan ukuran penduduk tiap wilayah [14][15].
Perhitungan Prevalence Rate Ratio (PRR)
Koefisien hasil model dieksponensialkan untuk memperoleh nilai PRR, yang
menunjukkan seberapa besar perubahan prevalensi TBC akibat perubahan
satu satuan variabel prediktor. Nilai PRR > 1 menunjukkan adanya
peningkatan risiko, sedangkan nilai PRR < 1 menunjukkan efek
protektif [13].
Evaluasi Model
Kelayakan model dievaluasi berdasarkan nilai Akaike Information
Criterion (AIC) dan rasio dispersi (deviance / df residual) untuk
memastikan bahwa model Binomial Negatif merupakan model terbaik yang
merepresentasikan data.
Pengumpulan Data = Mengunduh dan menggabungkan data sekunder dari berbagai sumber (Open Data Jabar, BPS, dan Dinas Kesehatan).
Eksplorasi dan Visualisasi Data = Menyusun analisis deskriptif dan peta persebaran kasus TBC antar kabupaten/kota.
Uji Autokorelasi Spasial = Mengidentifikasi pola ketergantungan spasial secara global (Moran’s I) dan lokal (LISA).
Penghitungan Prevalensi = Menghitung prevalensi TBC per 100.000 penduduk untuk tiap wilayah.
Pemodelan Regresi Binomial Negatif = Menentukan model terbaik berdasarkan uji dispersi dan AIC.
Interpretasi PRR = Menafsirkan hasil model untuk memahami pengaruh faktor wilayah terhadap peningkatan atau penurunan prevalensi TBC.
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.2
## Warning: package 'readr' was built under R version 4.4.2
## Warning: package 'stringr' was built under R version 4.4.3
## Warning: package 'forcats' was built under R version 4.4.2
## Warning: package 'lubridate' was built under R version 4.4.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.2
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(MASS)
##
## Attaching package: 'MASS'
##
## The following object is masked from 'package:dplyr':
##
## select
library(broom)
library(dplyr)
library(sf)
## Warning: package 'sf' was built under R version 4.4.3
## Linking to GEOS 3.13.0, GDAL 3.10.1, PROJ 9.5.1; sf_use_s2() is TRUE
library(spdep)
## Warning: package 'spdep' was built under R version 4.4.3
## Loading required package: spData
## Warning: package 'spData' was built under R version 4.4.3
## To access larger datasets in this package, install the spDataLarge
## package with: `install.packages('spDataLarge',
## repos='https://nowosad.github.io/drat/', type='source')`
library(tmap)
## Warning: package 'tmap' was built under R version 4.4.3
library(geodata)
## Warning: package 'geodata' was built under R version 4.4.3
## Loading required package: terra
## Warning: package 'terra' was built under R version 4.4.3
## terra 1.8.60
##
## Attaching package: 'terra'
##
## The following object is masked from 'package:MASS':
##
## area
##
## The following object is masked from 'package:tidyr':
##
## extract
setwd("C:\\Users\\Ghozzy\\OneDrive\\Documents\\SMESTER 5\\Epidem")
data <- na.omit(read.csv("Epidem.csv", sep=";", dec="."))
data
## KABKOT Populasi Y X1 X2
## 1 BOGOR 5682300 29110 1899 46.70
## 2 SUKABUMI 2828020 12411 679 32.83
## 3 CIANJUR 2584990 12197 712 38.29
## 4 BANDUNG 3753120 14012 2156 54.16
## 5 GARUT 2716950 9516 876 34.61
## 6 TASIKMALAYA 1920920 4881 710 37.62
## 7 CIAMIS 1259230 3477 789 67.22
## 8 KUNINGAN 1213930 4045 1018 77.55
## 9 CIREBON 2387960 9587 2228 80.39
## 10 MAJALENGKA 1352540 4517 1017 75.36
## 11 SUMEDANG 1187130 3930 758 69.00
## 12 INDRAMAYU 1914040 6092 922 85.78
## 13 SUBANG 1663160 6321 768 83.27
## 14 PURWAKARTA 1050340 4687 1058 66.51
## 15 KARAWANG 2554380 13474 1335 70.98
## 16 BEKASI 3273870 15458 2617 63.80
## 17 BANDUNG BARAT 1884190 4569 1468 38.87
## 18 PANGANDARAN 434100 968 385 61.91
## 19 KOTA BOGOR 1078350 11418 9683 49.53
## 20 KOTA SUKABUMI 365740 3477 7571 36.30
## 21 KOTA BANDUNG 2528160 18627 15176 41.97
## 22 KOTA CIREBON 344850 4122 8744 74.31
## 23 KOTA BEKASI 2644060 13640 12411 65.82
## 24 DEPOK 2163640 8422 10823 49.39
## 25 CIMAHI 598700 4513 14110 54.86
## 26 KOTA TASIKMALAYA 750730 4693 4081 45.01
## 27 BANJAR 209790 1519 1601 83.51
str(data)
## 'data.frame': 27 obs. of 5 variables:
## $ KABKOT : chr "BOGOR" "SUKABUMI" "CIANJUR" "BANDUNG" ...
## $ Populasi: int 5682300 2828020 2584990 3753120 2716950 1920920 1259230 1213930 2387960 1352540 ...
## $ Y : int 29110 12411 12197 14012 9516 4881 3477 4045 9587 4517 ...
## $ X1 : int 1899 679 712 2156 876 710 789 1018 2228 1017 ...
## $ X2 : num 46.7 32.8 38.3 54.2 34.6 ...
# Ubah nama kolom agar mudah dipakai
data <- data %>%
rename(
kabkot = KABKOT,
population = Populasi,
cases = Y,
density = X1,
housing = X2
)
data <- data %>%
mutate(
prevalence_per100k = (cases / population) * 100000,
housing_prop = housing / 100 # ubah persen jadi proporsi
)
# Lihat hasil
head(data)
## kabkot population cases density housing prevalence_per100k housing_prop
## 1 BOGOR 5682300 29110 1899 46.70 512.2926 0.4670
## 2 SUKABUMI 2828020 12411 679 32.83 438.8583 0.3283
## 3 CIANJUR 2584990 12197 712 38.29 471.8393 0.3829
## 4 BANDUNG 3753120 14012 2156 54.16 373.3427 0.5416
## 5 GARUT 2716950 9516 876 34.61 350.2457 0.3461
## 6 TASIKMALAYA 1920920 4881 710 37.62 254.0970 0.3762
data_deskriptif <- data %>%
dplyr::select(cases, population, density, housing, prevalence_per100k) %>%
summarise_all(list(
mean = ~mean(., na.rm = TRUE),
median = ~median(., na.rm = TRUE),
sd = ~sd(., na.rm = TRUE),
min = ~min(., na.rm = TRUE),
max = ~max(., na.rm = TRUE)
))
data_deskriptif
## cases_mean population_mean density_mean housing_mean prevalence_per100k_mean
## 1 8506.778 1864637 3910.926 58.72407 505.0337
## cases_median population_median density_median housing_median
## 1 6092 1884190 1468 61.91
## prevalence_per100k_median cases_sd population_sd density_sd housing_sd
## 1 438.8583 6240.981 1228053 4668.116 17.09696
## prevalence_per100k_sd cases_min population_min density_min housing_min
## 1 251.0959 968 209790 385 32.83
## prevalence_per100k_min cases_max population_max density_max housing_max
## 1 222.9901 29110 5682300 15176 85.78
## prevalence_per100k_max
## 1 1195.302
indo_shp <- geodata::gadm(country = "IDN", level = 2, path = "C:\\Users\\Ghozzy\\OneDrive\\Documents\\SMESTER 5\\Epidem")
# Konversi ke format sf
indo_map <- sf::st_as_sf(indo_shp)
# Filter hanya Provinsi Jawa Barat
jabar <- indo_map %>%
filter(NAME_1 %in% c("West Java", "Jawa Barat")) %>%
mutate(KABKOT = NAME_2)
# Normalisasi huruf besar untuk join data
jabar$KABKOT <- str_to_upper(jabar$KABKOT)
data$KABKOT <- str_to_upper(data$kabkot)
# Gabungkan data CSV dan shapefile
data_spatial <- jabar %>%
left_join(data, by = "KABKOT")
# Cek struktur data hasil gabungan
glimpse(data_spatial)
## Rows: 27
## Columns: 22
## $ GID_2 <chr> "IDN.9.2_1", "IDN.9.1_1", "IDN.9.3_1", "IDN.9.4_1",…
## $ GID_0 <chr> "IDN", "IDN", "IDN", "IDN", "IDN", "IDN", "IDN", "I…
## $ COUNTRY <chr> "Indonesia", "Indonesia", "Indonesia", "Indonesia",…
## $ GID_1 <chr> "IDN.9_1", "IDN.9_1", "IDN.9_1", "IDN.9_1", "IDN.9_…
## $ NAME_1 <chr> "Jawa Barat", "Jawa Barat", "Jawa Barat", "Jawa Bar…
## $ NL_NAME_1 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ NAME_2 <chr> "Bandung", "Bandung Barat", "Banjar", "Bekasi", "Bo…
## $ VARNAME_2 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ NL_NAME_2 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ TYPE_2 <chr> "Kabupaten", "Kabupaten", "Kota", "Kabupaten", "Kab…
## $ ENGTYPE_2 <chr> "Regency", "Regency", "City", "Regency", "Regency",…
## $ CC_2 <chr> "3204", "3217", "3279", "3216", "3201", "3207", "32…
## $ HASC_2 <chr> "ID.JR.BU", "ID.JR.BB", "ID.JR.BA", "ID.JR.BS", "ID…
## $ KABKOT <chr> "BANDUNG", "BANDUNG BARAT", "BANJAR", "BEKASI", "BO…
## $ kabkot <chr> "BANDUNG", "BANDUNG BARAT", "BANJAR", "BEKASI", "BO…
## $ population <int> 3753120, 1884190, 209790, 3273870, 5682300, 1259230…
## $ cases <int> 14012, 4569, 1519, 15458, 29110, 3477, 12197, 4513,…
## $ density <int> 2156, 1468, 1601, 2617, 1899, 789, 712, 14110, 2228…
## $ housing <dbl> 54.16, 38.87, 83.51, 63.80, 46.70, 67.22, 38.29, 54…
## $ prevalence_per100k <dbl> 373.3427, 242.4915, 724.0574, 472.1629, 512.2926, 2…
## $ housing_prop <dbl> 0.5416, 0.3887, 0.8351, 0.6380, 0.4670, 0.6722, 0.3…
## $ geometry <GEOMETRY [°]> POLYGON ((107.6257 -7.29998..., POLYGON ((…
data_spatial <- data_spatial %>%
filter(!is.na(cases), !is.na(population), !is.na(density), !is.na(housing))
tmap_mode("plot")
## ℹ tmap modes "plot" - "view"
## ℹ toggle with `tmap::ttm()`
tm_shape(data_spatial) +
tm_polygons(
fill = "cases", # gunakan 'fill' bukan 'col'
fill.scale = tm_scale(values = "brewer.reds"), # ganti 'palette' dengan ini
fill.legend = tm_legend(title = "Jumlah Kasus TBC") # ganti 'title' dengan ini
) +
tm_borders(lwd = 0.7, col = "gray40") +
tm_title(text = "Sebaran Kasus TBC di Kabupaten/Kota Jawa Barat (2024)") + # gunakan tm_title()
tm_layout(
legend.outside = TRUE,
frame = FALSE
)
## [plot mode] fit legend/component: Some legend items or map compoments do not
## fit well, and are therefore rescaled.
## ℹ Set the tmap option `component.autoscale = FALSE` to disable rescaling.
Interpretasi :
Peta tersebut menggambarkan distribusi kasus Tuberkulosis (TBC) di tingkat kabupaten/kota Provinsi Jawa Barat pada tahun 2024. Wilayah dengan gradasi warna merah tua, seperti Kota Bandung dan sekitarnya, menunjukkan jumlah kasus TBC yang paling tinggi, berkisar antara 25.001 hingga 30.000 kasus. Sebaliknya, daerah dengan warna yang lebih terang, terutama di bagian timur dan selatan Jawa Barat, memiliki jumlah kasus yang lebih rendah, umumnya di bawah 10.000 kasus. Secara umum, penyebaran kasus TBC tampak terkonsentrasi di kawasan perkotaan dengan kepadatan penduduk yang tinggi.
# --- 5. Hitung Moran’s I Global ---
# Konversi sf → Spatial
map_sp <- as_Spatial(data_spatial)
# Buat matriks tetangga (queen contiguity)
nb <- poly2nb(map_sp)
# Buat bobot spasial (row-standardized)
lw <- nb2listw(nb, style = "W")
# Uji Moran's I global
moran_global <- moran.test(data_spatial$cases, lw)
moran_global
##
## Moran I test under randomisation
##
## data: data_spatial$cases
## weights: lw
##
## Moran I statistic standard deviate = 2.9347, p-value = 0.00167
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.35148462 -0.04000000 0.01779563
Interpretasi :
Hasil uji Moran’s I menunjukkan nilai Moran I = 0.3515 dengan p-value = 0.00167, yang berarti terdapat autokorelasi spasial positif yang signifikan pada kasus TBC di Jawa Barat. Artinya, daerah dengan jumlah kasus TBC tinggi cenderung berdekatan dengan daerah lain yang juga memiliki kasus tinggi, dan sebaliknya. Dengan demikian, penyebaran kasus TBC di Jawa Barat tidak bersifat acak, melainkan menunjukkan pola spasial yang mengelompok (clustered).
local_moran <- localmoran(st_drop_geometry(data_spatial)$cases, lw)
head(local_moran)
## Ii E.Ii Var.Ii Z.Ii Pr(z != E(Ii))
## 1 -0.03867622 -0.02966099 0.08017623 -0.03183863 0.974600737
## 2 -0.14554706 -0.01949157 0.06556356 -0.49230075 0.622506751
## 3 1.05549883 -0.05775959 1.41500884 0.93587190 0.349339144
## 4 1.80599497 -0.04838894 0.36582139 3.06595023 0.002169794
## 5 1.47678414 -0.44997849 0.56976067 2.55259539 0.010692363
## 6 0.70568331 -0.03086110 0.12960434 2.04592245 0.040764001
cases <- st_drop_geometry(data_spatial)$cases
mean_val <- mean(cases, na.rm = TRUE)
lag_cases <- lag.listw(lw, cases)
lisa_cluster <- ifelse(cases > mean_val & lag_cases > mean(lag_cases), "High-High",
ifelse(cases < mean_val & lag_cases < mean(lag_cases), "Low-Low",
ifelse(cases > mean_val & lag_cases < mean(lag_cases), "High-Low",
ifelse(cases < mean_val & lag_cases > mean(lag_cases), "Low-High", "Undefined"))))
data_spatial$lisa_cluster <- lisa_cluster
table(data_spatial$lisa_cluster)
##
## High-High High-Low Low-High Low-Low
## 7 4 4 11
tm_shape(data_spatial) +
tm_polygons(
col = "lisa_cluster",
palette = c("red", "blue", "pink", "lightblue", "gray"),
title = "Klaster LISA (Local Moran’s I)"
) +
tm_borders() +
tm_layout(
legend.outside = TRUE,
frame = FALSE
)
##
## ── tmap v3 code detected ───────────────────────────────────────────────────────
## [v3->v4] `tm_tm_polygons()`: migrate the argument(s) related to the scale of
## the visual variable `fill` namely 'palette' (rename to 'values') to fill.scale
## = tm_scale(<HERE>).
## [v3->v4] `tm_polygons()`: use 'fill' for the fill color of polygons/symbols
## (instead of 'col'), and 'col' for the outlines (instead of 'border.col').
## [v3->v4] `tm_polygons()`: migrate the argument(s) related to the legend of the
## visual variable `fill` namely 'title' to 'fill.legend = tm_legend(<HERE>)'
Interpretasi :
Peta klaster LISA menggambarkan pola spasial lokal dari distribusi kasus Tuberkulosis (TBC) di Provinsi Jawa Barat. Wilayah bagian barat, khususnya di sekitar Kota Bandung dan sekitarnya, tergolong dalam klaster High-High, yang menunjukkan bahwa daerah tersebut dan wilayah di sekelilingnya sama-sama memiliki jumlah kasus TBC yang tinggi. Sebaliknya, kawasan timur dan selatan Jawa Barat didominasi oleh klaster Low-Low, yaitu wilayah dengan jumlah kasus rendah yang berdekatan dengan wilayah rendah lainnya. Beberapa daerah di bagian tengah dan timur menunjukkan pola High-Low serta Low-High, yang menandakan adanya kontras tingkat kasus antara suatu wilayah dengan tetangganya. Secara keseluruhan, hasil analisis ini memperkuat adanya pola pengelompokan spasial kasus TBC yang lebih menonjol di wilayah barat Jawa Barat.
library(corrplot)
## corrplot 0.94 loaded
data_num <- data %>%
dplyr::select(cases, density, housing)
cor_matrix <- cor(data_num, method = "pearson", use = "complete.obs")
corrplot(
cor_matrix,
method = "color",
type = "upper",
order = "hclust",
addCoef.col = "black",
tl.col = "black",
tl.srt = 45,
col = colorRampPalette(c("blue", "white", "red"))(200)
)
Interpretasi :
Gambar tersebut menunjukkan hasil analisis korelasi antar variabel menggunakan metode Pearson. Nilai korelasi antara jumlah kasus TBC (cases) dan kepadatan penduduk (density) sebesar 0,18, yang berarti terdapat hubungan positif lemah—semakin padat suatu wilayah, cenderung semakin banyak kasus TBC. Sementara itu, hubungan antara jumlah kasus TBC dan persentase rumah layak huni (housing) bernilai –0,30, menunjukkan korelasi negatif sedang, artinya wilayah dengan kondisi hunian yang lebih baik cenderung memiliki kasus TBC yang lebih sedikit. Selain itu, korelasi antara kepadatan penduduk dan rumah layak huni bernilai –0,20, yang mengindikasikan bahwa wilayah padat penduduk cenderung memiliki proporsi rumah layak huni yang lebih rendah.
model_pois <- glm(
cases ~ density + housing_prop + offset(log(population)),
family = poisson(link = "log"),
data = data
)
summary(model_pois)
##
## Call:
## glm(formula = cases ~ density + housing_prop + offset(log(population)),
## family = poisson(link = "log"), data = data)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -5.482e+00 8.087e-03 -677.955 <2e-16 ***
## density 4.172e-05 4.125e-07 101.141 <2e-16 ***
## housing_prop -1.339e-01 1.339e-02 -9.999 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 27033 on 26 degrees of freedom
## Residual deviance: 17191 on 24 degrees of freedom
## AIC: 17484
##
## Number of Fisher Scoring iterations: 4
Interpretasi :
Hasil regresi Poisson pada gambar pertama menunjukkan bahwa kedua variabel prediktor, yaitu kepadatan penduduk (density) dan proporsi rumah layak huni (housing_prop), berpengaruh signifikan terhadap jumlah kasus TBC (p < 0,001). Nilai koefisien untuk kepadatan penduduk bernilai positif (4.17 × 10⁻⁵), menandakan bahwa semakin tinggi kepadatan suatu wilayah, semakin besar pula jumlah kasus TBC yang diprediksi. Sebaliknya, koefisien untuk proporsi rumah layak huni bernilai negatif (–0.1339), yang berarti peningkatan kualitas hunian berhubungan dengan penurunan jumlah kasus TBC.
Namun, nilai residual deviance (17191) jauh lebih besar dibandingkan dengan degree of freedom (24), menandakan adanya overdispersi pada model Poisson. Kondisi ini menunjukkan bahwa variasi data jauh lebih besar daripada yang dapat dijelaskan oleh model Poisson. Oleh karena itu, model ini tidak tepat digunakan untuk data kasus TBC yang berbentuk count data dengan variabilitas tinggi.
PRR <- tidy(model_pois, exponentiate = TRUE, conf.int = TRUE)
PRR
## # A tibble: 3 × 7
## term estimate std.error statistic p.value conf.low conf.high
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) 0.00416 0.00809 -678. 0 0.00409 0.00423
## 2 density 1.00 0.000000413 101. 0 1.00 1.00
## 3 housing_prop 0.875 0.0134 -10.0 1.54e-23 0.852 0.898
disp <- model_pois$deviance / model_pois$df.residual
disp
## [1] 716.3092
if (disp > 1.5) {
model_nb <- glm.nb(
cases ~ density + housing_prop + offset(log(population)),
data = data
)
summary(model_nb)
}
##
## Call:
## glm.nb(formula = cases ~ density + housing_prop + offset(log(population)),
## data = data, init.theta = 8.967353605, link = log)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -5.686e+00 2.551e-01 -22.289 <2e-16 ***
## density 6.687e-05 1.432e-05 4.671 3e-06 ***
## housing_prop 1.558e-01 3.911e-01 0.398 0.69
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for Negative Binomial(8.9674) family taken to be 1)
##
## Null deviance: 48.868 on 26 degrees of freedom
## Residual deviance: 27.527 on 24 degrees of freedom
## AIC: 501.31
##
## Number of Fisher Scoring iterations: 1
##
##
## Theta: 8.97
## Std. Err.: 2.40
##
## 2 x log-likelihood: -493.31
Interpretasi :
Sebagai alternatif, digunakan model regresi Binomial Negatif, yang mampu mengatasi masalah overdispersi. Model ini memberikan hasil yang lebih stabil dengan deviance yang jauh lebih kecil (27.527) dan nilai AIC yang juga menurun signifikan. Dengan demikian, model PRR Binomial Negatif dipilih sebagai model terbaik karena lebih sesuai menggambarkan hubungan antara kepadatan penduduk dan kualitas hunian terhadap jumlah kasus TBC di Jawa Barat.
PRR <- tidy(model_nb, exponentiate = TRUE, conf.int = TRUE)
PRR
## # A tibble: 3 × 7
## term estimate std.error statistic p.value conf.low conf.high
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) 0.00339 0.255 -22.3 4.72e-110 0.00210 0.00560
## 2 density 1.00 0.0000143 4.67 3.00e- 6 1.00 1.00
## 3 housing_prop 1.17 0.391 0.398 6.90e- 1 0.553 2.46
dplyr::select(data, kabkot, prevalence_per100k) %>%
arrange(desc(prevalence_per100k)) %>%
head(10)
## kabkot prevalence_per100k
## 1 KOTA CIREBON 1195.3023
## 2 KOTA BOGOR 1058.8399
## 3 KOTA SUKABUMI 950.6753
## 4 CIMAHI 753.7999
## 5 KOTA BANDUNG 736.7809
## 6 BANJAR 724.0574
## 7 KOTA TASIKMALAYA 625.1249
## 8 KARAWANG 527.4861
## 9 KOTA BEKASI 515.8733
## 10 BOGOR 512.2926
Hasil analisis memperlihatkan bahwa daerah dengan jumlah kasus TBC tinggi umumnya berdekatan dengan wilayah lain yang juga memiliki kasus tinggi, terutama di kawasan perkotaan seperti Kota Bandung, Bekasi, dan Depok. Variabel kepadatan penduduk menunjukkan hubungan positif dengan jumlah kasus TBC, sedangkan proporsi rumah layak huni menunjukkan hubungan negatif. Temuan ini mengindikasikan bahwa lingkungan dengan kepadatan tinggi dan kondisi hunian yang kurang layak berpotensi meningkatkan risiko penularan, sementara hunian yang lebih baik dapat berfungsi sebagai faktor pelindung.
Secara epidemiologis, hasil tersebut menegaskan bahwa aspek sosial dan lingkungan berperan penting dalam menentukan pola penyebaran TBC di Jawa Barat. Dengan demikian, upaya pengendalian TBC sebaiknya diprioritaskan pada wilayah dengan tingkat kepadatan penduduk tinggi dan kualitas hunian yang rendah sebagai bagian dari strategi menuju tercapainya target Indonesia Bebas TBC 2030.
Hasil penelitian menunjukkan bahwa penyebaran kasus Tuberkulosis (TBC) di Provinsi Jawa Barat membentuk pola spasial yang cenderung mengelompok (clustered). Wilayah dengan kepadatan penduduk tinggi seperti Kota Bandung, Kota Bekasi, dan Kota Depok tercatat memiliki jumlah kasus tertinggi dibandingkan daerah lain.
Analisis regresi Binomial Negatif memperlihatkan bahwa variabel kepadatan penduduk memiliki hubungan positif dan signifikan terhadap jumlah kasus TBC, yang berarti semakin padat suatu wilayah, semakin tinggi pula risiko penularan penyakit. Sebaliknya, variabel proporsi rumah layak huni menunjukkan hubungan negatif dengan kasus TBC, menandakan bahwa kualitas hunian yang baik berpotensi menekan laju penyebaran penyakit.
Secara epidemiologis, hasil ini mengindikasikan bahwa faktor sosial dan lingkungan memiliki kontribusi penting terhadap dinamika penyebaran TBC di Jawa Barat. Oleh karena itu, strategi pengendalian penyakit tidak hanya berfokus pada intervensi medis, tetapi juga harus mempertimbangkan aspek lingkungan dan kondisi sosial masyarakat di tingkat wilayah.
[1] World Health Organization. (2024). Global Tuberculosis Report 2024: The Second National TB Inventory Study in Indonesia. https://www.who.int/teams/global-programme-on-tuberculosis-and-lung-health/tb-reports/global-tuberculosis-report-2024
[2] Kementerian Kesehatan Republik Indonesia. (2024). Laporan Program Penanggulangan Tuberkulosis Tahun 2023. https://www.tbindonesia.or.id/wp-content/uploads/2024/12/Laporan-Program-Penanggulangan-TBC-2023_Final.pdf
[3] Kementerian Kesehatan. (2025, 11 April). Gerakan Indonesia Akhiri TBC. https://kemkes.go.id/id/indonesias-movement-to-end-tb
[4] Kementerian Kesehatan Republik Indonesia. (2024). Laporan Hasil Studi Inventori Tuberkulosis Indonesia 2023-2024.https://cdn.who.int/media/docs/default-source/searo/indonesia/non-who-publications/laporan-hasil-studi-inventori-tb-indonesia-2023-2024.pdf?sfvrsn=e041d479_5&download=true
[5] Rahayuningrum, I. O., & Sulistyani, S. (2024). DETERMINAN SOSIAL KESEHATAN PENYAKIT TUBERKULOSIS DI INDONESIA. INFOKES: Jurnal Ilmiah Rekam Medis dan Informatika Kesehatan, 14(1), 1–6. https://ojs.udb.ac.id/infokes/article/view/3438
[6] Zeanova, H., Taniwan, P., Putri, R. A., & Faidah, D. Y. (2024). ANALISIS FAKTOR PENYEBAB PENYAKIT TBC DI JAWA BARAT MENGGUNAKAN REGRESI BINOMIAL NEGATIF. ResearchGate.https://www.researchgate.net/publication/387640440_ANALISIS_FAKTOR_PENYEBAB_PENYAKIT_TBC_DI_JAWA_BARAT_MENGGUNAKAN_REGRESI_BINOMIAL_NEGATIF
[7] Kustanto, A. (2025). Socioeconomic Determinants and Tuberculosis Burden: A Panel Data Analysis of Indonesian Provinces [MPRA Paper No. 126466]. Munich Personal RePEc Archive. https://mpra.ub.uni-muenchen.de/126466/
[8] Badan Pusat Statistik. Kepadatan penduduk berdasarkan kabupaten/kota di Jawa Barat [Dataset]. Open Data Jabar.https://opendata.jabarprov.go.id/id/dataset/kepadatan-penduduk-berdasarkan-kabupatenkota-di-jawa-barat
[9] Badan Pusat Statistik. Persentase rumah tangga yang menempati rumah layak huni berdasarkan kabupaten/kota di Jawa Barat [Dataset]. Open Data Jabar.https://opendata.jabarprov.go.id/id/dataset/persentase-rumah-tangga-yang-menempati-rumah-layak-huni-berdasarkan-kabupatenkota-di-jawa-barat
[10] Dinas Kesehatan. Jumlah kasus penyakit tuberkulosis berdasarkan kabupaten/kota di Jawa Barat [Dataset]. Open Data Jabar.https://opendata.jabarprov.go.id/id/dataset/jumlah-kasus-penyakit-tuberkulosis-berdasarkan-kabupatenkota-di-jawa-barat
[11] World Health Organization. Tuberculosis (TB) — Overview. Diakses 2025. (halaman ringkasan tentang penyebab, epidemiologi global, dan penularan). https://www.who.int/health-topics/tuberculosis?utm_.com#tab=tab_1
[12] Centers for Disease Control and Prevention (CDC). Tuberculosis: Causes and How It Spreads. Diakses 2025. https://www.cdc.gov/tb/causes/index.html?utm_.com
[13] Tenny S, Relative Risk, StatPearls. NCBI Bookshelf. 2023. (penjelasan definisi dan perbedaan RR vs OR). https://www.ncbi.nlm.nih.gov/books/NBK430824/?utm_.com
[14] Hilbe, J. M. (2011). Negative Binomial Regression (2nd
ed.). Cambridge University Press. https://www.cambridge.org/core/books/negative-binomial-regression/EE8A589609F77E5BBD7B9DF44F8C2C74
[15] Cameron, A. C., & Trivedi, P. K. (2013). Regression Analysis of Count Data (2nd ed.). Cambridge University Press. https://www.cambridge.org/core/books/regression-analysis-of-count-data/5F0A34DF1E07C6F90ED1D3B7A64E1777