Secara sederhana, autokorelasi spasial adalah konsep yang mirip dengan korelasi , tapi dengan tambahan unsur geografis. Kita ingin tahu apakah nilai suatu variabel di satu lokasi punya hubungan dengan nilai di lokasi tetangganya. Ini adalah dasar dari analisis spasial, karena di dunia nyata, banyak hal yang lokasinya berdekatan cenderung mirip (atau justru berbeda). Sama halnya dengan korelasi, terdapat 2 jenis autokorelasi yaitu:
Autokorelasi Spasial Positif: Ini terjadi ketika nilai yang mirip kumpul dengan yang mirip. Contohnya harga properti; perumahan mewah cenderung berada di satu area, sementara perumahan yang lebih terjangkau ada di area lain. Dalam konteks penyakit, ini berarti wilayah dengan kasus tinggi cenderung dikelilingi oleh wilayah lain yang kasusnya juga tinggi. Pola ini disebut mengelompok (clustering).
Autokorelasi Spasial Negatif: Ini adalah kebalikannya, di mana yang nilai yang berbeda justru saling bertetangga. Misalnya, sebuah pusat perbelanjaan modern (nilai ekonomi tinggi) berdiri di tengah-tengah pemukiman padat penduduk dengan ekonomi menengah ke bawah. [Pola ini sering disebut pola papan catur (checkerboard).
Contoh positif: Penyebaran penyakit demam berdarah. Wilayah dengan banyak kasus biasanya berdekatan dengan wilayah lain yang juga banyak kasus.
Contoh negatif: Harga rumah di kota besar. Daerah pusat kota dengan harga tinggi bisa bersebelahan langsung dengan daerah pinggiran yang harganya jauh lebih murah.
Ukuran global yang paling umum digunakan adalah Moran’s I, yang dirumuskan sebagai:
\[ I = \frac{n}{W} \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:
- \(n\): jumlah lokasi
- \(x_i\): nilai pada lokasi ke-\(i\)
- \(\bar{x}\): rata-rata dari seluruh
nilai
- \(w_{ij}\): bobot spasial antara
lokasi \(i\) dan \(j\)
- \(W = \sum_{i=1}^n \sum_{j=1}^n
w_{ij}\): total bobot
Ukuran global lain adalah Geary’s C, yang lebih sensitif terhadap perbedaan lokal:
\[ C = \frac{(n - 1)}{2W} \cdot \frac{\sum_{i=1}^n \sum_{j=1}^n w_{ij}(x_i - x_j)^2}{\sum_{i=1}^n (x_i - \bar{x})^2} \]
dengan simbol-simbol sama seperti pada Moran’s I.
Ukuran lokal dari autokorelasi spasial adalah Local Moran’s I, yang dirumuskan sebagai:
\[ I_i = \frac{(x_i - \bar{x})}{S^2} \sum_{j=1}^n w_{ij}(x_j - \bar{x}) \]
dengan:
- \(S^2 = \frac{\sum_{i=1}^n (x_i -
\bar{x})^2}{n}\): variansi
- \(I_i\): kontribusi lokasi ke-\(i\) terhadap autokorelasi global
Ukuran lokal lainnya adalah Getis–Ord, yang berfokus pada pendeteksian klaster tinggi atau rendah:
\[ G_i = \frac{\sum_{j=1}^n w_{ij} x_j}{\sum_{j=1}^n x_j} \]
\[ G_i^* = \frac{\sum_{j=1}^n w_{ij} x_j}{\sum_{j=1}^n x_j} \]
Perbedaan \(G_i\) dan \(G_i^*\) adalah pada apakah lokasi \(i\) sendiri termasuk dalam perhitungan (pada \(G_i^*\) termasuk, pada \(G_i\) tidak).
library(sf)
library(spdep)
library(dplyr)
library(ggplot2)
# Membuat grid 6x5 untuk 30 poligon (kecamatan)
bb <- st_sfc(st_polygon(list(cbind(c(0,6,6,0,0),c(0,0,5,5,0)))))
grid <- st_make_grid(bb, n = c(6, 5)) %>%
st_as_sf() %>%
mutate(id = 1:n())
data_spasial <- grid
# Simulasi kasus penyakit diare dengan dependensi spasial
# Metode ini diadaptasi dari modul untuk menciptakan pola yang lebih realistis [cite: 385]
set.seed(123)
# Definisikan hubungan ketetanggaan (queen contiguity) [cite: 387]
nb <- poly2nb(data_spasial, queen = TRUE)
lw <- nb2listw(nb, style = "W")
# Buat variabel random dan lag spasialnya untuk mensimulasikan faktor risiko [cite: 391-393]
N <- nrow(data_spasial)
faktor_risiko <- rnorm(N)
lag_faktor_risiko <- lag.listw(lw, faktor_risiko)
# Tentukan model untuk laju kasus (lambda) dg dependensi spasial [cite: 412-414]
# Laju kasus dipengaruhi faktor risiko di lokasi itu dan tetangganya
lambda <- exp(1.5 + 0.8*scale(faktor_risiko) + 1.2*scale(lag_faktor_risiko))
# Simulasi populasi dan jumlah kasus diare dari distribusi Poisson [cite: 416]
populasi <- round(runif(N, 5000, 15000))
kasus_diare <- rpois(N, lambda = lambda * (populasi/10000))
# Gabungkan data ke objek spasial dan hitung angka per 10.000 penduduk
data_spasial <- data_spasial %>%
mutate(
populasi = populasi,
kasus_diare = kasus_diare,
angka_per10k = (kasus_diare / populasi) * 10000
)
Selanjutnya, data simulasi ini divisualisasikan dalam bentuk peta choropleth. Peta ini akan menunjukkan sebaran angka kasus diare per 10.000 penduduk di 30 kecamatan simulasi.
ggplot(data_spasial) +
geom_sf(aes(fill = angka_per10k), color = "black", size = 0.2) +
scale_fill_gradient(low = "yellow", high = "red", name = "Angka Kasus") +
theme_minimal() +
labs(
title = "Peta Sebaran Kasus Diare per 10.000 Penduduk",
subtitle = "Data Simulasi untuk 30 Kecamatan"
)
Dari peta di atas, secara visual dapat dilihat bahwa sebaran kasus diare tidak acak. Terdapat beberapa wilayah dengan warna lebih terang (kasus tinggi) yang cenderung berkumpul atau berdekatan satu sama lain. Demikian pula, wilayah dengan warna lebih gelap (kasus rendah) juga tampak membentuk kelompok. Pola pengelompokan ini merupakan indikasi awal adanya autokorelasi spasial positif. Artinya, terdapat kemungkinan besar bahwa kecamatan dengan angka kasus tinggi dikelilingi oleh kecamatan dengan angka kasus yang tinggi pula, dan sebaliknya.
Setelah pola spasial diidentifikasi secara visual, selanjutnya dilakukan pengukuran statistik untuk menguji dugaan tersebut.
Analisis dimulai dengan menghitung Moran’s I untuk mendapatkan satu nilai ringkasan yang menggambarkan pola spasial secara keseluruhan.
# Variabel yang akan diuji adalah angka kasus per 10.000 penduduk
var_uji <- data_spasial$angka_per10k
# Hitung Moran's I
moran_test_result <- moran.test(var_uji, lw, randomisation = TRUE)
moran_test_result
##
## Moran I test under randomisation
##
## data: var_uji
## weights: lw
##
## Moran I statistic standard deviate = 6.113, p-value = 4.889e-10
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.312328271 -0.034482759 0.003218683
Interpretasi Hasil Moran’s I:
Nilai Moran’s I: Diperoleh nilai Moran’s I statistic sebesar 0.3123. Nilai ini positif dan cukup jauh dari nilai ekspektasi (-0.0345), yang menandakan adanya autokorelasi spasial positif.
Signifikansi Statistik: Nilai p-value (4.889e-10) sangat kecil (jauh di bawah 0.05). Dengan demikian, hipotesis nol (yang menyatakan bahwa data tersebar acak secara spasial) ditolak.
Kesimpulan: Hasil ini secara statistik mengkonfirmasi apa yang terlihat pada peta. Pola sebaran kasus diare di area studi ini mengelompok secara signifikan. Wilayah dengan angka kasus yang mirip (baik tinggi maupun rendah) cenderung berdekatan.
Sebagai pembanding, dilakukan pula penghitungan Geary’s C, yang lebih sensitif terhadap perbedaan nilai antar lokasi tetangga.
geary_test_result <- geary.test(var_uji, lw, randomisation = TRUE)
geary_test_result
##
## Geary C test under randomisation
##
## data: var_uji
## weights: lw
##
## Geary C statistic standard deviate = 3.8593, p-value = 5.685e-05
## alternative hypothesis: Expectation greater than statistic
## sample estimates:
## Geary C statistic Expectation Variance
## 0.48741111 1.00000000 0.01764087
nterpretasi dan Perbandingan dengan Moran’s I:
Nilai Geary’s C: Diperoleh nilai Geary’s C statistic sebesar 0.4874. Nilai ini berada di bawah 1, yang juga mengindikasikan autokorelasi spasial positif, sejalan dengan hasil Moran’s I. P-value yang signifikan (5.685e-05) juga memperkuat kesimpulan ini.
Perbedaan Sensitivitas: Meskipun keduanya menunjukkan hasil yang konsisten, mekanisme perhitungannya sedikit berbeda. Moran’s I mengukur kovariansi spasial (apakah nilai tetangga cenderung sama-sama di atas atau di bawah rata-rata), sementara Geary’s C mengukur rata-rata kuadrat selisih antar tetangga. Oleh karena itu, Geary’s C lebih peka terhadap perbedaan nilai pada skala lokal. Dalam kasus ini, keduanya sama-sama berhasil menangkap pola pengelompokan yang dominan.
Ukuran global menunjukkan bahwa ada pengelompokan, tetapi tidak menunjukkan di mana lokasinya. Untuk itu, digunakan Analisis LISA (Local Indicators of Spatial Association) untuk mengidentifikasi klaster lokal.
# Hitung Local Moran's I
lisa_result <- localmoran(var_uji, lw)
# Buat klasifikasi cluster (H-H, L-L, dll.) hanya untuk yang signifikan
data_spasial$scaled_var <- scale(var_uji)[,1]
data_spasial$lag_scaled_var <- lag.listw(lw, data_spasial$scaled_var)
# Ambil p-value dari kolom ke-5
data_spasial$p_value_lisa <- lisa_result[, 5]
data_spasial$lisa_sig <- "Tidak Signifikan"
# High-High
data_spasial$lisa_sig[data_spasial$scaled_var > 0 & data_spasial$lag_scaled_var > 0 & data_spasial$p_value_lisa < 0.05] <- "High-High"
# Low-Low
data_spasial$lisa_sig[data_spasial$scaled_var < 0 & data_spasial$lag_scaled_var < 0 & data_spasial$p_value_lisa < 0.05] <- "Low-Low"
# High-Low (Outlier)
data_spasial$lisa_sig[data_spasial$scaled_var > 0 & data_spasial$lag_scaled_var < 0 & data_spasial$p_value_lisa < 0.05] <- "High-Low"
# Low-High (Outlier)
data_spasial$lisa_sig[data_spasial$scaled_var < 0 & data_spasial$lag_scaled_var > 0 & data_spasial$p_value_lisa < 0.05] <- "Low-High"
# Buat Peta Cluster LISA
ggplot(data_spasial) +
geom_sf(aes(fill = lisa_sig), color = "black", size = 0.2) +
scale_fill_manual(values = c("High-High" = "red", "Low-Low" = "blue",
"High-Low" = "pink", "Low-High" = "lightblue",
"Tidak Signifikan" = "grey85")) +
theme_minimal() +
labs(title = "Peta Cluster LISA untuk Kasus Diare",
subtitle = "Hanya menampilkan cluster yang signifikan (p < 0.05)",
fill = "Tipe Cluster")
Interpretasi Peta LISA: Peta di atas menunjukkan lokasi-lokasi di mana terdapat pola spasial yang signifikan secara statistik.
High-High (Merah): Ini adalah klaster hotspot. Kecamatan di area ini memiliki angka kasus diare yang tinggi dan secara signifikan dikelilingi oleh kecamatan lain yang kasusnya juga tinggi. Dari sudut pandang kesehatan masyarakat, area ini adalah prioritas utama untuk intervensi karena berpotensi menjadi pusat penyebaran.
Low-Low (Biru): Ini adalah klaster coldspot. Kecamatan di area ini punya angka kasus rendah dan dikelilingi oleh tetangga yang kasusnya juga rendah. Area ini bisa dianggap sebagai wilayah yang relatif “aman” atau di mana program pencegahan berjalan efektif.
High-Low (Pink) & Low-High (Biru Muda): Ini adalah outlier spasial, yaitu wilayah yang nilainya berbeda signifikan dari tetangganya. High-Low berarti satu kecamatan punya kasus tinggi di tengah-tengah area kasus rendah, mungkin karena ada faktor lokal yang unik (misalnya, sumber air tercemar). Low-High adalah sebaliknya, sebuah “pulau” aman di tengah lautan kasus tinggi.
Sebagai analisis akhir, digunakan statistik Getis-Ord $G\_i^\*$ untuk secara spesifik mengidentifikasi hotspot (klaster nilai tinggi) dan coldspot (klaster nilai rendah). Analisis ini melengkapi LISA dengan fokus pada konsentrasi nilai, bukan hanya kesamaan.
# Hitung z-score Gi*
gi_star_z <- as.vector(localG(var_uji, lw))
# Klasifikasi hotspot dan coldspot berdasarkan z-score (p < 0.05)
data_spasial$hotspot_status <- "Tidak Signifikan"
data_spasial$hotspot_status[gi_star_z > 1.96] <- "Hot Spot"
data_spasial$hotspot_status[gi_star_z < -1.96] <- "Cold Spot"
# Buat Peta Hotspot
ggplot(data_spasial) +
geom_sf(aes(fill = hotspot_status), color = "black", size = 0.2) +
scale_fill_manual(values = c("Hot Spot" = "#b2182b", "Cold Spot" = "#2166ac",
"Tidak Signifikan" = "grey85")) +
theme_minimal() +
labs(title = "Peta Hotspot dan Coldspot Kasus Diare (Getis-Ord Gi*)",
subtitle = "Berdasarkan Z-score (p < 0.05)",
fill = "Kategori")
Interpretasi dan Perbandingan dengan LISA:
Hot Spot (Merah Tua): Wilayah ini menunjukkan konsentrasi nilai kasus yang tinggi secara statistik. Tidak hanya wilayah itu sendiri yang tinggi, tetapi total nilai di wilayah itu beserta tetangganya juga tinggi secara signifikan dibandingkan rata-rata keseluruhan. Hasil ini biasanya sangat mirip dengan klaster High-High pada LISA.
Cold Spot (Biru Tua): Sebaliknya, ini adalah wilayah dengan konsentrasi nilai kasus yang rendah secara signifikan. Ini mirip dengan klaster Low-Low pada LISA.
Perbandingan: Peta Gi seringkali lebih “bersih” daripada peta LISA karena hanya fokus pada dua kategori utama: konsentrasi tinggi atau rendah. LISA bisa memberikan detail tambahan tentang outlier spasial (High-Low dan Low-High), yang tidak terdeteksi oleh Gi*. Keduanya saling melengkapi: Gi* sangat baik untuk menentukan prioritas intervensi berdasarkan tingkat keparahan (hotspot), sementara LISA lebih baik dalam memahami dinamika hubungan antar tetangga.
Hasil analisis autokorelasi spasial dapat memberikan landasan berbasis data bagi dinas kesehatan dalam menyusun strategi pencegahan dan intervensi penyakit menular. Berikut adalah implementasi praktisnya:
Menentukan Prioritas Wilayah Intervensi Analisis ini menunjukkan bahwa sebaran kasus penyakit seringkali tidak acak, melainkan membentuk klaster atau pengelompokan di wilayah tertentu. Informasi ini memungkinkan dinas kesehatan untuk memusatkan sumber daya yang terbatas (seperti tenaga medis, fasilitas, dan logistik) pada wilayah-wilayah yang paling membutuhkan, sehingga intervensi menjadi lebih efektif dan tepat sasaran.
Mengidentifikasi Pusat Penyebaran (Episentrum) Melalui analisis lokal seperti Local Moran’s I (LISA), dapat diidentifikasi klaster “High-High”, yaitu area dengan kasus tinggi yang dikelilingi oleh area lain dengan kasus yang juga tinggi. Wilayah ini dapat dianggap sebagai pusat penyebaran (episentrum), di mana tindakan seperti surveilans yang lebih intensif, kampanye kesehatan, dan disinfeksi perlu diprioritaskan untuk memutus rantai penularan.
Merencanakan Pencegahan Lintas Wilayah Identifikasi hotspot (area konsentrasi kasus tinggi) dan coldspot (area konsentrasi kasus rendah) melalui analisis seperti Getis-Ord G*i membantu dalam perencanaan strategi antar wilayah. Hal ini memungkinkan dinas kesehatan untuk, misalnya, menciptakan zona penyangga (buffer zone) di sekitar hotspot untuk mencegah penyebaran penyakit ke wilayah tetangga yang lebih aman.
Mengevaluasi Efektivitas Kebijakan Dengan melakukan analisis secara berkala, dinas kesehatan dapat mengevaluasi efektivitas kebijakan yang telah diimplementasikan. Perubahan pada pola klaster dari waktu ke waktu—misalnya, apakah sebuah hotspot menyusut atau menghilang setelah intervensi—dapat menjadi indikator objektif atas keberhasilan suatu program kesehatan.
Meskipun sangat bermanfaat, analisis ini memiliki beberapa keterbatasan metodologis yang perlu menjadi pertimbangan dalam interpretasi hasil.
MAUP (Modifiable Areal Unit Problem) MAUP adalah sebuah isu di mana hasil analisis dapat berubah secara signifikan jika unit atau batas wilayah yang digunakan diubah. Sebagai contoh, hasil analisis pada tingkat kecamatan bisa memberikan kesimpulan yang berbeda dengan hasil analisis pada tingkat kelurahan, meskipun menggunakan data dasar yang sama. Ini berarti pola yang terdeteksi bisa jadi dipengaruhi oleh cara data dikelompokkan, bukan murni karena fenomena yang terjadi.
Ukuran Bobot Spasial (Spatial Weights) Hasil analisis juga bergantung pada cara mendefinisikan hubungan “ketetanggaan” antar wilayah, yang diformalkan dalam matriks bobot spasial (W). Pilihan metode yang berbeda dapat menghasilkan kesimpulan yang berbeda pula:
Rook contiguity: Hanya menganggap wilayah yang berbagi sisi sebagai tetangga.
Queen contiguity: Menganggap wilayah yang berbagi sisi atau sudut sebagai tetangga.
k-nearest neighbors: Mendefinisikan
tetangga sebagai k wilayah terdekat secara spasial.
Pemilihan metode bobot harus didasarkan pada konteks geografis dan
asumsi yang relevan mengenai interaksi antar wilayah.
Masalah Multiple Testing pada Analisis Lokal Pada analisis lokal (seperti LISA atau Getis-Ord Gi), sebuah uji statistik dilakukan untuk setiap wilayah secara simultan. Melakukan banyak pengujian secara bersamaan akan meningkatkan risiko false positive (positif palsu), yaitu mendeteksi sebuah klaster sebagai signifikan secara statistik padahal kemunculannya hanya karena faktor kebetulan. Oleh karena itu, hasil analisis lokal perlu diinterpretasikan dengan hati-hati dan idealnya disertai dengan koreksi statistik (seperti Bonferroni correction atau FDR) untuk memastikan keandalan temuan.
Analisis autokorelasi spasial memberikan wawasan yang sangat berguna dalam perencanaan kebijakan kesehatan masyarakat, terutama dalam mengidentifikasi klaster penyakit dan menentukan wilayah prioritas intervensi. Namun, hasilnya tidak boleh diinterpretasikan secara mutlak tanpa mempertimbangkan keterbatasan metodologis seperti MAUP, pemilihan bobot spasial, dan risiko multiple testing. Dengan memahami keterbatasan ini, analisis spasial dapat menjadi alat yang kuat dan andal untuk mendukung pengambilan keputusan di bidang kesehatan masyarakat.