2 ABSTRAK

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.

3 PENDAHULUAN

3.1 Latar Belakang

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].

3.2 Rumusan Masalah

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.

3.3 Tujuan

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:

  1. Mengetahui tingkat kejadian dan distribusi spasial kasus TBC di setiap kabupaten/kota di Provinsi Jawa Barat.

  2. Menganalisis perbedaan tingkat kasus TBC antar wilayah di Provinsi Jawa Barat.

  3. Mengidentifikasi pengaruh faktor wilayah seperti kepadatan penduduk dan kondisi hunian terhadap tingginya angka kejadian TBC.

4 TINJAUAN PUSTAKA

4.1 Agent, Host, dan Environment

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.

4.2 Ukuran Asosiasi

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].

4.3 Desain Studi

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.

5 METODOLOGI

5.1 Sumber Data

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.

5.2 Variabel Penelitian

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.

5.3 Metode Analisis

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:

  1. Eksplorasi Data
    Melakukan analisis deskriptif terhadap variabel penelitian (kasus TBC, kepadatan penduduk, dan hunian layak) dan menampilkan ukuran pemusatan serta penyebaran.

  2. Pemetaan Spasial
    Membuat peta persebaran kasus TBC menggunakan dengan tujuan melihat distribusi kasus antar wilayah secara visual.

  3. 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.

  4. Penghitungan Prevalensi
    Menghitung prevalensi TBC per 100.000 penduduk untuk menggambarkan proporsi penduduk yang menderita TBC pada waktu pengamatan tertentu.

  5. 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].

  6. 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].

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

5.4 Alur Kerja Penelitian

  1. Pengumpulan Data = Mengunduh dan menggabungkan data sekunder dari berbagai sumber (Open Data Jabar, BPS, dan Dinas Kesehatan).

  2. Eksplorasi dan Visualisasi Data = Menyusun analisis deskriptif dan peta persebaran kasus TBC antar kabupaten/kota.

  3. Uji Autokorelasi Spasial = Mengidentifikasi pola ketergantungan spasial secara global (Moran’s I) dan lokal (LISA).

  4. Penghitungan Prevalensi = Menghitung prevalensi TBC per 100.000 penduduk untuk tiap wilayah.

  5. Pemodelan Regresi Binomial Negatif = Menentukan model terbaik berdasarkan uji dispersi dan AIC.

  6. Interpretasi PRR = Menafsirkan hasil model untuk memahami pengaruh faktor wilayah terhadap peningkatan atau penurunan prevalensi TBC.

6 HASIL DAN PEMBAHASAN

6.1 Tabel Hasil

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
  )

6.1.1 Prevalensi

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

6.1.2 Data Deskriptif

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

6.2 Peta

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

6.2.1 Peta Sebaran

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.

6.2.2 Local Moran ’S I (LISA)

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

6.3 Analisis Regresi

6.3.1 Korelasi

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.

6.3.2 Regresi Poisson

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.

6.3.3 Prevalence Rate Ratio Binomial Negatif

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

6.4 Interpretasi

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.

7 KESIMPULAN DAN SARAN

7.1 Kesimpulan

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.

7.2 Saran

  • Bagi Pemerintah Daerah
    Perlu memperkuat program peningkatan kualitas hunian, khususnya di kawasan padat penduduk, serta memastikan tersedianya ventilasi dan sanitasi yang memadai untuk menekan risiko penularan TBC.
  • Bagi Dinas Kesehatan
    Disarankan untuk memperluas kegiatan surveilans, meningkatkan cakupan deteksi dini, serta memperkuat edukasi masyarakat mengenai pentingnya perilaku hidup bersih dan sehat sebagai langkah pencegahan TBC.
  • Bagi Peneliti Selanjutnya
    Dapat menambahkan variabel sosial ekonomi lain seperti tingkat pendidikan, pendapatan, atau status pekerjaan guna memperoleh pemahaman yang lebih komprehensif tentang faktor determinan TBC di tingkat kabupaten/kota.

8 DAFTAR PUSTAKA

[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