Bagian A. Konsep Teori

1. Autokorelasi Spasial Positif dan Negatif

Autokorelasi spasial positif adalah kondisi di mana nilai-nilai yang mirip (misalnya, nilai tinggi dengan nilai tinggi atau nilai rendah dengan nilai rendah) cenderung berkumpul atau berdekatan satu sama lain di ruang geografis. Hal ini menunjukkan adanya pola pengelompokan (clustering).

Autokorelasi spasial negatif adalah kondisi di mana nilai-nilai yang berlawanan cenderung berdekatan. Ini menciptakan pola seperti papan catur (checkerboard) di mana nilai tinggi dikelilingi oleh nilai rendah, atau sebaliknya.

2. Contoh Fenomena

Autokorelasi Spasial Positif: - Tingkat kasus penyakit menular yang tinggi di suatu wilayah cenderung berdekatan dengan wilayah lain dengan tingkat kasus yang tinggi. - Harga properti yang tinggi di satu lingkungan cenderung berdekatan dengan properti lain yang juga memiliki harga tinggi.

Autokorelasi Spasial Negatif: - Sebuah toko yang memiliki penjualan sangat tinggi berlokasi di sebelah toko lain yang penjualannya sangat rendah. - Di suatu wilayah dengan ketersediaan air minum yang terbatas, populasi tikus yang tinggi di satu area bisa berdekatan dengan populasi tikus yang rendah di area lain.

3. Rumus Matematis

  • Moran’s I (Global) \(I=\frac{N}{S_{0}}\cdot\frac{\sum_{i=1}^{N}\sum_{j=1}^{N}w_{ij}(x_{i}-\overline{x})(x_{j}-\overline{x})}{\sum_{i=1}^{N}(x_{i}-\overline{x})^{2}}\)
  • Geary’s C (Global) \(C=\frac{(N-1)\sum_{i=1}^{N}\sum_{j=1}^{N}w_{ij}(x_{i}-x_{j})^{2}}{2S_{0}\sum_{i=1}^{N}(x_{i}-\overline{x})^{2}}\)
  • Local Moran’s I_i (LISA) \(I_{i}=\frac{x_{i}-\overline{x}}{m_{2}}\sum_{j=1}^{N}w_{ij}(x_{j}-\overline{x}),\) di mana \(m_{2}=\frac{1}{N}\sum_{k=1}^{N}(x_{k}-\overline{x})^{2}\)
  • Getis-Ord G_i dan \(G\_i^{\*}\) Untuk G_i: \(G_{i}(d)=\frac{\sum_{j\ne i}w_{ij}(d)x_{j}}{\sum_{j\ne i}x_{j}}\) Untuk \(G\_i^{\*}\): \(G_{i}^{*}(d)=\frac{\sum_{j=1}^{N}w_{ij}(d)x_{j}}{\sum_{j=1}^{N}x_{j}},\) dengan \(w_{ii}(d)=1\)

4. Perbedaan Utama Ukuran Global dan Lokal

  • Ukuran Global (seperti Moran’s I dan Geary’s C) mengukur tingkat autokorelasi spasial untuk seluruh wilayah secara keseluruhan. Ukuran ini memberikan satu nilai ringkasan yang menjelaskan apakah ada pola pengelompokan atau tidak, tetapi tidak menunjukkan lokasi persis dari klaster tersebut.
  • Ukuran Lokal (seperti Local Moran’s I dan Getis-Ord) digunakan untuk mengidentifikasi lokasi spesifik dari klaster atau outlier spasial. Ini membantu menjawab pertanyaan “di mana” autokorelasi terjadi dengan menunjukkan area-area yang memiliki nilai serupa dengan tetangganya (hot spot dan cold spot) atau berbeda dari tetangganya (outlier).

Bagian B. Analisis Data (Simulasi)

1. Penjelasan Data

Dinas Kesehatan Kota Bandung sedang menghadapi kekhawatiran terkait penyebaran Demam Berdarah Dengue (DBD) di seluruh kota. Untuk mengatasi hal ini, mereka mengumpulkan data kasus DBD dan populasi dari setiap 30 kecamatan. Dengan data ini, para analis dapat mengidentifikasi pola spasial, seperti di mana kasus tinggi mengelompok (hotspot), sehingga dinas kesehatan dapat menyusun strategi intervensi dan alokasi sumber daya dengan lebih tepat sasaran di area yang paling membutuhkan. ## 2. Data Simulasi & Distribusi Poisson

library(sf)
## Warning: package 'sf' was built under R version 4.3.3
## Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE
library(spdep)
## Warning: package 'spdep' was built under R version 4.3.3
## Loading required package: spData
## Warning: package 'spData' was built under R version 4.3.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.3.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)
library(viridis)
## Warning: package 'viridis' was built under R version 4.3.3
## Loading required package: viridisLite
# Membuat peta simulasi 30 poligon
set.seed(123) 
bb <- st_bbox(c(xmin = 107.55, ymin = -6.98, xmax = 107.72, ymax = -6.85), crs = 4326)
Bandung_sf <- st_make_grid(bb, n = c(6, 5), what = "polygons") %>%
  st_as_sf() %>%
  mutate(id = row_number())
# Membuat matriks bobot spasial (Queen contiguity)
nb <- poly2nb(as_Spatial(Bandung_sf), queen = TRUE)
lwW <- nb2listw(nb, style = "W")
# Mensimulasikan penyakit dengan pola spasial
N <- nrow(Bandung_sf)
pop <- round(runif(N, 5000, 15000)) # Populasi simulasi
# Menghasilkan variabel dengan autokorelasi spasial
z <- rnorm(N)
lag_z <- lag.listw(lwW, z)
# Menggunakan model Poisson untuk mensimulasikan kasus penyakit (lag_z)
beta0 <- 1.5
beta1 <- 0.8
beta2 <- 1.2 
lambda <- exp(beta0 + beta1 * scale(z) + beta2 * scale(lag_z)) * (pop / 10000)
cases <- rpois(N, lambda)
# Menggabungkan data simulasi dengan spasial
Penyakit_Simulasi <- tibble(
  id = Bandung_sf$id,
  pop = pop,
  cases = cases,
  rate_per_10k = (cases / pop) * 10000
)
Bandung_merged <- left_join(Bandung_sf, Penyakit_Simulasi, by = "id")

3. Peta Choropleth

setwd("D:/SEMESTER 5/Spasial")
peta_bandung_sf <- st_read("BANDUNG.shp")
## Reading layer `BANDUNG' from data source `D:\SEMESTER 5\Spasial\BANDUNG.shp' using driver `ESRI Shapefile'
## Simple feature collection with 30 features and 12 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: 107.5453 ymin: -6.969748 xmax: 107.7395 ymax: -6.840746
## Geodetic CRS:  WGS84 Lat/Long's, Degrees, -180 ==> +180
peta_bandung_sf <- peta_bandung_sf %>%
  mutate(id = row_number())
Bandung_merged <- peta_bandung_sf %>%
  left_join(Penyakit_Simulasi, by = "id")
ggplot(data = Bandung_merged) +
  geom_sf(aes(fill = rate_per_10k), color = "white", size = 0.2) +
  scale_fill_viridis(option = "magma", name = "Laju (per 10K)") +
  labs(title = "Peta Laju Penyakit DBD Kota Bandung") +
  theme_minimal() +
  theme(axis.text = element_blank(),
        axis.title = element_blank(),
        panel.grid.major = element_line(color = "grey80"),
        panel.grid.minor = element_blank())

## 4. Pola spasial yang terlihat secara visual Berdasarkan visualisasi, pola spasial yang terlihat adalah adanya clustering atau pengelompokan. Wilayah dengan laju penyakit Demam Berdarah Dengue (DBD) yang tinggi (ditandai dengan warna kuning muda) cenderung terkumpul di satu area, sementara wilayah dengan laju penyakit rendah (ditandai dengan warna ungu gelap hingga hitam) juga cenderung berkelompok bersama di area lain. Pola ini menunjukkan adanya autokorelasi spasial positif, di mana nilai laju penyakit di suatu kecamatan memiliki kemiripan dengan nilai laju penyakit di kecamatan-kecamatan tetangganya.

Bagian C. Pengukuran Autokorelasi

1. Hitung Moran’s I untuk data simulasi kasus diare di Kota Bandung

nb <- poly2nb(as_Spatial(peta_bandung_sf), queen = TRUE)
lwW <- nb2listw(nb, style = "W")
moran_test_result <- moran.test(Bandung_merged$rate_per_10k, listw = lwW,
                                randomisation = TRUE, alternative = "two.sided")
moran_test_result
## 
##  Moran I test under randomisation
## 
## data:  Bandung_merged$rate_per_10k  
## weights: lwW    
## 
## Moran I statistic standard deviate = 0.9964, p-value = 0.3191
## alternative hypothesis: two.sided
## sample estimates:
## Moran I statistic       Expectation          Variance 
##       0.053324882      -0.034482759       0.007766015

Interpretasi: Berdasarkan hasil uji Moran’s I, nilai Moran’s I adalah 0.0533. Nilai ini mendekati 0, yang menunjukkan adanya pola yang cenderung acak. Secara statistik, hasil ini tidak signifikan, karena nilai p-value (0.3191) jauh lebih besar dari batas signifikansi umum (α = 0.05). Oleh karena itu, kita tidak memiliki cukup bukti untuk menolak hipotesis bahwa pola laju penyakit DBD di kecamatan-kecamatan Kota Bandung tersebar secara acak. Ini berarti, secara global, tidak ada pengelompokan yang signifikan dari kasus DBD yang tinggi atau rendah di wilayah yang berdekatan.

2. Hitung Geary’s C.

nb <- poly2nb(as_Spatial(peta_bandung_sf), queen = TRUE)
lwW <- nb2listw(nb, style = "W")
# Geary's C
geary_test_result <- geary.test(Bandung_merged$rate_per_10k, listw = lwW,
                                randomisation = TRUE, alternative = "two.sided")
geary_test_result
## 
##  Geary C test under randomisation
## 
## data:  Bandung_merged$rate_per_10k 
## weights: lwW   
## 
## Geary C statistic standard deviate = -0.55475, p-value = 0.5791
## alternative hypothesis: two.sided
## sample estimates:
## Geary C statistic       Expectation          Variance 
##        1.07636807        1.00000000        0.01895065

Perbandingan dengan Moran’s I

Moran’s I tidak signifikan (p-value 0.3191) dan Geary’s C juga tidak signifikan (p-value 0.5791). Kedua hasil ini konsisten dalam menunjukkan bahwa tidak ada autokorelasi spasial yang signifikan secara global pada data laju penyakit DBD simulasi. ### Perbedaan Moran’s I tidak signifikan dan Geary’s C - Moran’s I lebih sensitif terhadap kovariansi atau kemiripan nilai antar lokasi. Moran’s I mengukur seberapa besar nilai variabel di suatu lokasi berkorelasi dengan nilai rata-rata dari tetangganya. - Geary’s C lebih sensitif terhadap perbedaan atau variabilitas nilai antar lokasi yang berdekatan. Geary’s C mengukur seberapa besar perbedaan kuadrat antara nilai suatu lokasi dengan nilai tetangganya. Ini membuatnya lebih peka terhadap “kontras” atau variasi lokal.

3. Hitung Local Moran’s I (LISA)

Local Moran’s I (LISA) digunakan untuk mengidentifikasi klaster dan outlier spasial lokal secara spesifik. Dengan LISA, kita bisa menemukan di mana klaster “panas” (High-High) dan “dingin” (Low-Low) berada, serta di mana outlier (High-Low, Low-High) mungkin ada.

nb <- poly2nb(as_Spatial(peta_bandung_sf), queen = TRUE)
lwW <- nb2listw(nb, style = "W")
lisa_result <- localmoran(Bandung_merged$rate_per_10k, lwW, alternative = "two.sided")
x_scaled <- scale(Bandung_merged$rate_per_10k)[, 1]
lag_x <- lag.listw(lwW, x_scaled)
p_value <- lisa_result[, 5]
lisa_quadrant <- case_when(
  p_value > 0.05 ~ "Not significant",
  x_scaled >= 0 & lag_x >= 0 ~ "High-High",
  x_scaled < 0 & lag_x < 0 ~ "Low-Low",
  x_scaled >= 0 & lag_x < 0 ~ "High-Low (Outlier)",
  x_scaled < 0 & lag_x >= 0 ~ "Low-High (Outlier)"
)

Bandung_LISA <- Bandung_merged %>%
  mutate(lisa_quadrant = lisa_quadrant)

Peta Klaster LISA

ggplot(Bandung_LISA) +
  geom_sf(aes(fill = lisa_quadrant), color = "white", size = 0.2) +
  scale_fill_manual(values = c(
    "High-High" = "#b2182b",
    "Low-Low" = "#2166ac",
    "High-Low (Outlier)" = "#fddbc7",
    "Low-High (Outlier)" = "#92c5de",
    "Not significant" = "grey85"
  )) +
  labs(title = "Local Moran's I (LISA) Kota Bandung", fill = "Klaster") +
  theme_minimal()

Interpretasi: - Klaster Hotspot (High-High): Area berwarna merah adalah klaster hotspot. Ini mengidentifikasi kecamatan di mana laju kasus penyakit tinggi dikelilingi oleh tetangga yang juga memiliki laju kasus tinggi. Area ini harus menjadi prioritas utama bagi dinas kesehatan untuk intervensi, alokasi sumber daya, dan kampanye pencegahan yang intensif. - Outlier Spasial (Low-High): Area berwarna biru muda adalah outlier. Wilayah ini memiliki laju kasus rendah meskipun dikelilingi oleh tetangga dengan laju kasus tinggi. Pola ini bisa menunjukkan keberhasilan program pencegahan di area tersebut. - Area Tidak Signifikan: Wilayah berwarna abu-abu menunjukkan tidak adanya pola spasial yang signifikan secara statistik. Di area ini, laju kasus penyakit tersebar secara acak, tanpa kecenderungan untuk mengelompok dengan nilai yang mirip.

Hitung Getis-Ord \(G\_i^\*\)

nb <- poly2nb(as_Spatial(peta_bandung_sf), queen = TRUE)
lwW <- nb2listw(nb, style = "W")
# Getis-Ord Gi*
Gz <- localG(Bandung_merged$rate_per_10k, lwW)
alpha <- 0.05
# Ambang batas z-skor 
z_threshold <- qnorm(1 - alpha / 2)
hotcold <- case_when(
  Gz >= z_threshold ~ "Hot spot (p<0.05)",
  Gz <= -z_threshold ~ "Cold spot (p<0.05)",
  TRUE ~ "Not significant"
)

Bandung_G <- Bandung_merged %>%
  mutate(hotcold = hotcold)
ggplot(data = Bandung_G) +
  geom_sf(aes(fill = hotcold), color = "white", size = 0.2) +
  scale_fill_manual(values = c(
    "Hot spot (p<0.05)" = "#b2182b",
    "Cold spot (p<0.05)" = "#2166ac",
    "Not significant" = "grey85"
  )) +
  labs(title = "Getis-Ord Gi* - Hot/Cold Spots (z-skor)", fill = NULL) +
  theme_minimal() +
  theme(axis.text = element_blank(),
        axis.title = element_blank(),
        panel.grid.major = element_line(color = "grey80"),
        panel.grid.minor = element_blank())

### Tentukan kecamatan yang termasuk hot spot dan cold spot. Peta Getis-Ord Gi* ini menunjukkan bahwa wilayah hotspot ditandai dengan warna merah. Hotspot adalah area di mana terjadi konsentrasi nilai yang sangat tinggi. Sebaliknya, tidak ada area yang ditandai sebagai coldspot (konsentrasi nilai sangat rendah) pada peta. Pada gambar di atas, hanya klaster nilai-nilai tinggi yang signifikan secara statistik. ### Bandingkan hasilnya dengan peta LISA Secara umum, hasil dari Getis-Ord Gi* konsisten dengan hasil dari Local Moran’s I (LISA). Kedua peta menunjukkan bahwa klaster signifikan berada di wilayah yang sama, yaitu di bagian selatan dan tenggara Kota Bandung. - Peta Getis-Ord secara langsung mengidentifikasi klaster nilai tinggi sebagai hotspot. - Peta LISA mengidentifikasi klaster yang sama sebagai klaster High-High. Hotspot dan High-High, merujuk pada fenomena yang sama: wilayah dengan nilai tinggi yang dikelilingi oleh wilayah dengan nilai tinggi lainnya. ### Apakah ada perbedaan wilayah yang ditandai sebagai klaster signifikan? Ya, ada perbedaan signifikan dalam wilayah yang diidentifikasi sebagai klaster oleh kedua metode tersebut, meskipun keduanya menunjukkan klaster di area yang sama. Peta LISA mampu mengidentifikasi outlier spasial (wilayah dengan nilai yang sangat berbeda dari tetangganya) seperti klaster Low-High, di mana wilayah dengan kasus rendah berada di tengah-tengah wilayah dengan kasus tinggi. Sebaliknya, peta Getis-Ord Gi* tidak mengklasifikasikan wilayah tersebut sebagai klaster signifikan karena Getis-Ord hanya berfokus pada konsentrasi nilai-nilai yang sama (hotspot atau coldspot), bukan pada anomali nilai.

D. Diskusi Kritis

1. Bagaimana hasil analisis autokorelasi spasial bisa membantu dinas kesehatan dalam menyusun strategi pencegahan dan intervensi penyakit menular di Kota Bandung?

Hasil analisis autokorelasi spasial sangat membantu dinas kesehatan dalam menyusun strategi pencegahan dan intervensi penyakit menular (dalam kasus saya adalah DBD) di Kota Bandung, dengan melakukan identifikasi klaster hotspot (wilayah dengan kasus tinggi yang mengelompok), dinas kesehatan dapat memfokuskan sumber daya yang terbatas, seperti tim penyemprotan (fogging), distribusi bubuk abate, atau kampanye penyuluhan, ke area yang paling rentan. Analisis ini mengubah pendekatan yang tadinya bersifat umum menjadi pendekatan berbasis lokasi karena sudah diketahui lokasi yang paling banyak kasusnya, sehingga dapat memutus rantai penularan.

Sebutkan keterbatasan dari analisis autokorelasi spasial

MAUP (Modifiable Areal Unit Problem)

Hasil analisis dapat berubah secara signifikan tergantung pada bagaimana unit geografisnya (misalnya, kecamatan, kelurahan) dibagi atau dikelompokkan. Pola yang terlihat pada level kecamatan bisa berbeda atau bahkan menghilang jika analisis dilakukan pada level yang lebih kecil (misalnya, kelurahan) atau jika batas-batasnya diubah. ### Ukuran Bobot Spasial Pilihan matriks bobot spasial (seperti rook, queen, atau k-nearest neighbors) dapat memengaruhi hasil analisis. Bobot queen menganggap tetangga yang berbagi sisi atau sudut, sementara rook hanya yang berbagi sisi. Setiap pilihan bobot akan menghasilkan matriks bobot yang berbeda, yang pada gilirannya dapat mengubah nilai Moran’s I atau lokasi klaster yang terdeteksi. ### Masalah Multiple Testing Pada analisis lokal (LISA atau Getis-Ord), kita melakukan uji statistik di setiap lokasi (dalam kasus ini, 30 kecamatan) secara terpisah. Ini meningkatkan kemungkinan terjadinya galat tipe I (menolak hipotesis nol padahal seharusnya tidak). Artinya, beberapa klaster yang ditemukan mungkin muncul hanya karena kebetulan statistik, bukan karena pola spasialyang sesungguhnya.