Bagian A. Konsep Teori

1. Jelaskan dengan kata-kata Anda apa yang dimaksud dengan autokorelasi spasial positif dan autokorelasi spasial negatif.

Autokorelasi spasial positif menandakan bahwa lokasi-lokasi yang bertetangga / berdekatan cenderung memiliki nilai yang mirip. Contohnya, jika daerah A memiliki nilai yang tinggi maka daerah di sekitar daerah A kemungkinan besar memiliki nilai yang tinggi juga.

Sedangkan autokorelasi spasial negatif menandakan bahwa lokasi-lokasi yang bertetangga / berdekatan cenderung memiliki nilai yang berbeda. Contohnya, jika daerah B memiliki nilai yang tinggi maka daerah di sekitar B memiliki nilai yang rendah.

2. Berikan contoh sederhana dari fenomena yang bisa menunjukkan masing-masing pola tersebut

Autokorelasi Spasial Positif : Wabah COVID-19 atau penyakit menular lainnya. Dimana jika daerah A mengalami wabah COVID-19 maka daerah di sekitar A akan mengalami kasus COVID-19 juga diakibatkan penularan.

Autokorelasi Spasial Negatif : Persaingan Toko. Dimana jika toko A memiliki penjualan yang tinggi maka toko lain di sekitar toko A cenderung akan memiliki penjualan yang rendah ataupun sebaliknya. Hal ini diakibatkan oleh persaingan untuk medapatkan konsumen.

3. Tuliskan rumus matematis dari:

• Moran’s I

\[I=\frac{N}{W}\frac{\Sigma^N_{i=1}\Sigma^N_{j=1}w_{ij}(x_i-\bar{x})(x_j-\bar{x})}{\Sigma^N_{i=1}(x_i-\bar{x})^2}\]

dengan,

N = Jumlah total unit spasial

W = Jumlah total dari semua bobot spasial

\[w_{ij}\]= bobot spasial yang merupaakn hubungan antara unit i dan j

\[x_i\]= nilai observasi pada lokasi i

\[x_j\]= nilai observasi pada lokasi j

\[\bar{x}\]= nilai rata-rata dari semua observasi

• Geary’s C

\[C=\frac{(N-1)}{2W}\frac{\Sigma^N_{i=1}\Sigma^N_{j=1}w_{ij}(x_i-x_j)^2}{\Sigma^N_{i=1}(x_i-\bar{x})^2}\]

dengan,

N = Jumlah total unit spasial

W = Jumlah total dari semua bobot spasial

\[w_{ij}\]= bobot spasial yang merupaakn hubungan antara unit i dan j

\[x_i\]= nilai observasi pada lokasi i

\[x_j\]= nilai observasi pada lokasi j

\[\bar{x}\]= nilai rata-rata dari semua observasi

• Local Moran’s Ii

\[ I_i = \frac{(x_i-\bar{x})}{m_2}\Sigma^N_{j=1}w_{ij}(x_j-\bar{x}) \]

dengan,

\[ m_2=\frac{\Sigma^N_{i=1}(x_i-\bar{x})^2}{N} \] yang merupakan varians dari variabel x

\[I_i\]= Nilai Moran’s I untuk unit spasial i.

\[w_{ij}\]= bobot spasial yang merupaakn hubungan antara unit i dan j

\[x_i\]= nilai observasi pada lokasi i

\[\bar{x}\]= nilai rata-rata dari semua observasi

• Getis–Ord Gi dan Gi*

\[ G_i=\frac{\Sigma^N_{j=1,j\neq i}w_{ij}x_j}{\Sigma^N_{j=1,j\neq i}x_j} \] dengan,

\[w_{ij}\]= bobot spasial yang merupaakn hubungan antara unit i dan j

\[x_j\] = nilai observasi pada lokasi j

\[ G_i^*=\frac{\Sigma^N_{j=1}w_{ij}x_j}{\Sigma^N_{j=1}x_j} \]

dengan,

\[w_{ij}\]= bobot spasial yang merupaakn hubungan antara unit i dan j

\[x_j\] = nilai observasi pada lokasi j

4. Jelaskan perbedaan utama antara ukuran global dan lokal.

Perbedaan utama dari ukuran global dan lokal adalah skala dalam analisisnya. Ukuran global menganalisis seluruh data, sedangka ukuran lokal menganalisis untuk setiap unit spasial individu. Hal ini akan mengakibatkan ukuran global akan meringkas pola keseluruhan sedangkan ukuran lokal akan mengidentifikasi lokasi klaster tertentu.

Bagian B. Analisis Data (Simulasi)

1. Gunakan data spasial kecamatan di Kota Bandung

Data yang akan digunakan adalah data keluarga yang beresiko terkena stunting pada 30 kecamatan di Kota Bandung pada tahun 2024.

2. Buat peta choropleth dari data simulasi tersebut.

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')`
## Loading required package: 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(sp)
## Warning: package 'sp' was built under R version 4.3.3
library(sf)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
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
# Arahkan ke folder kerja Anda
setwd("D:/SEMESTER 5/SPASIAL/TUGAS 1")
# Data kasus
stunting <- read.csv(file.choose(), sep=",")

# Peta administratif Indonesia level kecamatan (gadm36 level 3)
Indo_Kec <- readRDS('gadm36_IDN_3_sp.rds')
# Ambil hanya Kota Bandung
Bandung <- Indo_Kec[Indo_Kec$NAME_2 == "Kota Bandung",]
plot(Bandung)

# Tambahkan id untuk join
Bandung$id <- c(1:30)
# Ubah ke format sf
Bandung_sf <- st_as_sf(Bandung)
# Gabungkan dengan data kasus
Bandung_merged <- Bandung_sf %>%
  left_join(stunting, by = "id")

ggplot() +
  geom_sf(data=Bandung_merged, aes(fill = stunting), color=NA) +
  theme_bw() +
  scale_fill_gradient(low = "yellow", high = "red") +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.text.x = element_blank(),
        axis.text.y = element_blank(),
        legend.position = "right") +
  labs(title = "Peta Keluarga Beresiko Stunting Kota Bandung",
       fill = "Jumlah Kasus")

3. Apa pola spasial yang terlihat secara visual?

Pola spasial pada peta diatas menunjukkan bahwa persebaran kasus keluarga berisiko stunting di Kota Bandung tidak acak. Adanya pengelompokan ini merupakan indikasi kuat bahwa kemungkinan ada faktor-faktor sosial, ekonomi, atau lingkungan tertentu yang juga terkonsentrasi di wilayah-wilayah tersebut dan memengaruhi tingginya risiko stunting.

Bagian C. Pengukuran Autokorelasi

1. Hitung Moran’s I

# Matriks bobot spasial
row.names(Bandung) <- as.character(1:30)
W <- poly2nb(Bandung, row.names(Bandung), queen=FALSE)
WB <- nb2mat(W, style='B', zero.policy = TRUE)
WL <- nb2listw(W)

Global_Moran <- moran.test(stunting$stunting, WL)
Global_Moran
## 
##  Moran I test under randomisation
## 
## data:  stunting$stunting  
## weights: WL    
## 
## Moran I statistic standard deviate = 4.4706, p-value = 3.9e-06
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic       Expectation          Variance 
##        0.48318768       -0.03448276        0.01340819

Dikarenakan p-value < alpha (3.9e-06 < 0.05) didapatkan bahwa data tersebar secara tidak acak. Hasil uji Moran’s I ini menunjukkan adanya pola pengelompokan (clustering) yang signifikan secara statistik. Selainn itu nilai I > 0 (0.483) menandakan bahwa data ini memiliki autokorelasi spasial positif.

2. Hitung Geary’s C.

Global_Geary <- geary.test(stunting$stunting, WL)
Global_Geary
## 
##  Geary C test under randomisation
## 
## data:  stunting$stunting 
## weights: WL   
## 
## Geary C statistic standard deviate = 4.3119, p-value = 8.094e-06
## alternative hypothesis: Expectation greater than statistic
## sample estimates:
## Geary C statistic       Expectation          Variance 
##         0.4763684         1.0000000         0.0147476

Didapatkan bahwa nilai Geary’s C < 1 (0.476) mengindikasikan bahwa data bersifat autokorelasi spasial positif. Selain itu dengan nilai p-value < alpha mengindikasikan bahwa benar data tersebar secara tidak acak.

3. Hitung Local Moran’s I (LISA).

Local_Moran <- localmoran(stunting$stunting, WL)
# Ambil p-value dan kuadran dari hasil Local Moran
Bandung_sf$p_value <- Local_Moran[, "Pr(z != E(Ii))"]
Bandung_sf$quadrant <- attr(Local_Moran, "quadr")[, "pysal"]

# Buat kolom baru untuk label klaster yang signifikan
# Kita hanya akan memberi label pada kecamatan dengan p-value < 0.05
Bandung_sf$lisa_cluster <- "Tidak Signifikan"
Bandung_sf$lisa_cluster[Bandung_sf$p_value < 0.05 & Bandung_sf$quadrant == "High-High"] <- "Hot Spot (Tinggi-Tinggi)"
Bandung_sf$lisa_cluster[Bandung_sf$p_value < 0.05 & Bandung_sf$quadrant == "Low-Low"] <- "Cold Spot (Rendah-Rendah)"
Bandung_sf$lisa_cluster[Bandung_sf$p_value < 0.05 & Bandung_sf$quadrant == "Low-High"] <- "Outlier Spasial (Rendah-Tinggi)"
Bandung_sf$lisa_cluster[Bandung_sf$p_value < 0.05 & Bandung_sf$quadrant == "High-Low"] <- "Outlier Spasial (Tinggi-Rendah)"

# Membuat Peta Klaster LISA
ggplot() +
  geom_sf(data = Bandung_sf, aes(fill = lisa_cluster), color = "white") +
  scale_fill_manual(values = c("Hot Spot (Tinggi-Tinggi)" = "red",
                               "Cold Spot (Rendah-Rendah)" = "blue",
                               "Outlier Spasial (Rendah-Tinggi)" = "lightblue",
                               "Outlier Spasial (Tinggi-Rendah)" = "pink",
                               "Tidak Signifikan" = "grey80")) +
  labs(title = "Peta Klaster LISA Risiko Stunting di Kota Bandung",
       fill = "Tipe Klaster") +
  theme_minimal()

Peta klaster LISA ini menunjukkan bahwa tidak semua kecamatan di Kota Bandung memiliki pola risiko stunting yang signifikan secara statistik. Sebagian besar wilayah berwarna abu-abu, yang berarti persebaran kasus di sana tidak membentuk klaster yang kuat.

4. Hitung Getis-Ord Gi*

# Panggil library spdep jika belum aktif
library(spdep)
library(ggplot2)
library(dplyr)

# Menghitung statistik Getis-Ord Gi*
# Parameter "G" diubah menjadi "Gi" untuk mendapatkan z-score
G_test <- localG(stunting$stunting, WL)

# Tampilkan beberapa hasil pertama
head(G_test)
## [1]  2.9856342 -0.6318760 -1.8578032  1.1072275  3.7658728  0.1335865
# --- Visualisasi Hasil (Langkah Penting) ---

# 1. Tambahkan z-score dari G_test ke data spasial Anda
Bandung_sf$g_score <- as.vector(G_test)

# 2. Buat kolom baru untuk kategori Hot Spot / Cold Spot
# Kita akan menggunakan z-score untuk menentukan kategori
# Umumnya, z > 1.96 signifikan hot spot, z < -1.96 signifikan cold spot
Bandung_sf$g_cluster <- "Tidak Signifikan"
Bandung_sf$g_cluster[Bandung_sf$g_score > 2.58] <- "Hot Spot (99% Conf.)"
Bandung_sf$g_cluster[Bandung_sf$g_score > 1.96 & Bandung_sf$g_score <= 2.58] <- "Hot Spot (95% Conf.)"
Bandung_sf$g_cluster[Bandung_sf$g_score < -2.58] <- "Cold Spot (99% Conf.)"
Bandung_sf$g_cluster[Bandung_sf$g_score < -1.96 & Bandung_sf$g_score >= -2.58] <- "Cold Spot (95% Conf.)"

# 3. Membuat Peta Hot Spot
ggplot() +
  geom_sf(data = Bandung_sf, aes(fill = g_cluster), color = "white") +
  scale_fill_manual(values = c("Hot Spot (99% Conf.)" = "#d73027",  # Merah Tua
                               "Hot Spot (95% Conf.)" = "#fc8d59",  # Oranye
                               "Cold Spot (99% Conf.)" = "#4575b4",  # Biru Tua
                               "Cold Spot (95% Conf.)" = "#91bfdb",  # Biru Muda
                               "Tidak Signifikan" = "grey80")) +
  labs(title = "Peta Hot Spot Risiko Stunting di Kota Bandung (Getis-Ord Gi*)",
       fill = "Tipe Klaster") +
  theme_minimal()

Peta tersebut secara visual menunjukkan bahwa risiko stunting tidak tersebar merata di seluruh Kota Bandung, melainkan terkonsentrasi secara signifikan di sebuah titik panas (hot spot) yang berlokasi di bagian barat daya kota.

Bagian D. Diskusi Kritis

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

Analisis autokorelasi spasial bisa sangat membantu dinas kesehatan untuk membuat strategi yang lebih cerdas, efisien, dan tepat sasaran. Alih-alih menyebar sumber daya secara merata ke seluruh kota, analisis ini memungkinkan mereka untuk bertindak ke beberapa titik saja. Hal ini dapat mengefektifkan alokasi sumber dana, dapat memberikan sistem peringatan dan pencegahan secara proaktif serta dapat mengevaluasi efektivitas program yang sedang berlangsung.

2. Sebutkan keterbatasan dari analisis autokorelasi spasial, misalnya terkait dengan: • MAUP (Modifiable Areal Unit Problem) • Ukuran bobot spasial (rook, queen, k-nearest neighbors) • Masalah multiple testing pada analisis lokal

Dalam konteks MAUP, hasil analisis dapat berubah-ubah tergantung bagaimana definisi batas wilayah yang akan ditetapkan. Dalam konteks ukuran bobot spasial, Rook hanya akan menganggap wilayah lain sebagai tetangga jika berbagi sisi batas, Queen hanya menganggap tetangga jika berbagi sisi atau hanya satu titik sudut, K-NN mengabaikan batas dan menganggap tetangga berdasarkan jarak antar pusat wilayah. Artinya pilihan bobot yang berbeda akan berpengaruh besar terhadap hasil analisis spasial. Dalam konteks multiple test pada analisis lokal, terdapat kesulitan karena harus melakukan uji seperti LISA atau Getis-Ord untuk puluhan bahkan ratusan uji secara bersamaan untuk setiap unit lokasi spasial. Hal inilah yang mengakibatkan keterbatasan dari analisis autokorelasi spasial.