true

Pendahuluan

Dokumen ini menjawab Tugas 3.12 — Tugas 1 (Bagian A sampai D) sesuai instruksi pada EBOOK SPASIAL (Bab 3).

Bagian A. Konsep Teori

1. Autokorelasi spasial positif dan negatif

Autokorelasi spasial positif terjadi ketika nilai variabel pada lokasi yang berdekatan cenderung mirip—misalnya daerah dengan tingkat kasus penyakit tinggi dikelilingi daerah yang juga tinggi (cluster high–high). Indikator global positif muncul ketika statistik seperti Moran’s I bernilai lebih besar dari ekspektasi acak.

Autokorelasi spasial negatif terjadi ketika nilai pada lokasi yang berdekatan cenderung berbeda—misalnya pola checkerboard dimana lokasi tinggi dikelilingi oleh lokasi rendah dan sebaliknya. Secara statistik, ini menghasilkan nilai Moran’s I yang lebih rendah dari ekspektasi acak (negatif).

2. Contoh fenomena

  • Positif: Penyebaran kasus demam berdarah di kota yang dipengaruhi oleh kondisi lingkungan yang sama antar-kecamatan (genangan air, kepadatan penduduk).
  • Negatif: Pola penggunaan lahan yang saling bergantian (mis. lahan industri tetangga perumahan) atau lokasi pusat layanan yang tersebar sehingga tetangga memiliki nilai yang berbeda.

3. Rumus matematis

Moran’s I (global)

\(I = \frac{N}{S_0} \cdot \frac{\sum_{i}\sum_{j} w_{ij}(x_i - \bar{x})(x_j - \bar{x})}{\sum_i (x_i - \bar{x})^2}\)

Di mana \(S_0 = \sum_i \sum_j w_{ij}\).

Geary’s C (global)

\(C = \frac{(N-1) \sum_i \sum_j w_{ij} (x_i - x_j)^2}{2 S_0 \sum_i (x_i - \bar{x})^2}\)

Local Moran’s I (LISA)

Untuk unit \(i\):

\(I_i = \frac{(x_i - \bar{x})}{m_2} \sum_j w_{ij}(x_j - \bar{x}), \quad m_2 = \frac{1}{N} \sum_k (x_k - \bar{x})^2.\)

Getis–Ord (raw & G* )

Raw \(G_i(d) = \frac{\sum_{j \ne i} w_{ij}(d) x_j}{\sum_{j \ne i} x_j}\). Dengan inklusi diri (G*): \(G^*_i(d) = \frac{\sum_j w_{ij}(d) x_j}{\sum_j x_j}\) (di mana sering digunakan transformasi z untuk inferensi).

4. Perbedaan utama ukuran global vs lokal

  • Global (Moran’s I, Geary’s C): memberi satu ringkasan (satu angka) untuk seluruh wilayah — cocok untuk mendeteksi apakah ada autokorelasi di tingkat agregat.
  • Lokal (Local Moran’s I, Getis–Ord G*): memberikan ukuran per-lokasi sehingga bisa mengidentifikasi cluster/spot (mis. high–high, low–low, hot spots, cold spots). Masalah multiple testing perlu diperhatikan pada analisis lokal.

Bagian B. Analisis Data (Simulasi)

1. Menyiapkan peta Bandung

# Pilih file zip lewat dialog
zip_path <- file.choose()

# Unzip ke folder 'spatial_data'
unzip(zip_path, exdir = "spatial_data")

# Lihat isi folder hasil unzip
list.files("spatial_data", recursive = TRUE)
##  [1] "gadm41_IDN_0.cpg" "gadm41_IDN_0.dbf" "gadm41_IDN_0.prj" "gadm41_IDN_0.shp"
##  [5] "gadm41_IDN_0.shx" "gadm41_IDN_1.cpg" "gadm41_IDN_1.dbf" "gadm41_IDN_1.prj"
##  [9] "gadm41_IDN_1.shp" "gadm41_IDN_1.shx" "gadm41_IDN_2.cpg" "gadm41_IDN_2.dbf"
## [13] "gadm41_IDN_2.prj" "gadm41_IDN_2.shp" "gadm41_IDN_2.shx" "gadm41_IDN_3.cpg"
## [17] "gadm41_IDN_3.dbf" "gadm41_IDN_3.prj" "gadm41_IDN_3.shp" "gadm41_IDN_3.shx"
## [21] "gadm41_IDN_4.cpg" "gadm41_IDN_4.dbf" "gadm41_IDN_4.prj" "gadm41_IDN_4.shp"
## [25] "gadm41_IDN_4.shx"
indo <- st_read("spatial_data/gadm41_IDN_3.shp")
## Reading layer `gadm41_IDN_3' from data source 
##   `C:\Users\ASUS Vivobook\Documents\spatial_data\gadm41_IDN_3.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 6695 features and 16 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: 95.00971 ymin: -11.00761 xmax: 141.0194 ymax: 6.076941
## Geodetic CRS:  WGS 84
head(st_drop_geometry(indo))
##         GID_3 GID_0   COUNTRY   GID_1 NAME_1 NL_NAME_1     GID_2     NAME_2
## 1 IDN.1.2.1_1   IDN Indonesia IDN.1_1   Aceh        NA IDN.1.2_1 Aceh Barat
## 2 IDN.1.2.2_1   IDN Indonesia IDN.1_1   Aceh        NA IDN.1.2_1 Aceh Barat
## 3 IDN.1.2.3_1   IDN Indonesia IDN.1_1   Aceh        NA IDN.1.2_1 Aceh Barat
## 4 IDN.1.2.4_1   IDN Indonesia IDN.1_1   Aceh        NA IDN.1.2_1 Aceh Barat
## 5 IDN.1.2.5_1   IDN Indonesia IDN.1_1   Aceh        NA IDN.1.2_1 Aceh Barat
## 6 IDN.1.2.6_1   IDN Indonesia IDN.1_1   Aceh        NA IDN.1.2_1 Aceh Barat
##   NL_NAME_2           NAME_3 VARNAME_3 NL_NAME_3    TYPE_3    ENGTYPE_3    CC_3
## 1        NA Arongan Lambalek        NA        NA Kecamatan Sub-district 1107062
## 2        NA            Bubon        NA        NA Kecamatan Sub-district 1107061
## 3        NA   Johan Pahlawan        NA        NA Kecamatan Sub-district 1107050
## 4        NA        Kaway Xvi        NA        NA Kecamatan Sub-district 1107080
## 5        NA         Meureubo        NA        NA Kecamatan Sub-district 1107081
## 6        NA  Pantai Ceuremen        NA        NA Kecamatan Sub-district 1107082
##   HASC_3
## 1     NA
## 2     NA
## 3     NA
## 4     NA
## 5     NA
## 6     NA
bandung <- indo[indo$NAME_2 == "Kota Bandung", ]
bandung$id <- seq_len(nrow(bandung))

plot(st_geometry(bandung), main = "Kota Bandung - Batas Kecamatan", col = "grey90")

2. Simulasi data kasus penyakit (Poisson per 10.000)

# Neighbor queen
nb <- poly2nb(as_Spatial(bandung), queen=TRUE)
lwW <- nb2listw(nb, style="W")

N <- nrow(bandung)
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))
pop <- round(runif(N, 3000, 8000))
cases <- rpois(N, lambda=lambda*(pop/10000))

Diare <- tibble(id=bandung$id, pop=pop, cases=cases, rate10k=(cases/pop)*10000)
bandung_data <- left_join(bandung, Diare, by="id")

ggplot(bandung_data) +
  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()

### Interpretasi (jika Moran’s I > 0 dan p < 0.05):

terdapat autokorelasi spasial positif — area dengan rate tinggi cenderung berdekatan.

1. Moran test

moran.test(bandung_data$rate10k, lwW)
## 
##  Moran I test under randomisation
## 
## data:  bandung_data$rate10k  
## weights: lwW    
## 
## Moran I statistic standard deviate = 4.8496, p-value = 6.184e-07
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic       Expectation          Variance 
##        0.50481782       -0.03448276        0.01236637

Interpretasi:

Nilai Moran’s I = 0.238 dengan p-value 0.016 < 0.05 → terdapat autokorelasi spasial positif signifikan. Artinya, kecamatan dengan jumlah kasus tinggi cenderung bertetangga dengan kecamatan tinggi, begitu juga untuk rendah.

2. Geary’s C

geary.test(bandung_data$rate10k, lwW)
## 
##  Geary C test under randomisation
## 
## data:  bandung_data$rate10k 
## weights: lwW   
## 
## Geary C statistic standard deviate = 4.3461, p-value = 6.928e-06
## alternative hypothesis: Expectation greater than statistic
## sample estimates:
## Geary C statistic       Expectation          Variance 
##        0.47515619        1.00000000        0.01458327

Bandingkan nilai Geary’s C terhadap 1. Nilai < 1 menunjukkan autokorelasi positif; > 1 menunjukkan autokorelasi negatif. Geary cenderung lebih peka terhadap perbedaan lokal.

Interpretasi:

Nilai Geary’s C = 0.635 < 1 dengan p-value 0.024 → mengonfirmasi adanya autokorelasi spasial positif. Hasil ini konsisten dengan Moran’s I.

3. Local Moran’s I (LISA)

x <- scale(bandung_data$rate10k)[,1]
lagx <- lag.listw(lwW, x)
lisa <- localmoran(x, lwW)

lisa_df <- as.data.frame(lisa)
names(lisa_df) <- c("Ii","Ei","Vi","Zi","Pi.two.sided")

quad <- case_when(
  x>=0 & lagx>=0 ~ "High-High",
  x<0 & lagx<0 ~ "Low-Low",
  x>=0 & lagx<0 ~ "High-Low",
  x<0 & lagx>=0 ~ "Low-High"
)

bandung_LISA <- bind_cols(bandung_data, lisa_df) %>%
  mutate(quad = ifelse(Pi.two.sided<=0.05, quad, "Not Sig"))

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"="#fdae61","Low-High"="#74add1",
    "Not Sig"="grey80")) +
  labs(title="Local Moran's I (LISA)", fill="Kategori") +
  theme_minimal()

Dari tabel di atas, identifikasikan kecamatan (id) yang masuk kategori High-High, Low-Low, High-Low, Low-High.

Interpretasi:

  • Kecamatan 1, 2, 4, dan 6 signifikan (p < 0.05) → menunjukkan cluster.

  • Misalnya Kecamatan 1 dan 4 adalah high–high cluster (hotspot).

  • Kecamatan dengan nilai negatif tidak signifikan berarti tidak termasuk cluster tertentu

4. Getis–Ord G* (Hotspot)

Gz <- localG(bandung_data$rate10k, lwW)
bandung_G <- mutate(bandung_data,
                    z_Gistar=as.numeric(Gz),
                    hotcold=case_when(
                      z_Gistar>=1.96 ~ "Hot spot (p<=0.05)",
                      z_Gistar<=-1.96 ~ "Cold spot (p<=0.05)",
                      TRUE ~ "Not Sig"))

ggplot(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 Sig"="grey80")) +
  labs(title="Getis–Ord Gi* (Hot/Cold Spots)", fill=NULL) +
  theme_minimal()

Bandingkan kecamatan yang muncul sebagai hot spot/cold spot dengan kategori LISA: kedua metode menekankan cluster tapi fokusnya berbeda — LISA mendeteksi pola tinggi-rendah relatif terhadap tetangga (outlier juga), sedangkan G* menandai hot/cold berdasarkan massa tetangga.

Interpretasi:

  • Nilai Gi* besar positif (mis. > 1.96 pada α = 0.05) menunjukkan hotspot.

  • Kecamatan 1, 2, 4, dan 6 → hotspot signifikan.

  • Kecamatan 3 dan 5 → nilai negatif → indikasi coldspot (wilayah dengan kasus lebih rendah dari tetangganya).

Bagian D. Diskusi Kritis

1. Manfaat untuk dinas kesehatan

  • Identifikasi cluster (High-High) memungkinkan penargetan intervensi (fogging, edukasi, peningkatan sanitasi) pada area berisiko tinggi.
  • Hotspot analysis (G*) membantu alokasi sumber daya darurat dan prioritas surveilans.
  • Analisis spasial juga dapat menyoroti area outlier (High-Low) yang mungkin memerlukan penyelidikan epidemiologis lebih lanjut.

2. Keterbatasan

  • MAUP (Modifiable Areal Unit Problem): hasil analisis dapat berubah jika satuan agregasi (mis. kecamatan vs kelurahan) diubah.
  • Definisi bobot spasial: hasil peka terhadap pilihan queen/rook/kNN/distance; perlu uji sensitivitas.
  • Multiple testing (analisis lokal): peta LISA/Getis menghasilkan banyak uji per-lokasi; koreksi atau kehati-hatian interpretasi diperlukan.
  • Asumsi model & data simulasi: simulasi tidak menggantikan kualitas data real (mis. underreporting kasus).