===== Bagian A. Konsep teori ======

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

Autokorelasi Positif adalah sebuah keadaan dalam aspek spatial statistics dimana memiliki pola tinggi-tinggi atau rendah-rendah. Dalam konteks lokasi/wilayah, autokorelasi positif terjadi ketika nilai yang mirip saling berdekatan secara lokasi, misalnya nilai tinggi berdekatan dengan nilai tinggi, begitu juga untuk nilai rendah. Sedangkan untuk autokorelasi negatif kebalikan dari autokorelasi positif, pada peristiwa ini nilai yang berlawanan berdekatan secara lokasi(nilai yang tinggi berdekatan dengan nilai yang rendah dan sebaliknya).

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

Autokorelasi Positif : Kota Cimahi dan Bandung Barat berdekatan secara geografis dan mereka memiliki angka kasus penyakit TBC yang mirip yang cenderung berada di angka sedang.

Autokorelasi negatif : Pangandaran memiliki angka kasus penyakit TBC yang rendah, namun berdekatan dengan Kabupaten/Kota yang memiliki angka kasus TBC kategori sedang - tinggi yaitu Kota Tasikmalaya dan Ciamis.

3. Tuliskan rumus matematis dari:

• Moran’s 𝐼 ## Moran’s I (Global) # Rumus Moran’s I # Rumus 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:

Rumus Geary’s C

\[ C = \frac{(n-1)}{2 S_0} \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:

Interpretasi

dengan:

Rumus Local Moran’s I

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

dengan:

Interpretasi

Rumus Getis-Ord Gi*

\[ G_i^* = \frac{ \sum_{j=1}^{n} w_{ij} \, x_j - \bar{X} \sum_{j=1}^{n} w_{ij} } { S \, \sqrt{ \frac{ n \sum_{j=1}^{n} w_{ij}^2 - \left( \sum_{j=1}^{n} w_{ij} \right)^2 }{n-1} } } \]

dengan:

Interpretasi

4. Jelaskan perbedaan utama antara ukuran global dan lokal.

Perbedaan utama ukuran global dan lokal pada autokorelasi spasial terletak pada cakupan wilayahnya. Ukuran global menghitung korelasi secara keseluruhan pada area studi yang memberi hasil apakah area tersebut memiliki kecenderungan berkelompok(klaster) atau tidak. Ukuran lokal akan melanjutkan pekerjaan yang sudah dilakukan di ukuran global. Ukuran lokal cakupannya unit spasial yang ada di area studi tersebut. Ketika di ukuran global memberi hasil bahwa adanya kelompok di area studi, maka ukuran lokal bekerja untuk mengetahui di unit wilayah mana saja yang memiliki autokorelasi dan pola apa yang dibentuk di wilayah tersebut

===== Bagian B. Analisis Data (Simulasi) ======

1. Gunakan data spasial kecamatan di Kota Bandung (atau gunakan grid simulasi jika data asli tidak tersedia).

2. Buat data simulasi kasus penyakit menular (misalnya diare per 10.000 penduduk) untuk 30 kecamatan di Kota Bandung. Gunakan distribusi Poisson dengan rata-rata berbeda antar kecamatan.

# Set folder kerja
setwd("C:/Users/ACER/OneDrive/Documents/Unpad/Statistika/Semester 5")

# Data kasus
HIV <- read.csv("HIV.csv", sep = ";")

# Data shapefile RDS level kecamatan
Indo_Kec <- readRDS("gadm36_IDN_3_sp.rds")

# Ambil hanya Kota Bandung
Bandung <- Indo_Kec[Indo_Kec$NAME_2 == "Kota Bandung", ]
Bandung$id <- 1:30
Bandung_sf <- st_as_sf(Bandung)

# Gabungkan dengan data kasus
Bandung_merged <- Bandung_sf %>%
  left_join(HIV, by = "id")

ggplot(Bandung_merged) +
  geom_sf(aes(fill = HIV), color = NA) +
  scale_fill_gradient(low = "#F08080", high = "#8B0000") +
  theme_bw() +
  labs(title = "Peta Kasus HIV Kota Bandung", fill = "Jumlah Kasus")

## Simulasi
# Kalau objek Bandung_sf belum ada, bikin dummy grid
if(!exists("Bandung_sf")) {
  bb <- sf::st_as_sfc(
    sf::st_bbox(c(xmin = 107.55, ymin = -6.98,
                  xmax = 107.72, ymax = -6.85), crs = 4326))
  
  grid <- sf::st_make_grid(bb, n = c(6, 5))
  grid <- sf::st_as_sf(grid)             # ubah ke sf
  grid$id <- seq_len(nrow(grid))         # tambah kolom id
  Bandung_sf <- grid
}

Bandung_sf <- sf::st_make_valid(Bandung_sf)    # pastikan geometri valid

# kasih id kalau belum ada
if(!"id" %in% names(Bandung_sf)) {
  Bandung_sf$id <- seq_len(nrow(Bandung_sf))
}

# plot dummy grid
library(ggplot2)
ggplot(Bandung_sf) +
  geom_sf(fill = "grey90", color = "white") +
  labs(title = "Kota Bandung - Unit (contoh)") +
  theme_minimal()

# Neighbor queen
set.seed(123)
nb <- spdep::poly2nb(sf::as_Spatial(Bandung_sf), queen = TRUE)
# Listw untuk analitik global/lokal (row-standar & biner)
lwW <- spdep::nb2listw(nb, style="W") # row-standardized
lwB <- spdep::nb2listw(nb, style="B") # binary (untuk raw G)
N <- nrow(Bandung_sf)
z <- rnorm(N)
lz <- spdep::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))
HIV <- dplyr::tibble(id = Bandung_sf$id, pop = pop, cases = cases,
                       rate10k = (cases/pop)*10000)
Bandung_merged <- dplyr::left_join(Bandung_sf, HIV, by="id")

3. Buat peta choropleth dari data simulasi tersebut.

4. Apa pola spasial yang terlihat secara visual?

Dari peta choropleth yang terbentuk, diperoleh beberapa informasi.

1.Warna kuning terang menunjukkan angka kasus HIV per 10.000 penduduk tinggi dan warna gelap menunjukkan angka kasus HIV rendah.

2. Bagian paling utara, terdapat warna terang untuk beberapa kecamatan yang berdekatan, hal ini merupakan peristiwa autokorelasi positif dengan pola hotspot (kasus tinggi-tinggi)

3. Bagian tengah ke selatan, didominasi kecamatan yang memiliki warna gelap yang berarti mereka memiliki pola coldspot (kasus rendah-rendah)

4. Bagian paling selatan, terdapat 1 kecamatan yang bewarna pink, dikelilingi kecamatan yang berwarna ungu menuju gelap. Ini secara tak langsung sedikitnya mengindikasikan pola checkerboard.

5. Secara keseluruhan, peta choropleth yang terbentuk didominasi oleh peristiwa autokorelasi positif.

===== Bagian C. Pengukuran Autokorelasi ======

1. Hitung Moran’s I

Rumus 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.8496, p-value = 1.237e-06
## alternative hypothesis: two.sided
## sample estimates:
## Moran I statistic       Expectation          Variance 
##        0.50481782       -0.03448276        0.01236637

• Berapa nilai Moran’s I?

Dari hasil yang diperoleh, nilai Moran’s I sebesar 0.505 yang berarti terjadi autokorelasi positif.

• Apakah signifikan secara statistik (uji permutasi)?

nilai p-value yang dihasilkan (0.000 < 0.05) menunjukkan bahwa uji permutasi signifikan

• Apa artinya bagi pola spasial penyakit?

Dihasilkan nilai moran’s I positif yang menandakan adanya autokorelasi positif, artinya kelompok yang terbentuk berisi kecamatan yang memiliki kasus HIV tinggi cenderung berdekatan. Begitupun untuk kecamatan-kecamatan dengan angka kasus rendah saling berdekatan.

2. Hitung Geary’s C.

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 = 4.3461, p-value = 1.386e-05
## alternative hypothesis: two.sided
## sample estimates:
## Geary C statistic       Expectation          Variance 
##        0.47515619        1.00000000        0.01458327

Bagaimana perbandingannya dengan Moran’s I?

secara konsep, Moran’s I mengukur kemiripan (kovarians) antara nilai sebuah unit dan nilai tetangganya, jika nilai positif berarti unit mirip tetangganya. Sedangkan, Geary’s C mengukur perbedaan antar nilai tetangga, jika nilainya <1 berarti perbedaan kecil yang mengindikasikan mirip. Moran’s I menghasilkan nilai positif (0.505) dan Geary’s C bernilai lebih kecil dari 1 (0.475). Kedua nilai tersebut memiliki index berbeda, sehingga keduanya menunjukkan kesimpulan yang sama: terdapat autokorelasi spasial positif yang signifikan, artinya kasus penyakit cenderung berkelompok antar kecamatan.

Jelaskan perbedaan sensitivitas kedua ukuran ini

Moran’s I lebih peka terhadap keseluruhan area (global), sedangkan Geary’s C lebih peka terhadap antarunit wilayah karena menghitung perbedaan nilai antar tetangganya. Oleh karena itu, Moran’s I lebih baik dalam mendeteksi clustering global, sedangkan Geary’s C lebih baik dalam mengungkap variasi lokal atau outlier.

3. Hitung 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"))

• Buat peta cluster LISA.

• Identifikasi kecamatan yang masuk kategori High-High, Low-Low, High-Low, dan Low-High.

Pada peta LISA yang dihasilkan, diperoleh informasi bahwa kecamatan bagian paling utara yang dilabeli warna ungu menunjukkan kategori high-high yang artinya memberikan pola hotspot. Ini mengindikasikan kecamatan-kecamatan dengan kasus HIV tinggi berdekatan.

• Apa interpretasi hasil ini untuk kasus penyakit menular?

Peta ini hanya menghasilkan kecamatan yang dilabeli warna ungu. Hal ini menandakan adanya klaster “High-High”, yaitu kecamatan dengan jumlah kasus HIV yang tinggi dan dikelilingi oleh kecamatan dengan kasus tinggi juga. Artinya, daerah tersebut berpotensi menjadi pusat penyebaran penyakit dan perlu diberi perhatian lebih, seperti peningkatan layanan kesehatan dan langkah pencegahan penularan. Sementara wilayah berwarna abu-abu berarti tidak ditemukan pola penyebaran yang signifikan.

4. Hitung 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.01069   Min.   :-1.7571   MULTIPOLYGON :30  
##  1st Qu.:0.05115   1st Qu.:0.07107   1st Qu.:-1.1364   epsg:NA      : 0  
##  Median :0.09574   Median :0.11959   Median :-0.9334   +proj=long...: 0  
##  Mean   :0.13832   Mean   :0.16419   Mean   :-0.2353                     
##  3rd Qu.:0.16788   3rd Qu.:0.18923   3rd Qu.: 0.1827                     
##  Max.   :0.48942   Max.   :0.53346   Max.   : 4.1541

• Tentukan kecamatan yang termasuk hot spot dan cold spot.

##    Kecamatan   GiZScore         Kategori
## 1          1 -0.9652495 Tidak signifikan
## 2          2 -0.8764372 Tidak signifikan
## 3          3 -1.2615644 Tidak signifikan
## 4          4 -0.3828388 Tidak signifikan
## 5          5  0.2100084 Tidak signifikan
## 6          6 -0.1294383 Tidak signifikan
## 7          7 -0.7840207 Tidak signifikan
## 8          8  0.9236922 Tidak signifikan
## 9          9 -1.7571482 Tidak signifikan
## 10        10  0.1007669 Tidak signifikan
## 11        11 -0.6561051 Tidak signifikan
## 12        12 -1.1218466 Tidak signifikan
## 13        13  0.7480411 Tidak signifikan
## 14        14 -1.0163665 Tidak signifikan
## 15        15 -1.1412038 Tidak signifikan
## 16        16  0.8615224 Tidak signifikan
## 17        17  4.1541166         Hot Spot
## 18        18 -1.6417306 Tidak signifikan
## 19        19  2.0935342         Hot Spot
## 20        20 -1.0625636 Tidak signifikan
## 21        21 -1.0961745 Tidak signifikan
## 22        22 -1.1219404 Tidak signifikan
## 23        23 -1.6444391 Tidak signifikan
## 24        24 -1.1487835 Tidak signifikan
## 25        25 -0.9030437 Tidak signifikan
## 26        26 -1.4022475 Tidak signifikan
## 27        27  3.4744630         Hot Spot
## 28        28  2.7630328         Hot Spot
## 29        29 -1.3117707 Tidak signifikan
## 30        30 -0.9638121 Tidak signifikan

Hasil peta Getis-Ord hanya menunjukkan wilayah berlabel maroon yang mengindikasikan wilayah tersebut memiliki pola hotspot. Kecamatan tersebut berada di bagian paling utara kota Bandung.

• Bandingkan hasilnya dengan peta LISA.

Peta LISA melihat hubungan dengan tetangganya, mengetahui hubungannya tinggi-tinggi dan rendah-rendah atau outlier yang hubungannya tinggi-rendah dan rendah-tinggi. Sedangkan pada peta Getis-Ord menunjukkan kumpulan wilayah hotspot atau coldspot yang signifikan dan tidak mendeteksi adanya outlier.

• Apakah ada perbedaan wilayah yang ditandai sebagai klaster signifikan?

Iya. Pada Peta LISA menunjukkan wilayah kasus tinggi yang dikelilingi dengan wilayah yang yang berkasus tinggi juga, dan bisa mendeteksi outlier (kasus tinggi dikelilingi kasus rendah, dan sebaliknya), namun pada kasus ini tidak ada. Peta Getis-Ord menunjukkan hasil yang sama, tetapi peta Getis-Ord mengindikasikan adanya kumpulan wilayah dengan kasus tinggi yang signifikan.

===== 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 membantu dinas kesehatan dalam mengidentifikasi wilayah dengan tingkat penyakit menular yang tinggi dan berkelompok, sehingga dinkes bisa memfokuskan untuk strategi pencegahan dan intervensi pada wilayah yang paling membutuhkan, mendeteksi outlier untuk investigasi khusus, serta mengevaluasi efektivitas program kesehatan dari waktu ke waktu.

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

Analisis autokorelasi spasial memiliki keterbatasan:

1. MAUP : Hasil analisis spasial dapat berubah ketika kita merubah pembagian atau pengelompokkan wilayah (unit spasial).

2. Ukuran Bobot Spasial : definisi “tetangga” (spatial weights) yang dipakai (Rook, Queen, kNN) akan mempengaruhi hasil.

3. Masalah multiple testing pada analisis lokal : kita menguji setiap unit wilayah satu per satu. Kasus in rentan pada masalah multiple testing, sehingga perlu koreksi atau interpretasi hati-hati