PENDAHULUAN

Latar Belakang

Tuberkulosis (TBC) masih menjadi salah satu masalah kesehatan masyarakat yang serius di Indonesia. Penyakit ini disebabkan oleh bakteri Mycobacterium tuberculosis yang menyerang paru-paru dan dapat menyebar melalui udara ketika penderita batuk atau bersin. Meskipun TBC dapat disembuhkan, tingkat penularannya yang tinggi serta lamanya masa pengobatan menjadikan penyakit ini sulit dikendalikan secara tuntas. Indonesia sendiri menempati peringkat ketiga dengan jumlah kasus TBC terbanyak di dunia setelah India dan Tiongkok. Kondisi ini menunjukkan bahwa TBC masih menjadi tantangan besar bagi sistem kesehatan nasional yang menuntut upaya pencegahan dan penanggulangan yang lebih efektif dan berbasis bukti ilmiah.

Provinsi Jawa Barat merupakan salah satu daerah dengan beban kasus TBC tertinggi di Indonesia. Dengan jumlah penduduk yang sangat besar dan tingkat urbanisasi yang cepat, Jawa Barat menghadapi tantangan dalam pengendalian penyakit menular, termasuk TBC. Daerah padat penduduk seperti Kota Bandung, Bekasi, dan Depok menjadi wilayah dengan risiko penularan lebih tinggi karena interaksi sosial yang intens dan kualitas lingkungan yang kurang memadai. Selain itu, faktor-faktor sosial ekonomi seperti kemiskinan, kepadatan permukiman, serta akses terhadap pelayanan kesehatan juga memengaruhi tingkat kejadian TBC di setiap kabupaten/kota. Hal ini membuat variasi spasial kasus TBC di Jawa Barat menjadi penting untuk dipahami secara mendalam. Selain faktor lingkungan dan kepadatan penduduk, kondisi kesehatan masyarakat juga berperan besar dalam penyebaran TBC. Komorbiditas seperti HIV/AIDS dan Diabetes Mellitus diketahui meningkatkan kerentanan individu terhadap infeksi Mycobacterium tuberculosis. Penderita HIV/AIDS memiliki sistem kekebalan tubuh yang lemah, sehingga lebih mudah terinfeksi dan menularkan TBC. Begitu pula dengan penderita Diabetes Mellitus, yang mengalami penurunan fungsi imun sehingga berpotensi memperparah kondisi TBC. Oleh karena itu, analisis yang mengaitkan faktor-faktor tersebut dengan kasus TBC dapat memberikan gambaran yang lebih komprehensif mengenai pola penyebaran dan risiko di tingkat lokal.

Identifikasi Masalah

Berdasarkan latar belakang yang telah diuraikan, permasalahan utama yang dihadapi adalah masih tingginya jumlah kasus Tuberkulosis (TBC) di Provinsi Jawa Barat yang menunjukkan adanya pola persebaran tidak merata antarwilayah kabupaten/kota. Beberapa daerah melaporkan jumlah kasus yang jauh lebih tinggi dibandingkan wilayah lainnya, yang mengindikasikan adanya faktor-faktor tertentu yang memengaruhi penyebaran penyakit ini. Fenomena tersebut menimbulkan pertanyaan mengenai bagaimana pola spasial kasus TBC di Jawa Barat, apakah terdistribusi secara acak, mengelompok (clustered), atau tersebar merata (dispersed). Pemahaman terhadap pola sebaran ini sangat penting untuk mengidentifikasi daerah dengan risiko penularan tinggi serta untuk merancang strategi intervensi yang lebih tepat sasaran.

Selain pola persebaran, perlu juga dikaji faktor-faktor yang berpotensi memengaruhi variasi spasial kasus TBC. Faktor sosial ekonomi dan kesehatan seperti jumlah penderita HIV/AIDS, jumlah penderita Diabetes Mellitus, kepadatan penduduk, serta persentase penduduk miskin diduga memiliki hubungan yang kuat dengan kejadian TBC. Individu dengan HIV/AIDS atau Diabetes Mellitus memiliki sistem kekebalan tubuh yang lemah, sehingga lebih rentan terhadap infeksi TBC. Sementara itu, kepadatan penduduk yang tinggi dan tingkat kemiskinan yang besar dapat memperburuk kondisi lingkungan serta menghambat akses terhadap pelayanan kesehatan yang memadai. Oleh karena itu, penting untuk menelusuri sejauh mana faktor-faktor tersebut berkontribusi terhadap persebaran TBC di setiap kabupaten/kota di Jawa Barat.

Tujuan Penelitian

Penelitian ini bertujuan untuk menganalisis pola sebaran spasial kasus TBC di kabupaten/kota Provinsi Jawa Barat serta mengidentifikasi pengaruh variabel HIV/AIDS, Diabetes Mellitus, kepadatan penduduk, dan persentase penduduk miskin terhadap jumlah kasus TBC menggunakan pendekatan model ekonometrika spasial.

Batasan Penelitian

Penelitian ini dibatasi pada wilayah administratif kabupaten/kota di Provinsi Jawa Barat dengan menggunakan data sekunder pada periode tertentu. Variabel independen yang digunakan meliputi jumlah kasus HIV/AIDS (X1), jumlah penderita Diabetes Mellitus (X2), kepadatan penduduk per km² (X3), dan persentase penduduk miskin (X4), sedangkan variabel dependen adalah jumlah kasus TBC. Analisis difokuskan pada hubungan spasial antarwilayah tanpa meninjau faktor individual atau temporal secara mendalam.

TINJAUAN PUSTAKA

Teori Dasar Spatial Dependence

Spatial dependence atau ketergantungan spasial menggambarkan kondisi di mana suatu fenomena pada satu lokasi dipengaruhi oleh fenomena di lokasi sekitarnya. Spatial dependence diukur dengan statistik seperti Moran’s I, Geary’s C, dan Local Indicators of Spatial Association (LISA), yang mendeteksi apakah nilai-nilai di lokasi berdekatan cenderung mirip (autokorelasi positif) atau berbeda (autokorelasi negatif) (Chia-Hsien Lin et al., 2022). Dalam konteks kesehatan masyarakat, seperti kasus TBC, wilayah dengan tingkat kejadian tinggi cenderung berdekatan dengan wilayah lain yang juga memiliki tingkat kejadian tinggi. Studi di Taiwan menunjukkan bahwa insiden TBC di suatu wilayah sangat dipengaruhi oleh insiden di wilayah tetangga, bahkan setelah memperhitungkan faktor sosial ekonomi (In-Chan Ng et al., 2012). Prinsip ini sejalan dengan Tobler’s First Law of Geography yang menyatakan bahwa everything is related to everything else, but near things are more related than distant things. Oleh karena itu, analisis spasial diperlukan untuk mengidentifikasi adanya pola keterkaitan antarwilayah, yang tidak dapat dijelaskan hanya dengan analisis statistik konvensional.

Autokorelasi Spasial

Autokorelasi spasial digunakan untuk mengukur sejauh mana nilai suatu variabel di satu lokasi berkorelasi dengan nilai di lokasi lain yang berdekatan. Terdapat dua jenis analisis autokorelasi spasial, yaitu Global Moran’s I dan Local Moran’s I (LISA). Global Moran’s I digunakan untuk menilai apakah pola spasial secara keseluruhan bersifat mengelompok (clustered), acak (random), atau menyebar (dispersed), sedangkan Local Moran’s I digunakan untuk mengidentifikasi lokasi-lokasi spesifik yang membentuk klaster signifikan, seperti wilayah dengan kasus TBC tinggi yang berdekatan dengan wilayah serupa (High-High) atau rendah dengan rendah (Low-Low). Kedua ukuran ini penting untuk memahami pola sebaran penyakit dan mendeteksi daerah prioritas penanganan.

Model Spasial

Model ekonometrika spasial digunakan untuk menganalisis hubungan antar variabel dengan mempertimbangkan efek spasial. Dua model utama yang umum digunakan adalah Spatial Error Model (SEM) dan Spatial Autoregressive Model (SAR). Model SAR memasukkan ketergantungan spasial melalui variabel dependen, menunjukkan bahwa nilai TBC di suatu wilayah dipengaruhi oleh nilai TBC di wilayah sekitar. Sebaliknya, model SEM memperhitungkan korelasi spasial pada komponen error, yang menunjukkan adanya faktor spasial yang tidak teramati tetapi memengaruhi variabel dependen. Dengan membandingkan kedua model ini, dapat diketahui apakah pengaruh spasial lebih dominan berasal dari interaksi antarwilayah atau dari faktor-faktor tak teramati dalam struktur residual.

Spatial Autoregresive (SAR)

Model Spatial Autoregressive (SAR) secara khusus dirancang untuk menangkap ketergantungan spasial pada data, yaitu kondisi di mana nilai TBC di suatu wilayah dipengaruhi oleh nilai TBC di wilayah sekitarnya. SAR memasukkan variabel dependen (jumlah kasus TBC) dari wilayah tetangga sebagai prediktor dalam model, sehingga mampu mengukur efek penyebaran antar wilayah secara langsung. SAR menambahkan komponen spatial lag dari variabel dependen (jumlah kasus TBC di wilayah sekitar) ke dalam persamaan regresi. Dengan demikian, model ini mengasumsikan bahwa peningkatan kasus TBC di satu wilayah akan meningkatkan risiko di wilayah tetangga (Hasrat Ifolala Zebua et al., 2022). Penelitian di Jawa Tengah dan Jawa Barat menunjukkan bahwa model SAR lebih baik dalam menjelaskan pola kasus TBC dibandingkan model regresi biasa, karena mampu menangkap pengaruh spasial antar wilayah.

Secara umum bentuk dari model SAR, sebagai berikut :

\[ \mathbf{y} = \rho \mathbf{W}\mathbf{y} + \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon} \]

dengan keterangan :

\(\mathbf{y}\) : vektor variabel dependen (kasus TBC di tiap kabupaten/kota)

\(\rho\) : koefisien autokorelasi spasial (spatial autoregressive coefficient)

\(\mathbf{W}\) : matriks bobot spasial (misalnya berbasis queen contiguity atau k-nearest neighbors)

\(\mathbf{W}\mathbf{y}\) : pengaruh rata-rata kasus TBC dari wilayah tetangga

\(\mathbf{X}\) : matriks variabel independen

\(\boldsymbol{\beta}\) : vektor koefisien regresi

\(\boldsymbol{\varepsilon}\) : error (diasumsikan berdistribusi normal dengan varian konstan)

Spatial Error Model (SEM)

Model Spatial Error Model (SEM) memperhitungkan korelasi spasial pada komponen error, artinya SEM menangkap pengaruh faktor-faktor spasial yang tidak teramati namun tetap memengaruhi variabel dependen (misal: kasus TBC di suatu wilayah). SEM sangat berguna ketika ada variabel atau proses spasial yang tidak terukur secara langsung, tetapi menyebabkan residual (error) antar wilayah menjadi saling berkaitan. SEM mengasumsikan bahwa error (residual) dari satu wilayah berkorelasi dengan error wilayah sekitarnya, sehingga model ini efektif untuk mengidentifikasi pengaruh spasial yang tidak teramati (R. Buchalter et al., 2024). Dalam SEM, struktur spasial dimasukkan ke dalam error term, bukan pada variabel dependen seperti pada SAR/SLM. Ini memungkinkan SEM menangkap pola klaster atau autokorelasi spasial yang berasal dari faktor eksternal yang tidak diukur.

Secara umum, model dari SEM sebagai berikut : 

\[ \mathbf{y} = \mathbf{X}\boldsymbol{\beta} + \mathbf{u} \]

\[ \mathbf{u} = \lambda \mathbf{W}\mathbf{u} + \boldsymbol{\varepsilon} \]

dengan keterangan:

\(\mathbf{y}\) : vektor variabel dependen (jumlah kasus TBC)

\(\mathbf{X}\) : matriks variabel independen

\(\boldsymbol{\beta}\) : vektor koefisien regresi

\(\mathbf{u}\) : error yang mengandung efek spasial

\(\lambda\) : koefisien autokorelasi error spasial

\(\mathbf{W}\) : matriks bobot spasial

\(\boldsymbol{\varepsilon}\) : error acak independen dan identik terdistribusi \(N(0, \sigma^2 \mathbf{I})\)

Jika digabungkan, maka model dapat ditulis:

\[ \mathbf{y} = \mathbf{X}\boldsymbol{\beta} + \lambda \mathbf{W}\mathbf{u} + \boldsymbol{\varepsilon} \]

METODOLOGI PENELITIAN

Data

Data yang digunakan dalam penelitian ini merupakan data sekunder yang diperoleh dari sumber resmi seperti Dinas Kesehatan Provinsi Jawa Barat dan Badan Pusat Statistik (BPS). Variabel dependen yang digunakan adalah jumlah kasus Tuberkulosis (TBC) di setiap kabupaten/kota, sedangkan variabel independennya meliputi jumlah kasus HIV/AIDS baru (X1), jumlah penderita Diabetes Mellitus (X2), kepadatan penduduk per km² (X3), dan persentase penduduk miskin (X4). Data yang dikumpulkan mencerminkan kondisi sosial, ekonomi, dan kesehatan masyarakat pada periode penelitian yang telah ditentukan.

Unit Spasial

Unit spasial yang digunakan dalam penelitian ini adalah wilayah administratif tingkat kabupaten/kota di Provinsi Jawa Barat. Setiap unit spasial direpresentasikan dalam bentuk poligon pada peta digital (shapefile), yang berfungsi untuk menganalisis hubungan spasial antarwilayah. Pemilihan unit ini didasarkan pada ketersediaan data dan peran kabupaten/kota sebagai pelaksana utama program pengendalian penyakit TBC di tingkat daerah.

Metode Analisis

Analisis yang digunakan terdiri atas analisis deskriptif spasial, autokorelasi spasial, dan model regresi spasial. Analisis deskriptif dilakukan untuk memvisualisasikan persebaran kasus TBC di Jawa Barat. Autokorelasi spasial dihitung menggunakan Global Moran’s I untuk mendeteksi pola sebaran secara keseluruhan dan Local Moran’s I (LISA) untuk mengidentifikasi klaster signifikan antarwilayah. Selanjutnya, dilakukan pemodelan menggunakan Spatial Autoregressive Model (SAR) dan Spatial Error Model (SEM) untuk menganalisis pengaruh variabel independen terhadap jumlah kasus TBC dengan mempertimbangkan efek spasial, serta membandingkan model mana yang memberikan hasil paling sesuai.

Alur Kerja Penelitian

Penelitian ini diawali dengan pengumpulan dan pengolahan data sekunder dari berbagai sumber resmi, kemudian dilakukan penyusunan peta dan pembentukan matriks pembobot spasial (spatial weights matrix). Selanjutnya dilakukan analisis autokorelasi spasial untuk mendeteksi adanya ketergantungan spasial antarwilayah. Setelah itu dilakukan pemodelan menggunakan model SAR dan SEM untuk mengetahui faktor-faktor yang memengaruhi jumlah kasus TBC. Tahap akhir penelitian adalah interpretasi hasil analisis, penarikan kesimpulan, dan penyusunan rekomendasi kebijakan berbasis spasial untuk penanggulangan TBC di Jawa Barat.

HASIL PENELITIAN

library(sf)
library(dplyr)
library(spdep)
library(tmap)

# --- 1. Shapefile ---
indo_lvl2 <- st_read("C:/Users/Lenovo/Downloads/gadm41_IDN_shp/gadm41_IDN_2.shp")

jabar_shp <- indo_lvl2 %>%
  filter(NAME_1 == "Jawa Barat") %>%
  mutate(KabKota = NAME_2) %>%
  filter(KabKota != "Waduk Cirata")   # langsung drop disini

# --- 2. Data CSV ---
data = read.csv(file.choose()) #data format csv

data <- data %>%
  mutate(KabKota = dplyr::recode(Kabupaten.Kota,
                          "Kota Banjar"  = "Banjar",
                          "Kota Cimahi"  = "Cimahi",
                          "Kota Depok"   = "Depok",
                          .default = Kabupaten.Kota))
# --- 3. Join ---
jabar_data <- left_join(jabar_shp, data, by = "KabKota")
str(jabar_data)

Peta Deskriptif

Kabupaten/Kota Provinsi Jawa Barat

Dengan data kasus Tuberkulosis (TBC) tahun 2023 yang telah dihimpun dari seluruh kabupaten dan kota di Provinsi Jawa Barat, diperoleh peta distribusi yang menggambarkan persebaran kasus TBC di wilayah tersebut, sebagai berikut :

tmap_mode("plot")

map_tbc <- tm_shape(jabar_data) +
  tm_fill("Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.",
          style = "quantile",
          palette = "Reds",
          title = "Kasus TBC (Awal)") +
  tm_borders() +
  tm_layout(title = "Peta Distribusi Awal Kasus TBC di Jawa Barat")

print(map_tbc)

Peta di atas menunjukkan sebaran jumlah kasus Tuberkulosis (TBC) di tingkat kabupaten/kota di Provinsi Jawa Barat pada tahun 2023. Warna yang semakin gelap menggambarkan wilayah dengan jumlah kasus TBC yang semakin tinggi, sedangkan warna yang lebih terang menunjukkan wilayah dengan jumlah kasus yang relatif rendah. Secara umum, terlihat bahwa persebaran kasus TBC di Jawa Barat tidak merata antarwilayah, dengan konsentrasi kasus yang cenderung tinggi di beberapa kota besar dan daerah dengan tingkat kepadatan penduduk tinggi.

Wilayah bagian barat dan selatan Jawa Barat, seperti Kota Bekasi, Kabupaten Bekasi, Kota Bandung, Kabupaten Bandung, dan Kabupaten Bogor, tampak memiliki warna merah tua hingga merah gelap, yang menunjukkan jumlah kasus TBC tertinggi (lebih dari 7.928 kasus, bahkan hingga lebih dari 11.000 kasus di beberapa wilayah). Hal ini dapat dikaitkan dengan karakteristik daerah-daerah tersebut yang merupakan kawasan metropolitan dengan jumlah penduduk padat, mobilitas tinggi, dan kepadatan permukiman yang besar — kondisi yang sangat mendukung penularan penyakit menular seperti TBC. Sementara itu, beberapa wilayah di bagian timur dan tenggara Jawa Barat seperti Kabupaten Pangandaran, Kabupaten Tasikmalaya, dan Kabupaten Kuningan tampak berwarna lebih terang, menandakan jumlah kasus TBC yang relatif lebih rendah (sekitar 1.000–4.000 kasus). Daerah-daerah ini umumnya memiliki kepadatan penduduk lebih rendah dan karakteristik wilayah yang lebih rural, sehingga tingkat kontak antarindividu cenderung lebih kecil.

Statistik Deskriptif Data

Analisis statistik deskriptif dilakukan untuk memberikan gambaran umum mengenai karakteristik data yang digunakan dalam penelitian ini, sehingga dapat diketahui pola, sebaran, serta kecenderungan dari setiap variabel yang diamati. Hasil statistik deskriptif dapat dilihat pada bagian berikut :

summary(jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1140    3994    5467    7781   10574   26912

Berdasarkan hasil analisis statistik deskriptif, jumlah kasus TBC di Jawa Barat menunjukkan variasi yang cukup tinggi antar wilayah. Nilai minimum sebesar 1.140 kasus menunjukkan wilayah dengan jumlah kasus terendah, sedangkan maksimum mencapai 26.912 kasus, menandakan adanya kabupaten/kota dengan beban kasus yang sangat besar. Nilai median sebesar 5.467 kasus menunjukkan bahwa setengah dari wilayah memiliki jumlah kasus di bawah angka tersebut. Sementara itu, rata-rata (mean) sebesar 7.781 kasus yang lebih tinggi dari median mengindikasikan adanya distribusi miring ke kanan (right-skewed), yaitu beberapa wilayah dengan jumlah kasus sangat tinggi yang menaikkan nilai rata-rata. Dengan demikian, sebaran kasus TBC di Jawa Barat tergolong tidak merata dan masih terkonsentrasi di beberapa daerah tertentu.

Distribusi Kasus TBC Jawa Barat (Histogram)

Untuk melengkapi informasi peta persebaran, dilakukan analisis deskriptif terhadap data jumlah kasus TBC di setiap kabupaten/kota di Provinsi Jawa Barat. Visualisasi dalam bentuk histogram berikut menggambarkan distribusi frekuensi jumlah kasus TBC di wilayah tersebut selama tahun 2023. Tujuannya adalah untuk mengetahui bagaimana penyebaran nilai kasus antarwilayah apakah cenderung merata, terpusat pada nilai tertentu, atau menunjukkan perbedaan yang ekstrem antar daerah

hist(jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.,
     main = "Distribusi Kasus TBC Jawa Barat",
     xlab = "Jumlah Kasus", col = "lightblue", border = "white")

Uji Autokorelasi Spasial

Global Moran’s I

# --- 4. Spatial Weights ---
nb <- poly2nb(jabar_data, queen = TRUE)
lw <- nb2listw(nb, style = "W", zero.policy = TRUE)

# --- 5. Moran Test ---
moran.test(jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y., lw)
## 
##  Moran I test under randomisation
## 
## data:  jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.  
## weights: lw    
## 
## Moran I statistic standard deviate = 2.9365, p-value = 0.00166
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic       Expectation          Variance 
##        0.34378742       -0.04000000        0.01708125

Berdasarkan hasil perhitungan uji Moran’s I, diperoleh nilai statistik Moran’s I sebesar 0,3438 dengan nilai z-score sebesar 2,9365 dan p-value = 0,00166. Nilai Moran’s I yang positif menunjukkan adanya autokorelasi spasial positif pada persebaran kasus TBC di kabupaten/kota Provinsi Jawa Barat tahun 2023. Artinya, wilayah dengan jumlah kasus TBC yang tinggi cenderung berdekatan dengan wilayah lain yang juga memiliki kasus tinggi, begitu pula sebaliknya wilayah dengan kasus rendah cenderung berdekatan dengan wilayah berkasus rendah. Karena nilai p-value jauh lebih kecil dari taraf signifikansi 0,05, maka hipotesis nol (tidak ada autokorelasi spasial) ditolak. Dengan demikian, dapat disimpulkan bahwa persebaran kasus TBC di Jawa Barat tidak bersifat acak, melainkan menunjukkan pola spasial yang mengelompok (clustered) secara signifikan.

Local Moran’s I

# --- 6. Local Moran ---
local_moran <- localmoran(jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y., lw)
jabar_data$Ii    <- local_moran[, 1]
jabar_data$Z.Ii  <- local_moran[, 4]
jabar_data$Pval  <- local_moran[, 5]

# --- 7. Klasifikasi LISA Cluster ---
mean_val <- mean(jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y., na.rm = TRUE)
lag_val  <- lag.listw(lw, jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.)

jabar_data$Quadrant <- "Not Sig."
for (i in 1:nrow(jabar_data)) {
  if (jabar_data$Pval[i] <= 0.05) {
    if (jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.[i] >= mean_val & lag_val[i] >= mean(lag_val, na.rm = TRUE)) {
      jabar_data$Quadrant[i] <- "High-High"
    } else if (jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.[i] <= mean_val & lag_val[i] <= mean(lag_val, na.rm = TRUE)) {
      jabar_data$Quadrant[i] <- "Low-Low"
    } else if (jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.[i] >= mean_val & lag_val[i] <= mean(lag_val, na.rm = TRUE)) {
      jabar_data$Quadrant[i] <- "High-Low"
    } else if (jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.[i] <= mean_val & lag_val[i] >= mean(lag_val, na.rm = TRUE)) {
      jabar_data$Quadrant[i] <- "Low-High"
    }
  }
}

library(tmap)

tmap_mode("plot")  # ubah jadi mode plot (statis)

map_cluster <- tm_shape(jabar_data) +
  tm_fill("Quadrant",
          palette = c("red", "blue", "orange", "cyan", "grey"),
          title = "LISA Cluster TBC") +
  tm_borders() +
  tm_text("KabKota", size = 0.7, col = "black") +
  tm_layout(title = "Peta LISA TBC Jawa Barat (2023)",
            legend.outside = TRUE)

print(map_cluster)

Hasil analisis LISA cluster menunjukkan adanya empat wilayah yang masuk kategori High-High (hot spots) yaitu Bekasi, Bogor, Kota Bekasi, dan Kota Bogor. Artinya, wilayah tersebut memiliki nilai tinggi dan dikelilingi oleh wilayah dengan nilai tinggi pula, sehingga membentuk kluster spasial positif yang signifikan. Sementara itu, Kabupaten Ciamis termasuk dalam kategori Low-Low (cold spot), yang berarti wilayah ini memiliki nilai rendah dan dikelilingi oleh wilayah dengan nilai rendah. Selain itu, terdapat satu wilayah dalam kategori Low-High, yangmenandakan adanya outlier spasial (wilayah dengan nilai rendah tetapi dikelilingi wilayah bernilai tinggi).

Kesimpulan

Berdasarkan ketiga hasil uji, dapat disimpulkan bahwa pola spasial pada data tidak sepenuhnya acak. Uji Moran’s I menunjukkan adanya autokorelasi spasial global yang signifikan, artinya terdapat kecenderungan wilayah dengan karakteristik serupa untuk saling berdekatan. Analisis LISA cluster memperjelas temuan tersebut dengan mengidentifikasi kluster spasial yang nyata, yakni wilayah High-High (hot spots) di Bekasi, Bogor, Kota Bekasi, dan Kota Bogor, serta Low-Low (cold spot) di Ciamis, sementara sebagian besar wilayah lainnya tidak menunjukkan pola signifikan. Dengan demikian, dapat disimpulkan bahwa terdapat autokorelasi spasial global yang signifikan dengan konsentrasi pola di beberapa wilayah tertentu, sehingga analisis spasial lanjutan masih relevan untuk mendalami faktor penyebab dan implikasinya terhadap distribusi kasus TBC di Jawa Barat.

Estimasi Model

Spatial Autoregressice (SAR)

Berdasarkan hasil estimasi model Spatial Autoregressive (SAR) di atas, dapat disimpulkan bahwa terdapat dua variabel independen yang berpengaruh signifikan terhadap jumlah kasus Tuberkulosis (TBC) di kabupaten/kota Provinsi Jawa Barat, yaitu jumlah kasus HIV/AIDS dan jumlah penderita Diabetes Mellitus. Variabel jumlah kasus HIV/AIDS (X1) memiliki koefisien sebesar 2624.93 dengan nilai p 0.00048 (<0.05), menunjukkan hubungan positif dan signifikan, artinya setiap peningkatan satu unit kasus HIV/AIDS berasosiasi dengan kenaikan sekitar 2625 kasus TBC. Hal ini menegaskan bahwa penderita HIV/AIDS memiliki kerentanan tinggi terhadap infeksi TBC karena sistem kekebalan tubuh yang menurun. Selanjutnya, variabel jumlah penderita Diabetes Mellitus (X2) juga menunjukkan pengaruh positif signifikan dengan koefisien 2630.75 dan nilai p 0.00045 (<0.05). Ini berarti bahwa semakin banyak penderita diabetes di suatu wilayah, semakin tinggi pula potensi peningkatan kasus TBC. Secara medis, diabetes dapat memperlemah sistem imun, sehingga individu lebih mudah terinfeksi Mycobacterium tuberculosis.

Sementara itu, variabel kepadatan penduduk (X3) dan persentase penduduk miskin (X4) menunjukkan arah hubungan negatif namun tidak signifikan dengan nilai p masing-masing 0.099 dan 0.170 (>0.05). Meskipun kepadatan penduduk dan kemiskinan secara teoritis berpotensi meningkatkan risiko penularan TBC, dalam konteks wilayah Jawa Barat data menunjukkan bahwa pengaruhnya tidak cukup kuat secara statistik.

Spatial Error Model (SEM)

Call: errorsarlm(formula = fmla, data = model_df_std, listw = lw_sub, method = ‘eigen’, zero.policy = TRUE)

Residuals: Min 1Q Median 3Q Max -5924.748 -996.062 -15.651 2017.111 5753.805

Type: error

Coefficients: (asymptotic standard errors)

                                             Estimate  Std. Error  z value  Pr(>|z|)

(Intercept) 7523.44 941.27 7.9929 1.332e-15 Jumlah.Kasus.Penyakit…HIV.AIDS.Kasus.Baru..X1. 2844.00 666.85 4.2648 2.001e-05 Jumlah.Penderita…Diabetes.Mellitus..X2. 2628.50 687.97 3.8206 0.0001331 Kepadatan.Penduduk.per.km.2..X3. -1424.57 871.63 -1.6344 0.1021814 Persentase.Penduduk.Miskin..X4. -835.63 906.77 -0.9215 0.3567677

Lambda: 0.4263, LR test value: 2.9463, p-value: 0.086074 Asymptotic standard error: 0.20002 z-value: 2.1313, p-value: 0.033067 Wald statistic: 4.5423, p-value: 0.033067

Berdasarkan hasil analisis Spatial Error Model (SEM), diperoleh bahwa dari empat variabel independen yang diuji, dua variabel yaitu jumlah kasus HIV/AIDS dan jumlah penderita Diabetes Mellitus berpengaruh positif dan signifikan terhadap peningkatan kasus TBC di kabupaten/kota Provinsi Jawa Barat. Hal ini menunjukkan bahwa semakin tinggi jumlah penderita HIV/AIDS dan diabetes di suatu wilayah, maka semakin tinggi pula jumlah kasus TBC yang terjadi. Sementara itu, variabel kepadatan penduduk dan persentase penduduk miskin menunjukkan pengaruh negatif namun tidak signifikan, sehingga secara statistik belum terbukti berpengaruh terhadap jumlah kasus TBC. Dengan demikian, hasil ini mengindikasikan bahwa faktor kesehatan komorbid lebih berperan penting dalam peningkatan kasus TBC dibandingkan faktor sosial ekonomi dan demografis pada wilayah penelitian.

Perbandingan Model

AIC SAR: 501.6042 AIC SEM: 500.2111

Nilai AIC yang lebih rendah menunjukkan model dengan tingkat kesesuaian (goodness of fit) yang lebih baik terhadap data, serta kompleksitas model yang lebih optimal. Dalam hal ini, model SEM memiliki nilai AIC yang lebih kecil dibandingkan model SAR, yang berarti model SEM lebih baik dalam menjelaskan variasi data kasus TBC di Provinsi Jawa Barat. Dengan demikian, dapat disimpulkan bahwa Spatial Error Model (SEM) merupakan model yang lebih sesuai digunakan dalam analisis spasial persebaran kasus TBC, karena mampu menangkap pengaruh kesalahan spasial (spatial error dependence) dengan lebih baik dibandingkan model SAR yang berfokus pada ketergantungan spasial langsung antarwilayah.

KESIMPULAN & SARAN

Berdasarkan hasil analisis spasial terhadap persebaran kasus Tuberkulosis (TBC) di kabupaten/kota Provinsi Jawa Barat tahun 2023, dapat disimpulkan bahwa pola penyebaran kasus TBC tidak bersifat acak, melainkan menunjukkan adanya autokorelasi spasial positif. Hal ini dibuktikan dengan hasil uji Moran’s I yang signifikan (p-value 0,00166), yang menunjukkan bahwa wilayah dengan jumlah kasus tinggi cenderung berdekatan dengan wilayah lain yang juga memiliki kasus tinggi (pola clustered). Sementara itu, uji Geary’s C tidak signifikan, menandakan bahwa perbedaan nilai antarwilayah tetangga tidak terlalu tajam, sehingga pola spasial lebih dominan pada tingkat global dibandingkan lokal. Analisis LISA cluster mengonfirmasi keberadaan kluster spasial signifikan, terutama pada wilayah Bekasi, Kota Bekasi, Bogor, dan Kota Bogor yang termasuk kategori High-High (hotspots), serta Ciamis sebagai Low-Low (coldspot).

Hasil uji asumsi multikolinearitas menunjukkan bahwa seluruh variabel independen memiliki nilai VIF < 5, sehingga tidak terdapat gejala multikolinearitas dan seluruh variabel dapat digunakan dalam model analisis. Selanjutnya, hasil estimasi model Spatial Error Model (SEM) dan Spatial Autoregressive Model (SAR) menunjukkan bahwa dua variabel, yaitu jumlah kasus HIV/AIDS (X1) dan jumlah penderita Diabetes Mellitus (X2), memiliki pengaruh positif dan signifikan terhadap jumlah kasus TBC. Artinya, semakin tinggi prevalensi HIV/AIDS dan diabetes di suatu wilayah, semakin tinggi pula risiko peningkatan kasus TBC. Sebaliknya, variabel kepadatan penduduk (X3) dan persentase penduduk miskin (X4) berpengaruh negatif namun tidak signifikan, sehingga belum terbukti secara statistik memengaruhi jumlah kasus TBC.

Berdasarkan perbandingan nilai Akaike Information Criterion (AIC), diperoleh bahwa model SEM (AIC = 500.2111) lebih baik dibandingkan model SAR (AIC = 501.6042), yang berarti model SEM lebih sesuai dalam menjelaskan variasi spasial kasus TBC di Jawa Barat. Model SEM dinilai lebih mampu menangkap efek kesalahan spasial antarwilayah, yang menggambarkan adanya pengaruh faktor tak teramati atau kondisi lingkungan yang serupa di daerah berdekatan.

Secara keseluruhan, hasil penelitian ini menunjukkan bahwa faktor kesehatan komorbid (HIV/AIDS dan Diabetes Mellitus) memiliki kontribusi dominan terhadap peningkatan kasus TBC dibandingkan faktor sosial ekonomi dan demografis. Selain itu, adanya pola spasial yang signifikan menunjukkan bahwa penanggulangan TBC perlu dilakukan secara terarah dan berbasis wilayah (spatial targeting), dengan prioritas intervensi difokuskan pada daerah-daerah berisiko tinggi seperti Bekasi, Kota Bekasi, Bogor, dan Kota Bogor. Pendekatan spasial ini diharapkan dapat membantu Dinas Kesehatan Provinsi Jawa Barat dalam menyusun strategi pencegahan dan pengendalian TBC yang lebih efektif dan tepat sasaran.

DAFTAR PUSTAKA

Saifudin, T., Aisyah, A., Indrasta, I., & Amelia, D. (2024). Analysis of Factors Affecting Tuberculosis Cases in West Java Province Using Panel Data Regression Approach. JTAM (Jurnal Teori dan Aplikasi Matematika. https://doi.org/10.31764/jtam.v8i4.24795

Zebua, H., & Jaya, I. (2022). Spatial Autoregressive Model of Tuberculosis Cases in Central Java Province 2019. CAUCHY. https://doi.org/10.18860/ca.v7i2.13451

Buchalter, R., Mohan, S., & Schold, J. (2024). Geospatial Modeling Methods in Epidemiological Kidney Research: An Overview and Practical Example. Kidney International Reports, 9, 807–816. https://doi.org/10.1016/j.ekir.2024.01.017

Link Dashboard : https://ricardofilemon.shinyapps.io/AnalisisSpasialTBC/

LAMPIRAN

# library(sf)
library(dplyr)
library(spdep)
library(tmap)

# --- 1. Shapefile ---
indo_lvl2 <- st_read("C:/Users/Lenovo/Downloads/gadm41_IDN_shp/gadm41_IDN_2.shp")

jabar_shp <- indo_lvl2 %>%
  filter(NAME_1 == "Jawa Barat") %>%
  mutate(KabKota = NAME_2) %>%
  filter(KabKota != "Waduk Cirata")   # langsung drop disini

# --- 2. Data CSV ---
data = read.csv(file.choose()) #data format csv

data <- data %>%
  mutate(KabKota = dplyr::recode(Kabupaten.Kota,
                          "Kota Banjar"  = "Banjar",
                          "Kota Cimahi"  = "Cimahi",
                          "Kota Depok"   = "Depok",
                          .default = Kabupaten.Kota))
# --- 3. Join ---
jabar_data <- left_join(jabar_shp, data, by = "KabKota")
str(jabar_data)

# =========================================================
# --- Tambahan: Eksplorasi Data Spasial ---
# Statistik deskriptif
summary(jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.)

# Distribusi histogram
hist(jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.,
     main = "Distribusi Kasus TBC Jawa Barat",
     xlab = "Jumlah Kasus", col = "lightblue", border = "white")

# Peta awal (plot biasa)
tmap_mode("plot")
tm_shape(jabar_data) +
  tm_fill("Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.",
          style = "quantile",
          palette = "Reds",
          title = "Kasus TBC (Awal)") +
  tm_borders() +
  tm_layout(title = "Peta Distribusi Awal Kasus TBC di Jawa Barat")
# =========================================================

# --- 4. Spatial Weights ---
nb <- poly2nb(jabar_data, queen = TRUE)
lw <- nb2listw(nb, style = "W", zero.policy = TRUE)

# --- 5. Moran Test ---
moran.test(jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y., lw)

# --- 6. Local Moran ---
local_moran <- localmoran(jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y., lw)
jabar_data$Ii    <- local_moran[, 1]
jabar_data$Z.Ii  <- local_moran[, 4]
jabar_data$Pval  <- local_moran[, 5]

# --- 7. Klasifikasi LISA Cluster ---
mean_val <- mean(jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y., na.rm = TRUE)
lag_val  <- lag.listw(lw, jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.)

jabar_data$Quadrant <- "Not Sig."
for (i in 1:nrow(jabar_data)) {
  if (jabar_data$Pval[i] <= 0.05) {
    if (jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.[i] >= mean_val & lag_val[i] >= mean(lag_val, na.rm = TRUE)) {
      jabar_data$Quadrant[i] <- "High-High"
    } else if (jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.[i] <= mean_val & lag_val[i] <= mean(lag_val, na.rm = TRUE)) {
      jabar_data$Quadrant[i] <- "Low-Low"
    } else if (jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.[i] >= mean_val & lag_val[i] <= mean(lag_val, na.rm = TRUE)) {
      jabar_data$Quadrant[i] <- "High-Low"
    } else if (jabar_data$Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y.[i] <= mean_val & lag_val[i] >= mean(lag_val, na.rm = TRUE)) {
      jabar_data$Quadrant[i] <- "Low-High"
    }
  }
}

# --- 9. Visualisasi Interaktif ---
tmap_mode("view")

# Peta cluster interaktif
tm_shape(jabar_data) +
  tm_fill("Quadrant",
          palette = c("red", "blue", "orange", "cyan", "grey"),
          title = "LISA Cluster TBC") +
  tm_borders() +
  tm_text("KabKota", size = 0.7, col = "black") +
  tm_layout(title = "Peta Interaktif LISA TBC Jawa Barat (2023)")

# Peta signifikansi interaktif
tm_shape(jabar_data) +
  tm_fill("Pval",
          style = "fixed",
          breaks = c(0, 0.05, 1),
          palette = c("red", "white"),
          title = "Signifikan (p < 0.05)") +
  tm_borders() +
  tm_text("KabKota", size = 0.7, col = "black") +
  tm_layout(title = "Peta Interaktif Signifikansi Local Moran's I")



# ---------------------------------------------
# Estimasi model spasial: SEM (error) dan SAR (lag)
# ---------------------------------------------
# Pastikan package
if (!requireNamespace("spatialreg", quietly = TRUE)) install.packages("spatialreg")
library(spatialreg)
if (!requireNamespace("car", quietly = TRUE)) install.packages("car") # untuk VIF
library(car)
names(data)
# 0. Tentukan variabel dependen (Y) dan independen (Xs)
# Ganti nama-nama variabel di bawah sesuai dengan kolom Anda
Y_var <- "Jumlah.Kasus.Penyakit...Angka.Penemuan.TBC..Y."   # contoh: kasus TBC
X_vars <- c("Jumlah.Kasus.Penyakit...HIV.AIDS.Kasus.Baru..X1.", "Jumlah.Penderita...Diabetes.Mellitus..X2.", "Kepadatan.Penduduk.per.km.2..X3.", "Persentase.Penduduk.Miskin..X4.") 
# <-- GANTI dengan nama kolom independen yang ada di 'jabar_data' atau 'data'

# 1. Persiapkan data non-geometri untuk pemodelan (hapus baris dengan NA pada variabel terlibat)
model_df <- jabar_data %>%
  dplyr::select(all_of(c("KabKota", Y_var, X_vars))) %>%
  st_set_geometry(NULL) %>%      # hapus geometri, jadi data.frame biasa
  na.omit()                      # drop baris yang ada NA pada variabel yg dipakai

# 2. Cek ukuran sampel setelah NA removal
nrow(model_df)  # pastikan cukup observasi untuk jumlah X_vars

# 3. Formula model
fmla <- as.formula(paste(Y_var, "~", paste(X_vars, collapse = " + ")))

# 4. Cek multikolinearitas (VIF)
lm_plain <- lm(fmla, data = model_df)
print(summary(lm_plain))
vif_vals <- vif(lm_plain)
print(vif_vals)
# Jika VIF > 10 (atau > 5), pertimbangkan hapus / gabungkan variabel

# 5. Pastikan weights sesuai dengan model_df (karena kita mungkin telah drop beberapa baris)
# Konversi nb / listw ke subset yang sesuai urutan model_df
# Ambil nb dengan indeks numeric
idx_keep <- match(model_df$KabKota, jabar_data$KabKota)
nb_sub <- nb[idx_keep]

# Buat listw
lw_sub <- nb2listw(nb_sub, style = "W", zero.policy = TRUE)

# 6. Estimasi SAR (spatial lag model)
library(spatialreg)
library(dplyr)
# A. Standarisasi variabel independen dulu
model_df_std <- model_df %>%
  mutate(across(all_of(X_vars), ~ scale(.x)))

# buat formula & lm ulang
lm_std <- lm(fmla, data = model_df_std)
car::vif(lm_std)
kappa(model.matrix(lm_std))

# B. Refit SAR pakai data dinormalisasi
sar_model <- lagsarlm(fmla, data = model_df_std, listw = lw_sub, method = "eigen", zero.policy = TRUE)
summary(sar_model)

# 7. Estimasi SEM (spatial error model)
sem_model <- errorsarlm(fmla, data = model_df_std, listw = lw_sub, method = "eigen", zero.policy = TRUE)
summary(sem_model)

# 8. Bandingkan AIC / logLik
cat("AIC SAR:", AIC(sar_model), "\n")
cat("AIC SEM:", AIC(sem_model), "\n")

# 9. Uji autokorelasi pada residual (Moran's I pada residual)
library(spdep)
resid_sar <- residuals(sar_model)
resid_sem <- residuals(sem_model)

moran_resid_sar <- moran.test(resid_sar, lw_sub, alternative = "two.sided", zero.policy = TRUE)
moran_resid_sem <- moran.test(resid_sem, lw_sub, alternative = "two.sided", zero.policy = TRUE)

print(moran_resid_sar)
print(moran_resid_sem)

# 10. Interpretasi singkat output (tampilkan parameter spasial)
cat("SAR rho (spatial autoregressive parameter):", sar_model$rho, "\n")
cat("SEM lambda (spatial error parameter):", sem_model$lambda, "\n")

# 11. Jika ingin, simpan residual & prediksi ke sf original untuk peta
model_df$pred_sar <- predict(sar_model)
model_df$resid_sar <- resid_sar
model_df$pred_sem <- predict(sem_model)
model_df$resid_sem <- resid_sem

# Gabungkan kembali ke jabar_data (hati-hati dengan urutan)
jabar_data_mod <- jabar_data %>%
  left_join(model_df %>% dplyr::select(KabKota, pred_sar, resid_sar, pred_sem, resid_sem),
            by = "KabKota")

# 12. Peta residual SAR (cek apakah residual masih berautokorelasi)
library(tmap)
tmap_mode("plot")
tm_shape(jabar_data_mod) +
  tm_fill("resid_sar", style = "quantile", title = "Residual SAR") +
  tm_borders()

tm_shape(jabar_data_mod) +
  tm_fill("resid_sem", style = "quantile", title = "Residual SEM") +
  tm_borders()