Fara Dhiyaa Ramadhani - 140610230066
Dosen Pengampu - IGN Mindra Jaya
Mata Kuliah - Spatial Statistik
Jelaskan apa yang dimaksud dengan autokorelasi spasial positif dan autokorelasi spasial negatif.
Berikan contoh sederhana dari fenomena yang bisa menunjukkan masing masing pola tersebut.
Tuliskan rumus matematis dari:
• Moran’s 𝐼
• Geary’s 𝐶
• Local Moran’s 𝐼𝑖
• Getis–Ord 𝐺𝑖 dan 𝐺∗𝑖
Autokorelasi spasial sendiri didefinisikan sebagai ukuran yang digunakan untuk mengukur derajat kemiripan nilai antar lokasi dan melihat apakah data memiliki pola keterkaitan antar wilayah tetangga. Sesuai dengan namanya, autokorelasi spasial positif adalah pertanda lokasi yang berdekatan dan bertetangga memiliki nilai yang cenderung mirip. Secara visual, hal ini ditandai dengan warna yang seragam. Sementara itu, autokorelasi spasial negatif adalah pertanda bahwa lokasi yang berdekatan memiliki nilai yang cenderung berlawanan, yang ditandai dengan warna yang berlawanan pada visualisasinya.
Adapun contoh dari autokorelasi spasial positif dan autokorelasi spasial negatif yaitu:
Contoh autokorelasi spasial positif: Kecamatan A yang memiliki jumlah kasus TBC tinggi dikelilingi oleh Kecamatan B, C, D, dan E yang juga memiliki jumlah kasus yang tinggi
Contoh autokorelasi spasial negatif: Provinsi A yang memiliki nilai UMP tinggi berbatasan langsung dengan Provinsi B yang memiliki UMP rendah
Rumus:
\[ 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 interpretasi:
\(I > 0\): nilai mirip
(tinggi–tinggi atau rendah–rendah) cenderung berdekatan → positive
spatial autocorrelation.
\(I < 0\): pola checkerboard
(tinggi dikelilingi rendah, atau sebaliknya) → negative spatial
autocorrelation.
\(I \approx 0\): pola acak, tidak ada autokorelasi spasial.
• Geary’s 𝐶
Rumus:
\[ 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 - \bar{x})^2} \]
dengan interpretasi:
\(C < 1\): Autokorelasi
positif (tetangga mirip).
\(C > 1\): Autokorelasi
negatif (tetangga berlawanan).
\(C = 1\): Tidak ada autokorelasi (acak).
• Local Moran’s 𝐼𝑖
Rumus:
\[ I_i = \frac{x_i - \bar{x}}{m_2} \sum_{j=1}^{N} w_{ij}(x_j - \bar{x}), \quad m_2 = \frac{1}{N} \sum_{k=1}^{N} (x_k - \bar{x})^2 \]
dengan interpretasi:
\(I_i > 0\): Unit spasial
\(i\) memiliki nilai yang mirip dengan
tetangganya
→ membentuk cluster High–High (tinggi dikelilingi tinggi) atau Low–Low
(rendah dikelilingi rendah).
\(I_i < 0\): Unit spasial
\(i\) berbeda dengan tetangganya
→ pola High–Low (tinggi dikelilingi rendah) atau Low–High (rendah
dikelilingi tinggi).
\(I_i \approx 0\): Tidak ada pola lokal yang signifikan (acak).
• Getis–Ord 𝐺𝑖 dan 𝐺∗𝑖
Rumus:
\[ G_i(d) = \frac{\sum_{j \neq i} w_{ij}(d) x_j}{\sum_{j \neq i} x_j} \]
\[ G_i^*(d) = \frac{\sum_{j=1}^{N} w_{ij}(d) x_j}{\sum_{j=1}^{N} x_j}, \quad \text{dengan } w_{ii}(d) = 1 \]
dengan interpretasi:
Nilai tinggi \(G_i^*\) → hot
spot (wilayah dengan nilai tinggi dikelilingi nilai tinggi).
Nilai rendah \(G_i^*\) → cold spot (wilayah dengan nilai rendah dikelilingi nilai rendah).
library(spdep)
## Warning: package 'spdep' was built under R version 4.4.3
## Loading required package: spData
## Warning: package 'spData' was built under R version 4.4.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.4.3
## Linking to GEOS 3.13.0, GDAL 3.10.1, PROJ 9.5.1; sf_use_s2() is TRUE
library(sp)
## Warning: package 'sp' was built under R version 4.4.3
library(sf)
library(ggplot2)
library(dplyr)
##
## 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
setwd("/Users/LENOVO/Downloads")
# 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)
Data yang digunakan adalah data jumlah kasus TB per kecamatan di Kota Bandung pada tahun 2024
Data <- read.csv("Data TB Bandung 2024.csv", sep=";")
Data
## id Kecamatan TB
## 1 1 Andir 2671
## 2 2 Antapani 1449
## 3 3 Arcamanik 1467
## 4 4 Astanaanyar 2265
## 5 5 Babakan Ciparay 2959
## 6 6 Bandung Kidul 1195
## 7 7 Bandung Kulon 2662
## 8 8 Bandung Wetan 674
## 9 9 Batununggal 2637
## 10 10 Bojongloa Kaler 2241
## 11 11 Bojongloa Kidul 1368
## 12 12 Buahbatu 1336
## 13 13 Cibeunying Kaler 1266
## 14 14 Cibeunying Kidul 1598
## 15 15 Cibiru 1652
## 16 16 Cicendo 1826
## 17 17 Cidadap 884
## 18 18 Cinambo 671
## 19 19 Coblong 2783
## 20 20 Gedebage 497
## 21 21 Kiaracondong 1546
## 22 22 Lengkong 1251
## 23 23 Mandalajati 1442
## 24 24 Panyileukan 909
## 25 25 Rancasari 1193
## 26 26 Regol 1516
## 27 27 Sukajadi 1303
## 28 28 Sukasari 2284
## 29 29 Sumur Bandung 440
## 30 30 Ujungberung 1232
Sumber Data: Profil Kesehatan Kota Bandung 2024
# Tambahkan id untuk join
Bandung$id <- c(1:30)
Data$id <- 1:nrow(Data)
# Ubah ke format sf
Bandung_sf <- st_as_sf(Bandung)
# Gabungkan dengan data kasus
Bandung_merged <- Bandung_sf %>%
left_join(Data, by = "id")
ggplot() +
geom_sf(data=Bandung_merged, aes(fill = TB), color=NA) +
theme_bw() +
scale_fill_gradient(low = "khaki", high = "darkgreen") + 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 Kasus TB Kota Bandung 2024",
fill = "Jumlah Kasus")
Dari hasil peta yang didapatkan, terlihat bahwa terdapat autokorelasi spasial positif yang ditandai dengan wilayah bertetangga dengan jumlah kasus yang tinggi di Kecamatan bagian Barat. Namun terdapat juga wilayah dengan jumlah kasus rendah yang dikelilingi oleh wilayah dengan jumlah kasus menengah hingga tinggi, yang berada pada bagian Barat Laut. Dari hasil tersebut, dapat diismpulkan bahwa penyebaran penyakit TB di Kota Bandung memiliki pola berkelompok (cluster), dimana penyebaran penyakitnya cenderung mengelompok sesuai wilayah.
• Berapa nilai Moran’s I?
• Apakah signifikan secara statistik (uji permutasi)?
• Apa artinya bagi pola spasial penyakit?
• Bagaimana perbandingannya dengan Moran’s I?
• Jelaskan perbedaan sensitivitas kedua ukuran ini.
• Identifikasi kecamatan yang masuk kategori High-High, Low-Low, High-Low, dan Low-High.
• Buat peta cluster LISA.
• Apa interpretasi hasil ini untuk kasus penyakit menular?
• Tentukan kecamatan yang termasuk hot spot dan cold spot.
• Bandingkan hasilnya dengan peta LISA.
nb <- poly2nb(Bandung_merged, queen = TRUE)
lw <- nb2listw(nb, style = "W")
Bandung_sf$TB <- as.numeric(Bandung_merged$TB)
moran_res <- moran.test(Bandung_sf$TB, lw,
randomisation = TRUE,
alternative = "two.sided")
moran_res
##
## Moran I test under randomisation
##
## data: Bandung_sf$TB
## weights: lw
##
## Moran I statistic standard deviate = 1.9685, p-value = 0.04901
## alternative hypothesis: two.sided
## sample estimates:
## Moran I statistic Expectation Variance
## 0.19170552 -0.03448276 0.01320239
Interpretasi Nilai Moran’s I sebesar 0.1917 dengan p-value sebesar 0.049 menandakan bahwa hasil yang didapatkan dari pengukuran nilai Moran’s adalah signifikan. Hal ini berarti terdapat autokorelasi spasial positif pada pola penyakit, dimana daerah dengan jumlah kasus yang seragam cenderung berdekatan dan mengelompok, atau dengan kata lain distribusi penyakit TB di Kota Bandung tidak acak.
geary_res <- spdep::geary.test(Bandung_sf$TB, lw, randomisation = TRUE, alternative = "two.sided")
geary_res
##
## Geary C test under randomisation
##
## data: Bandung_sf$TB
## weights: lw
##
## Geary C statistic standard deviate = 1.5047, p-value = 0.1324
## alternative hypothesis: two.sided
## sample estimates:
## Geary C statistic Expectation Variance
## 0.82407139 1.00000000 0.01367079
Interpretasi Nilai Geary’s C sebesar 0.8240 dengan p-value sebesar 0.1324 menandakan bahwa hasil yang didapatkan dari pengukuran nilai Geary’s tidak signifikan. Hasil ini berbeda dengan pengukuran menggunakan nilai Moran’s I yang hasilnya adalah signifikan. Dengan pengujian menggunakan Geary’s C, tidak terdapat bukti yang kuat bahwa terdapat autokorelasi spasial positif pada data. Hasil yang berbeda ini memang mungkin terjadi apabila pengukuran dilakukan dengan Moran’s I dan Geary’s C, dikarenakan nilai Moran’s mengukur keimiripan secara global dan lebih sensitif terhadap kovarians antar lokasi, sementara nilai Geary’s lebih sensitif terhadap perbedaan nilai antar tetangga dan fokus kepada variabilitas lokal.
# Standarisasi variabel
x <- scale(Bandung_sf$TB)[,1]
# Spatial lag
lagx <- spdep::lag.listw(lw, x, zero.policy = TRUE)
# Local Moran's I
lisa <- spdep::localmoran(x,lw , alternative = "two.sided", zero.policy = TRUE)
# Konversi hasil ke data frame
lisa_df <- as.data.frame(lisa)
names(lisa_df) <- c("Ii","Ei","Vi","Zi","Pi.two.sided")
# Level signifikansi
alpha <- 0.05
# Kategori kuadran
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)"
)
# Gabungkan hasil LISA ke shapefile
Bandung_LISA <- dplyr::bind_cols(Bandung_merged, lisa_df) |>
dplyr::mutate(
quad = ifelse(Pi.two.sided <= alpha, quad, "Not significant")
)
# Plot peta LISA
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 (Outlier)" = "#fdae61",
"Low-High (Outlier)" = "#74add1",
"Not significant" = "grey85"
)
) +
labs(title = "Local Moran's I (LISA)", fill = "Kategori") +
theme_minimal()
Interpretasi Dari peta yang sudah dibuat berdasarkan nilai LISA, terlihat bahwa ada beberapa kecamatan yang termasuk dalam kategori Hot-Hot, yang berarti keacamatan tersebut memiliki jumlah kasus TB yang tinggi dan bertetangga dengan kecamatan dengan jumlah kasus yang juga tinggi. Kecamatan tersebut yaitu kecamatan Andir, kecamatan, Bojongloa Kaler, kecamatan Babakan Ciparay, dan kecamatan Bandung Kulon. Selain itu, terdapat juga kecamatan yang masuk kategori Low-Low, yang berarti kecamatan tersebut memiliki jumlah kasus yang rendah dan bertetangga dengan kecamatan yang memiliki jumlah kasus yang juga rendah. Kecamatan tersebut adalah Kecamatan Arcamanik.
# Variabel asli (tanpa standardisasi)
x_raw <- Bandung_sf$TB
sum_x <- sum(x_raw)
# Matriks bobot biner (tidak distandarisasi)
Wb <- spdep::listw2mat(lw) # diag = 0 secara default
# --- G_i (tanpa i) ---
num_G <- as.numeric(Wb %*% x_raw) # Σ_j w_ij * x_j
den_G <- (sum_x - x_raw) # Σ_j x_j - x_i
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-score (pakai localG dari spdep) ---
Gz <- spdep::localG(x_raw, listw = lw, zero.policy = TRUE)
# Satukan ke data frame
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 (p < 0.05)",
z_Gistar <= -1.96 ~ "Cold spot (p < 0.05)",
TRUE ~ "Not significant"
)
)
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 significant" = "grey85"
)
) +
labs(
title = "Getis–Ord Gi* — Hot/Cold Spots (z-score)",
fill = NULL
) +
theme_minimal()
Interpretasi Dari peta yang telah dibuat, terlihat bahwa ada empat kecamatan yang termasuk dalam kategori Hot spot dimana kecamatan tersebut dapat diartikan sebagai area dengan jumlah kasus yang tinggi. Empat kecamatan terebut yaitu kecamatan Andir, kecamatan, Bojongloa Kaler, kecamatan Babakan Ciparay, dan kecamatan Bandung Kulon. Selain itu, terdapat juga kecamatan yang masuk kategori Cold Spot, yang berarti kecamatan tersebut memiliki jumlah kasus yang lebih rendah secara signfikan dibandingkan dengan kecamatan lainnya. Kecamatan tersebut adalah Kecamatan Arcamanik. Setelah ditinjau ulang, tidak terdapat perbedaan pada hasil visualisasi menggunakan nilai LISA maupun Getis Ord Gi*, sehingga dapat dikatakan bahwa sejauh ini analisis yang dilakukan t
Bagaimana hasil analisis autokorelasi spasial bisa membantu dinas kesehatan dalam menyusun strategi pencegahan dan intervensi penyakit menular di Kota Bandung?
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
• Apakah ada perbedaan wilayah yang ditandai sebagai klaster signifikan?
Analisis autokorelasi spasial dapat memberikan informasi dalam menyusun strategi mencegah dan intervensi penyakit menular di Kota Bandung. Hal ini karena dengan analisis tersebut, akan diidentifikasi wilayah yang memiliki resiko dan jumlah kasus tertinggi sehingga dinas kesehatan mampu untuk menentukan fokus utama wilayahnya. Selain itu, analisis autokorelasi spasial secara tidak langsung dapat mendeteksi pola penyebaran penyakit sehingga pemerintah dapat mengambil langkah dan kebijakan yang tepat untuk mencari faktor utama yang menyebabkan tingginya jumlah kasus dari pola yang didapatkan.
Analisis autokorelasi spasial memiliki beberapa kelemahan, di antaranya yaitu hasil analisis dapat berubah tergantung dari bagaimana wilayah administratif dibagi, misalnya hasil pada level Kota akan berbeda jika dibandingkan dengan level Kelurahan. Selain itu, ukuran bobot spasial dan definisi dari tiap bobot juga akan memengaruhi hasil karena tiap bobot memiliki spesifikasi yang berbeda untuk suatu wilayah dianggap bertetangga atau tidak. Ditambah lagi dengan harus dilakukannya multiple testing untuk uji analisis dalam ukuran lokal, yang mengakibatkan banyaknya uji hipotesis yang dilakukan dan akan meningkatkan resiko hasil yang tidak sesuai dengan kenyataan. Terakhir, wilayah yang dianggap memiliki klaster yang signifikan juga bergantung pada kelemahan lainnya yang sudah disebutkan, sehingga hasil yang didapatkan bisa tidak konsisten.