set.seed(1234)

Bagian A. Konsep Teori

  1. Autokorelasi Spasial Positif dan Negatif
    Autokorelasi spasial positif terjadi ketika lokasi yang berdekatan memiliki nilai yang mirip (contoh: kecamatan dengan kasus diare tinggi cenderung berdekatan dengan kecamatan lain yang juga tinggi). Sebaliknya, autokorelasi spasial negatif muncul ketika lokasi berdekatan justru memiliki nilai yang kontras (contoh: kecamatan dengan kasus tinggi berdekatan dengan kecamatan dengan kasus rendah).

  2. Contoh Fenomena

  1. Rumus Matematis dari: Moran’s I \[ I = \frac{N}{S_0} \cdot \frac{\sum_{i=1}^N \sum_{j=1}^N w_{ij}(x_i - \bar{x})(x_j - \bar{x})} {\sum_{i=1}^N (x_i - \bar{x})^2} \] dengan:

Interpretasi Global Moran’s I

Global Moran’s I digunakan untuk mengukur derajat autokorelasi spasial secara keseluruhan dalam suatu wilayah. Nilainya dapat diinterpretasikan sebagai berikut:

  • I > 0 : menunjukkan adanya autokorelasi spasial positif, artinya nilai mirip (kasus tinggi–tinggi atau rendah–rendah) cenderung berdekatan.
  • I < 0 : menunjukkan adanya autokorelasi spasial negatif, yaitu pola “checkerboard” di mana wilayah dengan nilai tinggi dikelilingi wilayah dengan nilai rendah, atau sebaliknya.
  • I ≈ 0 : menunjukkan pola acak, tidak ada indikasi keterkaitan spasial antarwilayah.

Ciri-ciri Global Moran’s I:

  • Mengukur kemiripan secara global di seluruh wilayah studi.
  • Lebih sensitif terhadap covariance antar lokasi.
  • Dapat dipandang sebagai analogi spasial dari koefisien korelasi Pearson, namun mempertimbangkan struktur kedekatan spasial antarunit wilayah.

Geary’s C \[ C = \frac{(N-1) \sum_{i=1}^N \sum_{j=1}^N w_{ij} (x_i - x_j)^2} {2 S_0 \sum_{i=1}^N (x_i - \bar{x})^2} \] dengan:

  • \(C\) = Indeks Geary (Global)
  • \(x_i, x_j\) = nilai variabel pada lokasi \(i\) dan \(j\)
  • \(\bar{x}\) = rata-rata global variabel
  • \(w_{ij}\) = bobot spasial antara lokasi \(i\) dan \(j\)
  • \(S_0 = \sum_{i=1}^N \sum_{j=1}^N w_{ij}\) = total bobot spasial
  • \(N\) = jumlah unit spasial

Interpretasi Nilai

  • C < 1 → Autokorelasi positif (nilai antar tetangga mirip).
  • C > 1 → Autokorelasi negatif (nilai antar tetangga berlawanan).
  • C = 1 → Tidak ada autokorelasi (pola acak).

Karakteristik

  • Lebih sensitif terhadap perbedaan nilai antar tetangga (contrast).
  • Fokus pada variabilitas lokal, bukan kovarians.
  • Bisa menjadi pelengkap Moran’s I, karena kadang hasil yang diperoleh bisa berbeda.

Local Moran’s I \[ I_i = \frac{(x_i - \bar{x})}{m_2} \sum_{j=1}^N w_{ij}(x_j - \bar{x}), \qquad m_2 = \frac{1}{N} \sum_{k=1}^N (x_k - \bar{x})^2 \] dengan:

  • \(I_i\) = Indeks Moran lokal untuk lokasi \(i\)
  • \(x_i\) = nilai variabel di lokasi \(i\)
  • \(\bar{x}\) = rata-rata global variabel
  • \(w_{ij}\) = bobot spasial antara lokasi \(i\) dan \(j\)
  • \(m_2\) = varians rata-rata dari data
  • \(N\) = jumlah unit spasial

Interpretasi Local Moran’s I (LISA)

Local Moran’s I (𝐼ᵢ) digunakan untuk mengukur autokorelasi spasial pada tingkat lokal, yaitu pada masing-masing unit spasial. Interpretasi nilainya adalah sebagai berikut:

  • 𝐼ᵢ > 0 : Unit spasial i memiliki nilai yang mirip dengan tetangganya.
    • Dapat membentuk klaster High–High (nilai tinggi dikelilingi tinggi) atau klaster Low–Low (nilai rendah dikelilingi rendah).
  • 𝐼ᵢ < 0 : Unit spasial i memiliki nilai yang berbeda dengan tetangganya.
    • Menunjukkan adanya outlier spasial, berupa pola High–Low (nilai tinggi dikelilingi rendah) atau Low–High (nilai rendah dikelilingi tinggi).
  • 𝐼ᵢ ≈ 0 : Tidak ada pola lokal yang signifikan, distribusi cenderung acak.

Karakteristik LISA

  • Merupakan ukuran lokal dari autokorelasi spasial.
  • Digunakan untuk mengidentifikasi lokasi spesifik yang membentuk klaster atau outlier.
  • Sering dipakai dalam analisis eksplorasi data spasial (ESDA) untuk menghasilkan peta LISA cluster map.
  • Berfungsi melengkapi Global Moran’s I dengan menunjukkan di mana autokorelasi spasial terjadi.

Getis–Ord \(G_i\)

Tanpa memasukkan lokasi i (local \(G_i\)):

\[ G_i(d) = \frac{\sum_{j \neq i} w_{ij}(d) \, x_j}{\sum_{j \neq i} x_j} \]

dengan:

  • \(x_j\): nilai variabel pada lokasi \(j\) (misalnya jumlah kasus penyakit).

  • \(w_{ij}(d)\): bobot spasial, menunjukkan hubungan atau kedekatan lokasi \(i\) dengan lokasi \(j\) pada jarak \(d\).

  • Perhitungan tidak memasukkan nilai lokasi \(i\) sendiri.

  • Lokasi \(i\) dievaluasi hanya berdasarkan nilai tetangganya.

Memasukkan lokasi i (local \(G_i^*\)): \[ G_i^*(d) = \frac{\sum_{j=1}^N w_{ij}(d) \, x_j}{\sum_{j=1}^N x_j}, \quad \text{dengan } w_{ii}(d) = 1 \]

dengan:

  • Sama seperti sebelumnya, namun nilai di lokasi \(i\) sendiri juga ikut dihitung.
  • Kondisi \(w_{ii}(d) = 1\) berarti lokasi \(i\) diberi bobot penuh dalam perhitungannya.
  • Lebih sensitif dalam mendeteksi hot spot dan cold spot karena memasukkan informasi internal lokasi \(i\).

Nilai besar \(G_i^*\) mengindikasikan hot spot (nilai tinggi dikelilingi tinggi), sedangkan nilai kecil mengindikasikan cold spot.

Standardisasi ke Z-skor (umum di perangkat lunak)

Untuk inferensi, \(G_i^*\) biasanya didistandarisasi menjadi \(z(G_i^*)\).
Bentuk z-skor (yang umum dihitung oleh perangkat lunak) adalah:

\[ z(G_i^*) = \frac{\sum_j w_{ij} x_j - \bar{X} \sum_j w_{ij}} {s \, \sqrt{\frac{N \sum_j w_{ij}^2 - (\sum_j w_{ij})^2}{N-1}}} \]

dengan:

  • \(x_j\): nilai variabel pada lokasi \(j\) (misalnya jumlah kasus penyakit menular di kecamatan \(j\)).
  • \(\bar{X}\): rata-rata dari seluruh nilai variabel.
  • \(w_{ij}\): bobot spasial yang mendefinisikan kedekatan atau hubungan antara lokasi \(i\) dan \(j\).
  • \(N\): jumlah total unit spasial (misalnya jumlah kecamatan di Kota Bandung).
  • \(s\): standar deviasi dari nilai variabel (lihat rumus di atas).

dengan standar deviasi \(s\):

\[ s = \sqrt{\frac{\sum_k (x_k - \bar{X})^2}{N}} \]

Interpretasi Nilai

  • Nilai tinggi 𝐺ᵢ* → menunjukkan adanya hot spot (wilayah dengan nilai tinggi dikelilingi oleh nilai tinggi).
  • Nilai rendah 𝐺ᵢ* → menunjukkan adanya cold spot (wilayah dengan nilai rendah dikelilingi oleh nilai rendah).

Karakteristik

  • Digunakan untuk mendeteksi klaster lokal → dikenal sebagai analisis hot spot.
  • Tidak mendeteksi pola “checkerboard” (tinggi–rendah) seperti pada Moran’s I.
  • Sangat populer dalam pembuatan peta hot spot di bidang epidemiologi dan kriminologi.
  • Memberikan informasi spasial yang lebih intuitif dibandingkan Moran’s I karena langsung mengidentifikasi area panas (hot spot) dan dingin (cold spot).
  1. Perbedaan utama antara ukuran global dan lokal
  • Global: mengukur pola keseluruhan (Moran’s I, Geary’s C).
  • Lokal: mengidentifikasi klaster/spesifik lokasi (Local Moran’s I, Getis–Ord Gi*).

B. Analisis Data (Simulasi)

Packages dan Data Peta Bandung

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(sp)
## Warning: package 'sp' was built under R version 4.4.3
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(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
library(mapview)
## Warning: package 'mapview' was built under R version 4.4.3
library(spData)
# Baca data peta level kecamatan
setwd("C:/Users/Owner/Downloads")
Indo_Kec <- readRDS("gadm36_IDN_3_sp.rds")

# Filter untuk Kota Bandung
Bandung <- Indo_Kec[Indo_Kec$NAME_2 == "Kota Bandung", ]
Bandung$id <- seq_len(nrow(Bandung))
Bandung_sf <- st_as_sf(Bandung)

# Plot peta dengan ggplot
ggplot(Bandung_sf) +
  geom_sf(fill = "grey90", color = "white") +
  labs(title = "Kota Bandung - Unit (contoh)") +
  theme_minimal()

# 2. Neighbor queen
nb <- poly2nb(sf::as_Spatial(Bandung_sf), queen = TRUE)

# 3. Listw untuk analitik global/lokal
lwW <- nb2listw(nb, style = "W") # row-standardized
lwB <- nb2listw(nb, style = "B") # binary (untuk raw G)

# 4. Simulasi variabel acak
N <- nrow(Bandung_sf)
z <- rnorm(N)
lz <- lag.listw(lwW, z)

beta0 <- 1.2
beta1 <- 0.6
beta2 <- 1.0

lambda <- exp(beta0 + beta1 * scale(z) + beta2 * scale(lz))

# 5. Simulasi populasi dan kasus
pop <- round(runif(N, 3000, 8000))
cases <- rpois(N, lambda = lambda * (pop / 10000))

# 6. Buat data tibble
Diare <- tibble(
  id = Bandung_sf$id,
  pop = pop,
  cases = cases,
  rate10k = (cases / pop) * 10000
)

# 7. Merge data dengan shapefile
Bandung_merged <- left_join(Bandung_sf, Diare, by = "id")

# 8. Plot hasil simulasi
ggplot(Bandung_merged) +
  geom_sf(aes(fill = rate10k), color = "white", size = 0.2) +
  scale_fill_viridis_c(option = "magma") +
  labs(title = "Rate Diare (per 10.000) — Simulasi", fill = "Rate") +
  theme_minimal()

Analisis Pola Spasial Visual

Berdasarkan peta choropleth yang dihasilkan dari data simulasi, pola spasial yang terlihat secara visual adalah adanya pengelompokan (klaster) kasus yang jelas.

  • Klaster Kasus Tinggi (Hotspot): Terlihat konsentrasi kecamatan dengan rate diare yang tinggi (diwarnai kuning cerah dan oranye) di wilayah timur Kota Bandung. Kecamatan seperti Gedebage, Rancasari, dan sekitarnya membentuk sebuah “hotspot” di mana rate penyakit jauh lebih tinggi dibandingkan wilayah lain.

  • Klaster Kasus Rendah (Coldspot): Sebaliknya, sebagian besar kecamatan di wilayah barat dan utara menunjukkan rate diare yang sangat rendah (diwarnai ungu tua hingga hitam), membentuk area “dingin” atau coldspot.

  • Kesimpulan Pola: Sebaran kasus dalam simulasi ini tidak acak secara geografis. Adanya klaster ini menunjukkan adanya autokorelasi spasial positif, di mana lokasi yang berdekatan cenderung memiliki nilai rate yang serupa. Dalam skenario nyata, pola seperti ini bisa mengindikasikan adanya faktor risiko lingkungan atau sosial yang terlokalisasi di area tersebut (misalnya, sumber air, sanitasi, dll.).

Bagian C. Pengukuran Autokorelasi

Global Moran’s I

moran_res <- spdep::moran.test(Bandung_merged$rate10k, lwW,
randomisation = TRUE, alternative = "two.sided")
moran_res
## 
##  Moran I test under randomisation
## 
## data:  Bandung_merged$rate10k  
## weights: lwW    
## 
## Moran I statistic standard deviate = 4.1958, p-value = 2.72e-05
## alternative hypothesis: two.sided
## sample estimates:
## Moran I statistic       Expectation          Variance 
##        0.39085537       -0.03448276        0.01027659

Interpretasi Hasil Uji Moran’s I

Berdasarkan output uji statistik autokorelasi spasial, berikut adalah interpretasi hasilnya:

Berapa nilai Moran’s I?

Nilai Moran’s I statistic adalah 0.39085537. Nilai ini positif dan jauh lebih tinggi dari nilai harapan (ekspektasi) di bawah asumsi acak (-0.03448276), yang menjadi indikasi awal adanya autokorelasi spasial positif.

Apakah signifikan secara statistik (uji permutasi)?

Ya, hasilnya sangat signifikan secara statistik. Nilai p-value adalah 2.72e-05 (atau 0.0000272). Karena nilai ini jauh lebih kecil dari ambang batas signifikansi umum (misalnya, \(\alpha = 0.05\)), kita dapat dengan yakin menolak hipotesis nol. Hipotesis nol dalam uji ini menyatakan bahwa data tersebar secara acak di seluruh wilayah tanpa pola tertentu. Hasil ini memberikan wawasan penting mengenai pola spasial penyakit diare:

  • Pola Tidak Acak: Sebaran rate diare di wilayah studi bukanlah acak.

  • Adanya Pengelompokan (Clustering): Nilai Moran’s I yang positif dan signifikan mengonfirmasi adanya autokorelasi spasial positif. Artinya, kecamatan-kecamatan dengan rate diare yang tinggi cenderung berdekatan satu sama lain, dan sebaliknya, kecamatan-kecamatan dengan rate diare yang rendah juga cenderung saling berdekatan.

Secara sederhana, hasil ini membuktikan secara statistik apa yang terlihat secara visual pada peta: terdapat klaster atau pengelompokan kasus diare yang signifikan di Kota Bandung.

Geary’s

geary_res <- spdep::geary.test(Bandung_merged$rate10k, lwW,
randomisation = TRUE, alternative = "two.sided")
geary_res
## 
##  Geary C test under randomisation
## 
## data:  Bandung_merged$rate10k 
## weights: lwW   
## 
## Geary C statistic standard deviate = 3.1866, p-value = 0.00144
## alternative hypothesis: two.sided
## sample estimates:
## Geary C statistic       Expectation          Variance 
##        0.58618326        1.00000000        0.01686418

Perbandingan Moran’s I dengan Geary’s C

Setelah melakukan uji Moran’s I, uji Geary’s C dilakukan sebagai pembanding untuk memperkuat analisis autokorelasi spasial.

Hasil uji Geary’s C mengonfirmasi kesimpulan yang sama dengan uji Moran’s I: terdapat autokorelasi spasial positif yang signifikan (atau pengelompokan) pada data. Nilai statistik Geary’s C adalah 0.586, yang lebih kecil dari nilai harapan (1), dan nilai p-value (0.00144) menunjukkan signifikansi statistik yang tinggi.

Perbedaan Sensitivitas

Perbedaan mendasar antara keduanya terletak pada sensitivitas mereka terhadap pola data yang berbeda.

Moran’s I (Sensitif terhadap Nilai Ekstrem)

Moran’s I mengukur kovariansi spasial dengan membandingkan nilai suatu lokasi dan tetangganya terhadap rata-rata global. Formulanya secara konseptual mirip dengan (nilai_lokasi - rata_rata) * (nilai_tetangga - rata_rata).

  • Sensitivitas: Sangat sensitif terhadap keberadaan nilai-nilai ekstrem (hotspot dan coldspot). Klaster dengan nilai yang sangat tinggi atau sangat rendah akan memberikan kontribusi yang besar pada statistik ini.

Geary’s C (Sensitif terhadap Perbedaan Lokal)

Geary’s C berfokus pada jumlah kuadrat perbedaan antara nilai-nilai yang bertetangga, dengan formula konseptual seperti (nilai_lokasi - nilai_tetangga)². Statistik ini tidak menggunakan rata-rata global.

  • Sensitivitas: Lebih sensitif terhadap variasi atau perbedaan kecil antar tetangga. Ia mengukur seberapa tidak mirip nilai yang saling berdekatan, terlepas dari apakah nilai-nilai itu tinggi atau rendah. Secara umum, Moran’s I lebih kuat untuk mendeteksi pola klaster secara global, sementara Geary’s C lebih unggul dalam mendeteksi variabilitas lokal.

Local Moran’s I (LISA)

x <- scale(Bandung_merged$rate10k)[,1]
lagx <- spdep::lag.listw(lwW, x)
lisa <- spdep::localmoran(x, lwW, alternative = "two.sided", zero.policy = TRUE)
lisa_df <- as.data.frame(lisa)
names(lisa_df) <- c("Ii","Ei","Vi","Zi","Pi.two.sided")
alpha <- 0.05
quad <- dplyr::case_when(
x >= 0 & lagx >= 0 ~ "High-High",
x < 0 & lagx < 0 ~ "Low-Low",
x >= 0 & lagx < 0 ~ "High-Low (Outlier)",
x < 0 & lagx >= 0 ~ "Low-High (Outlier)"
)
Bandung_LISA <- dplyr::bind_cols(Bandung_merged, lisa_df) |>
dplyr::mutate(quad = ifelse(Pi.two.sided <= alpha, quad, "Not significant"))
ggplot(Bandung_LISA) +
geom_sf(aes(fill = quad), color="white", size=0.2) +
scale_fill_manual(values=c(
"High-High"="#d73027","Low-Low"="#4575b4",
"High-Low (Outlier)"="#fdae61","Low-High (Outlier)"="#74add1","Not significant"="grey85"
)) +
labs(title="Local Moran's I (LISA)", fill="Kategori") +
theme_minimal()

# Tabel ringkas nama kecamatan per kategori
Bandung_LISA_summary <- Bandung_LISA %>%
  st_set_geometry(NULL) %>%   # hilangkan geometry supaya gampang ditampilkan
  select(NAME_3, rate10k, quad, Pi.two.sided) %>%
  arrange(quad)

Bandung_LISA_summary
##                NAME_3   rate10k               quad Pi.two.sided
## 6208          Cinambo 11.940299          High-High 0.0027505032
## 6211         Gedebage 48.880479          High-High 0.0009279768
## 6215      Panyileukan 33.210977          High-High 0.0217139063
## 6216        Rancasari 22.607385          High-High 0.0291607312
## 6221        Arcamanik  4.361099 Low-High (Outlier) 0.0020932229
## 6199            Andir  0.000000    Not significant 0.0862708903
## 6210         Antapani 15.581178    Not significant 0.6157487013
## 6223      Astanaanyar  0.000000    Not significant 0.1227090869
## 6224  Babakan Ciparay  0.000000    Not significant 0.2187774733
## 6225    Bandung Kidul  1.530925    Not significant 0.2222519040
## 6226    Bandung Kulon  0.000000    Not significant 0.3726771288
## 6227    Bandung Wetan  0.000000    Not significant 0.1170166384
## 6228      Batununggal  0.000000    Not significant 0.2609151801
## 6200  Bojongloa Kaler  1.717328    Not significant 0.1951702138
## 6201  Bojongloa Kidul  0.000000    Not significant 0.2468191217
## 6202         Buahbatu  5.359057    Not significant 0.7377181212
## 6203 Cibeunying Kaler  0.000000    Not significant 0.3571524867
## 6204 Cibeunying Kidul  1.445922    Not significant 0.7348295955
## 6205           Cibiru  2.898551    Not significant 0.1371976061
## 6206          Cicendo  1.786991    Not significant 0.1940025147
## 6207          Cidadap  0.000000    Not significant 0.7578799826
## 6209          Coblong  2.172496    Not significant 0.1896032752
## 6212     Kiaracondong  5.241090    Not significant 0.6754597403
## 6213         Lengkong  5.597015    Not significant 0.2320921445
## 6214      Mandalajati 21.545920    Not significant 0.9781082670
## 6217            Regol  0.000000    Not significant 0.2338896860
## 6218         Sukajadi  2.021427    Not significant 0.4014959669
## 6219         Sukasari 10.979359    Not significant 0.4766714509
## 6220    Sumur Bandung  0.000000    Not significant 0.1166396617
## 6222     Ujung Berung  4.010159    Not significant 0.0917193990

Analisis Klaster Spasial Lokal (LISA)

Analisis Indikator Lokal Autokorelasi Spasial (LISA) dilakukan untuk mengidentifikasi lokasi spesifik dari klaster spasial dan outlier. Berdasarkan hasil yang signifikan secara statistik, berikut adalah identifikasi dan interpretasinya.

Identifikasi Kecamatan Berdasarkan Kategori

  • High-High (Hotspot): Klaster kecamatan dengan rate penyakit tinggi yang dikelilingi oleh tetangga dengan rate tinggi juga.
    • Cinambo
    • Gedebage
    • Panyileukan
    • Rancasari
  • Low-High (Outlier Spasial): Kecamatan dengan rate penyakit rendah, namun dikelilingi oleh tetangga dengan rate tinggi.
    • Arcamanik
  • Low-Low & High-Low: Tidak ada kecamatan yang teridentifikasi secara signifikan dalam kategori ini pada hasil analisis.

Interpretasi dalam Konteks Penyakit Menular

Setiap kategori spasial ini memberikan implikasi strategis untuk tindakan kesehatan masyarakat.

High-High (Hotspot)

Ini adalah area paling kritis yang menunjukkan adanya penularan lokal yang aktif dan meluas. Faktor-faktor lingkungan, sosial, atau infrastruktur kemungkinan besar berperan di sini. Wilayah ini harus menjadi prioritas utama untuk tindakan seperti surveilans aktif, promosi kesehatan intensif, dan perbaikan infrastruktur sanitasi.

Low-High (Outlier)

Kecamatan Arcamanik adalah kasus “pulau sehat” yang sangat menarik. Meskipun dikepung oleh wilayah berisiko tinggi, kecamatan ini berhasil menjaga rate-nya tetap rendah. Area ini perlu dipelajari secara mendalam untuk mengidentifikasi faktor protektif atau program kesehatan lokal yang berhasil. Keberhasilannya dapat menjadi model solusi untuk direplikasi di area hotspot di sekitarnya.

Low-Low (Coldspot)

Klaster Low-Low (tidak ditemukan di sini) menunjukkan area di mana tingkat penyakit secara konsisten rendah. Area ini berfungsi sebagai benchmark atau bukti keberhasilan program kesehatan jangka panjang yang bisa menjadi contoh bagi wilayah lain.

High-Low (Outlier)

Sebuah kecamatan High-Low (tidak ditemukan di sini) berfungsi sebagai alarm peringatan dini dari potensi wabah baru. Ini bisa menandakan kasus impor atau sumber penularan baru yang sangat terlokalisir. Tindakan investigasi dan penahanan yang cepat sangat krusial di area ini.

Getis–Ord

x_raw <- Bandung_merged$rate10k
sum_x <- sum(x_raw)
# Matriks bobot biner (tidak distandarisasi)
Wb <- spdep::listw2mat(lwB) # diag=0 secara default
# G_i (tanpa i)
num_G <- as.numeric(Wb %*% x_raw) # Σ_{ji} w_ij x_j
den_G <- (sum_x - x_raw) # Σ_{ji} x_j
G_raw <- num_G / den_G
# G_i^* (dengan i) — set w_ii = 1
Wb_star <- Wb; diag(Wb_star) <- 1
num_Gs <- as.numeric(Wb_star %*% x_raw) # Σ_j w_ij^* x_j
den_Gs <- sum_x # Σ_j x_j
G_star_raw <- num_Gs / den_Gs
# Z-skor (yang dihitung spdep::localG)
Gz <- spdep::localG(x_raw, listw = lwW) # z(G_i^*) dengan listw yang diberikan
Bandung_G <- dplyr::mutate(Bandung_merged,
G_raw = G_raw,
G_star_raw = G_star_raw,
z_Gistar = as.numeric(Gz),
hotcold = dplyr::case_when(
z_Gistar >= 1.96 ~ "Hot spot (p0.05)",
z_Gistar <= -1.96 ~ "Cold spot (p0.05)",
TRUE ~ "Not significant"
))
summary(dplyr::select(Bandung_G, G_raw, G_star_raw, z_Gistar))
##      G_raw           G_star_raw         z_Gistar                geometry 
##  Min.   :0.00000   Min.   :0.00000   Min.   :-1.7154   MULTIPOLYGON :30  
##  1st Qu.:0.01741   1st Qu.:0.02948   1st Qu.:-1.2275   epsg:NA      : 0  
##  Median :0.06439   Median :0.06943   Median :-0.8652   +proj=long...: 0  
##  Mean   :0.14625   Mean   :0.16909   Mean   :-0.1056                     
##  3rd Qu.:0.21543   3rd Qu.:0.25709   3rd Qu.: 0.4811                     
##  Max.   :0.65444   Max.   :0.66187   Max.   : 3.3115
ggplot(Bandung_G) +
geom_sf(aes(fill = G_star_raw), color="white", size=0.2) +
scale_fill_viridis_c() +
labs(title="Raw Getis–Ord G* (proporsi massa tetangga)", fill="G*_raw") +
theme_minimal()

ggplot(Bandung_G) +
geom_sf(aes(fill = hotcold), color="white", size=0.2) +
scale_fill_manual(values=c("Hot spot (p0.05)"="#b2182b",
"Cold spot (p0.05)"="#2166ac",
"Not significant"="grey85")) +
labs(title="Getis–Ord Gi* — Hot/Cold Spots (z-skor)", fill=NULL) +
theme_minimal()

Hasil Analisis Getis–Ord Gi*

Berdasarkan hasil analisis Getis–Ord Gi* terhadap kasus penyakit menular di Kota Bandung, diperoleh temuan sebagai berikut:

  • Hot spot (p < 0.05): Kecamatan Cinambo, Gedebage, Panyileukan, dan Rancasari. Artinya, di wilayah ini terdapat konsentrasi kasus yang signifikan tinggi dibandingkan dengan wilayah sekitarnya.

  • Cold spot (p < 0.05): Tidak ada kecamatan yang termasuk dalam kategori cold spot signifikan.

  • Wilayah lain dikategorikan sebagai tidak signifikan, sehingga distribusi kasusnya dianggap relatif acak.


Perbandingan dengan Hasil LISA

  • Hasil LISA sebelumnya juga mengidentifikasi klaster High-High signifikan di kecamatan yang sama: Cinambo, Gedebage, Panyileukan, dan Rancasari.

  • Tidak ada wilayah yang masuk kategori Low-Low signifikan pada hasil LISA, yang konsisten dengan hasil Gi* yang juga tidak menemukan adanya cold spot.

  • Hasil LISA juga mengidentifikasi satu outlier spasial Low-High (Kecamatan Arcamanik), yang tidak terdeteksi oleh analisis Gi*.


Kesimpulan

  • Terdapat perbedaan wilayah signifikan antara hasil analisis Getis–Ord Gi* dan LISA. Perbedaan tersebut adalah kemampuan LISA untuk mendeteksi outlier spasial (Low-High), sementara Gi* hanya fokus pada klaster nilai sejenis (hotspot/coldspot).

  • Meskipun demikian, kedua metode sama-sama menegaskan bahwa wilayah tenggara Kota Bandung merupakan hotspot utama penyakit menular, sehingga perlu menjadi fokus prioritas intervensi kesehatan masyarakat.

Bagian D. Diskusi Kritis

1. Implikasi Analisis Autokorelasi Spasial bagi Strategi Dinas Kesehatan

Hasil analisis autokorelasi spasial (Moran’s I, LISA, dan Getis–Ord Gi*) menunjukkan bahwa kasus penyakit menular di Kota Bandung tidak tersebar secara acak, melainkan membentuk klaster signifikan. Informasi ini penting bagi dinas kesehatan dalam menyusun strategi pencegahan dan intervensi, karena:

  1. Identifikasi Wilayah Prioritas Hotspot signifikan di wilayah timur (misalnya Cinambo,Penyileukan,Gedebage, Rancasari) dapat ditetapkan sebagai fokus utama intervensi, sementara coldspot di pusat kota cukup dipantau.

  2. Efisiensi Alokasi Sumber Daya Program vaksinasi, surveilans aktif, fogging, dan penyuluhan kesehatan dapat diarahkan terutama ke wilayah klaster, sehingga sumber daya digunakan lebih efisien.

  3. Pengendalian Penularan Antarwilayah Karena kasus tinggi cenderung muncul berdekatan, strategi pencegahan sebaiknya dilakukan lintas kecamatan yang bertetangga, bukan hanya per kecamatan secara terpisah.

  4. Perbaikan Faktor Lingkungan & Sosial Klaster penyakit sering berkaitan dengan kepadatan penduduk,sanitasi, dan mobilitas, sehingga hasil analisis dapat menjadi dasar kolaborasi lintas sektor (lingkungan, pekerjaan umum,perencanaan wilayah).

  5. Perencanaan Jangka Panjang Pola hotspot yang konsisten dapat dimasukkan ke dalam rencana pembangunan jangka menengah (RPJMD) bidang kesehatan, terutama untuk perbaikan sanitasi dan infrastruktur di wilayah timur.


Kesimpulan:
Analisis autokorelasi spasial memberikan dinas kesehatan peta risiko berbasis data yang membantu menentukan wilayah prioritas, mengoptimalkan alokasi sumber daya, serta merancang program pencegahan dan intervensi yang lebih efektif, efisien, dan tepat sasaran bagi Kota Bandung.

2. Keterbatasan Analisis Autokorelasi Spasial

Meskipun analisis autokorelasi spasial bermanfaat dalam mengidentifikasi pola klaster penyakit, terdapat beberapa keterbatasan penting yang perlu diperhatikan:

  1. MAUP (Modifiable Areal Unit Problem)
    • Hasil analisis sangat dipengaruhi oleh tingkat agregasi wilayah (misalnya kecamatan, kelurahan, RT/RW).
    • Perubahan skala atau batas administrasi dapat menghasilkan nilai dan pola autokorelasi yang berbeda, sehingga kesimpulan klaster bisa bergeser hanya karena perbedaan unit analisis.
  2. Ukuran Bobot Spasial (Spatial Weights Matrix)
    • Pemilihan matriks bobot spasial (misalnya rook contiguity, queen contiguity, atau k-nearest neighbors) memengaruhi hasil analisis.
    • Tidak ada definisi bobot yang benar secara absolut; pemilihan harus disesuaikan dengan konteks epidemiologi dan hubungan antarwilayah.
  3. Masalah Multiple Testing (Analisis Lokal)
    • Pada analisis lokal seperti LISA atau Gi*, dilakukan banyak uji statistik untuk tiap unit wilayah.
    • Hal ini meningkatkan risiko false positive (menemukan klaster signifikan padahal tidak nyata).
    • Koreksi statistik (misalnya Bonferroni correction atau False Discovery Rate/FDR) sering diperlukan agar hasil lebih reliabel.

Kesimpulan: Analisis autokorelasi spasial memberikan informasi penting mengenai pola penyakit, namun hasilnya harus ditafsirkan dengan hati-hati. Keterbatasan terkait MAUP, pemilihan bobot spasial, dan masalah multiple testing perlu dipertimbangkan, serta dikombinasikan dengan pemahaman epidemiologis dan konteks lokal sebelum digunakan sebagai dasar pengambilan kebijakan.