Jawab :
Autokorelasi Positif menunjukkan bahwa lokasi-lokasi yang dekat secara spasial cenderung memiliki nilai variabel yang mirip, sedangkan autokorelasi negatif menunjukkan bahwa lokasi-lokasi yang berdekatan cenderung memiliki nilai yang berbeda.
Jawab :
\(I\) = Indeks Moran (ukuran autokorelasi spasial global).
\(n\) = Jumlah unit pengamatan (misalnya jumlah wilayah, titik, atau lokasi).
\(Y_i\) = Nilai variabel pada lokasi \(i\).
\(\bar{Y}\) = Nilai rata-rata dari semua \(Y_i\), yaitu
\[ \bar{Y} = \frac{1}{n}\sum_{i=1}^{n} Y_i \] \(w_{ij}\) = Bobot spasial antara lokasi \(i\) dan \(j\), menggambarkan kedekatan spasial (misalnya 1 jika bertetangga, 0 jika tidak, atau nilai lain berdasarkan jarak).
\(\sum_{i=1}^{n}\sum_{j=1}^{n} w_{ij}\) = Jumlah total bobot spasial dari semua pasangan lokasi.
\(\sum_{i=1}^{n} (Y_i - \bar{Y})^2\) = Variansi total (penyebut untuk normalisasi).
\[ C = \frac{(n-1)}{2 \sum_{i=1}^{n}\sum_{j=1}^{n} w_{ij}} \cdot \frac{\sum_{i=1}^{n}\sum_{j=1}^{n} w_{ij} (Y_i - Y_j)^2} {\sum_{i=1}^{n} (Y_i - \bar{Y})^2} \]
Keterangan Simbol:
\(C\) = Indeks Geary (ukuran autokorelasi spasial global, alternatif Moran’s I).
\(n\) = Jumlah unit pengamatan (wilayah, titik, atau lokasi).
\(Y_i\) = Nilai variabel pada lokasi \(i\).
\(Y_j\) = Nilai variabel pada lokasi \(j\).
\(\bar{Y}\) = Nilai rata-rata dari semua \(Y_i\).
\(w_{ij}\) = Bobot spasial antara lokasi \(i\) dan \(j\).
\(\sum_{i=1}^{n}\sum_{j=1}^{n} w_{ij}\) = Jumlah total bobot spasial.
\((Y_i - Y_j)^2\) = Perbedaan kuadrat antar pasangan lokasi yang bertetangga.
\(\sum_{i=1}^{n} (Y_i - \bar{Y})^2\) = Variansi total.
Interpretasi Nilai Geary’s C
\(C \approx 1\) → tidak ada autokorelasi spasial (random).
\(C < 1\) → ada autokorelasi spasial positif (lokasi yang berdekatan cenderung mirip).
\(C > 1\) → ada autokorelasi spasial negatif (lokasi yang berdekatan cenderung berbeda).
\[ I_i = \frac{(Y_i - \bar{Y})}{S^2} \sum_{j=1}^{n} w_{ij} (Y_j - \bar{Y}) \]
dengan
\[ S^2 = \frac{1}{n} \sum_{k=1}^{n} (Y_k - \bar{Y})^2 \] Keterangan Simbol:
\(I_i\) = Indeks Moran lokal pada lokasi \(i\).
\(Y_i\) = Nilai variabel pada lokasi \(i\).
\(Y_j\) = Nilai variabel pada lokasi tetangga \(j\).
\(\bar{Y}\) = Nilai rata-rata dari seluruh lokasi.
\(w_{ij}\) = Bobot spasial antara lokasi \(i\) dan \(j\) (misalnya kedekatan/ketetanggaan).
\(S^2\) = Variansi keseluruhan dari variabel \(Y\).
\(n\) = Jumlah total unit pengamatan.
Interpretasi Local Moran’s \(I_i\):
Nilai \(I_i > 0\): menunjukkan bahwa lokasi \(i\) mirip dengan tetangganya (high–high atau low–low cluster → indikasi autokorelasi spasial positif lokal).
Nilai \(I_i < 0\): menunjukkan bahwa lokasi \(i\) berbeda dengan tetangganya (high–low atau low–high → indikasi autokorelasi spasial negatif lokal).
Signifikansi diuji dengan uji randomisasi / Monte Carlo untuk menentukan apakah pola lokal tersebut signifikan atau hanya kebetulan.
\[ G_i = \frac{\sum_{j=1}^{n} w_{ij} x_j}{\sum_{j=1}^{n} x_j} \]
atau dalam bentuk standar (z-score):
\[ G_i^* = \frac{\sum_{j=1}^{n} w_{ij} x_j - \bar{X} \sum_{j=1}^{n} w_{ij}} { S \sqrt{\frac{\left[n \sum_{j=1}^{n} w_{ij}^2 - \left(\sum_{j=1}^{n} w_{ij}\right)^2\right]}{n-1}} } \]
\[ G = \frac{\sum_{i=1}^{n} \sum_{j=1}^{n} w_{ij} x_i x_j}{\sum_{i=1}^{n} \sum_{j=1}^{n} x_i x_j} \]
Keterangan Simbol:
\(G_i\) = Indeks Getis–Ord lokal pada lokasi \(i\).
\(G_i^*\) = Versi standar/normalisasi dari \(G_i\) (digunakan untuk uji signifikansi, sering dipetakan sebagai hot spot dan cold spot).
\(G\) = Indeks Getis–Ord global (menunjukkan kecenderungan umum clustering tinggi/rendah).
\(x_i\) = Nilai variabel pada lokasi \(i\).
\(x_j\) = Nilai variabel pada lokasi \(j\).
\(\bar{X}\) = Rata-rata variabel \(x\).
\(S\) = Standar deviasi dari variabel \(x\).
\(w_{ij}\) = Bobot spasial antara lokasi \(i\) dan \(j\) (misalnya kedekatan atau ketetanggaan).
\(n\) = Jumlah unit pengamatan (misalnya wilayah).
Interpretasi:
Nilai \(G_i\) atau \(G_i^*\) tinggi signifikan → lokasi \(i\) berada dalam hot spot (nilai tinggi dikelilingi nilai tinggi).
Nilai \(G_i\) rendah signifikan → lokasi \(i\) berada dalam cold spot (nilai rendah dikelilingi nilai rendah).
Nilai \(G\) global signifikan → secara keseluruhan terdapat clustering (hot spots atau cold spots) di seluruh wilayah, bukan sekadar acak.
Jawab :
library(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(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
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
data_sim <- data.frame(
Kecamatan = paste0("K", sprintf("%02d", 1:30)),
Populasi = c(43545,46666,34673,13731,12361,24581,13792,48323,48021,13433,
40867,10380,21988,46825,24839,29066,14871,24802,33458,30657,
50210,28912,50089,12292,21884,44942,18976,25548,29765,41588),
Lambda_per_10k = c(2.136,3.536,3.701,2.649,1.057,0.817,2.536,4.782,3.120,1.739,
0.925,1.475,1.139,2.163,2.480,2.773,2.051,1.130,1.122,3.049,
3.206,2.824,1.604,1.287,0.907,1.576,1.751,1.776,2.084,1.719),
Expected = c(9.30,16.49,12.82,3.64,1.31,2.01,3.50,23.11,14.98,2.34,
3.78,1.53,2.50,10.12,6.16,8.06,3.05,2.80,3.75,9.35,
16.09,8.17,8.03,1.58,1.99,7.08,3.32,4.54,6.20,7.14),
Kasus = c(0,20,14,1,2,0,8,15,17,2,
0,0,1,7,6,4,1,1,1,9,
12,5,6,2,0,2,1,0,4,3),
Rate_per_10k = c(0.000,4.291,3.917,0.727,1.619,0.000,5.800,3.104,3.540,1.489,
0.000,0.000,0.455,1.495,2.416,1.376,0.672,0.403,0.299,2.938,
2.390,1.730,1.199,1.626,0.000,0.445,0.527,0.000,1.344,0.722)
)
library(sf)
library(dplyr)
library(ggplot2)
library(sf)
library(dplyr)
# 1. Load shapefile
Indo_Kec <- readRDS("gadm36_IDN_3_sp.rds")
# 2. Konversi ke sf (lebih aman langsung di sini)
Indo_sf <- st_as_sf(Indo_Kec)
## Loading required package: sp
## Warning: package 'sp' was built under R version 4.3.3
# 3. Cek kolom yang tersedia
print(names(Indo_sf))
## [1] "GID_0" "NAME_0" "GID_1" "NAME_1" "NL_NAME_1" "GID_2"
## [7] "NAME_2" "NL_NAME_2" "GID_3" "NAME_3" "VARNAME_3" "NL_NAME_3"
## [13] "TYPE_3" "ENGTYPE_3" "CC_3" "HASC_3" "geometry"
# 4. Filter hanya Kota Bandung
Bandung_sf <- Indo_sf %>% filter(NAME_2 == "Kota Bandung")
# 5. Buat kolom Kecamatan (kalau ada kolom NAME_3)
if ("NAME_3" %in% names(Bandung_sf)) {
Bandung_sf <- Bandung_sf %>% mutate(Kecamatan = NAME_3)
} else {
stop("Kolom NAME_3 tidak ada di shapefile! Kolom yang ada: ",
paste(names(Bandung_sf), collapse = ", "))
}
# 6. Tambahkan id
Bandung_sf$id <- seq_len(nrow(Bandung_sf))
data_sim$id <- seq_len(nrow(data_sim))
# 7. Join
Bandung_merged <- left_join(Bandung_sf, data_sim, by = "id")
# 8. Plot
ggplot(Bandung_merged) +
geom_sf(aes(fill = Kasus), color = "white") +
scale_fill_gradient(low = "pink", high = "red") +
theme_bw() +
labs(title = "Peta Jumlah Kasus Kota Bandung",
fill = "Jumlah Kasus")
Jawab :
Peta choropleth kasus simulasi di Kota Bandung memperlihatkan variasi intensitas antar kecamatan. Sebagian besar kecamatan menunjukkan jumlah kasus relatif rendah (ditunjukkan dengan warna merah muda), namun terdapat beberapa kecamatan yang menjadi titik konsentrasi dengan kasus cukup tinggi (berwarna merah tua). Pola ini menandakan adanya distribusi spasial yang tidak merata, di mana hanya beberapa wilayah tertentu yang menjadi fokus peningkatan kasus. Kondisi tersebut mengindikasikan potensi terbentuknya klaster lokal yang perlu mendapat perhatian lebih dalam strategi pencegahan dan pengendalian penyakit, baik melalui surveilans lebih intensif maupun intervensi kesehatan masyarakat yang terarah.
• Berapa nilai Moran’s I?
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')`
# Koordinat dummy
set.seed(123)
coords <- cbind(runif(30, 0, 10), runif(30, 0, 10))
# Tetangga k-nearest neighbor
nb <- knn2nb(knearneigh(coords, k = 4))
lw <- nb2listw(nb, style="W")
# Moran's I
moran.test(data_sim$Rate_per_10k, lw, randomisation=TRUE)
##
## Moran I test under randomisation
##
## data: data_sim$Rate_per_10k
## weights: lw
##
## Moran I statistic standard deviate = -0.53982, p-value = 0.7053
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## -0.09230284 -0.03448276 0.01147262
p-value = 0.7053 > 0.05 TERIMA H0 Interpretasi = Nilai Moran’s I sebesar -0.0923 dengan p-value 0.7053 menunjukkan bahwa pola spasial penyakit tidak signifikan. Distribusi kasus antar kecamatan cenderung acak dan tidak menunjukkan pengelompokan spasial.
• Apakah signifikan secara statistik (uji permutasi)?
Jawab :
Dengan p-value 0.7053 menunjukkan bahwa pola spasial penyakit tidak signifikan. Distribusi kasus antar kecamatan cenderung acak dan tidak menunjukkan pengelompokan spasial.
• Apa artinya bagi pola spasial penyakit?
Jawab :
Karena nilai Moran’s I negatif kecil (–0.0923) dan tidak signifikan (p = 0.7053), maka tidak ada bukti pola spasial pada distribusi penyakit. Dengan kata lain, angka kejadian penyakit antar kecamatan tidak menunjukkan kecenderungan mengelompok (clustering) maupun menyebar (dispersion), melainkan lebih menyerupai pola acak.Jadi, pola spasial penyakit tidak terbentuk — kasus muncul tersebar tanpa mengikuti kedekatan geografis antar kecamatan.
set.seed(123)
coords <- cbind(runif(30,0,10), runif(30,0,10)) # 30 titik random
knn4 <- knearneigh(coords, k=4) # 4 nearest neighbors
nb <- knn2nb(knn4) # daftar neighbor
lw <- nb2listw(nb, style="W") # bobot spasial terstandar
# ---- Hitung Geary’s C ----
geary_res <- geary.test(data_sim$Rate_per_10k, lw, randomisation=TRUE)
geary_res
##
## Geary C test under randomisation
##
## data: data_sim$Rate_per_10k
## weights: lw
##
## Geary C statistic standard deviate = -0.6435, p-value = 0.7401
## alternative hypothesis: Expectation greater than statistic
## sample estimates:
## Geary C statistic Expectation Variance
## 1.08246002 1.00000000 0.01642062
p-value = 0.7053 > 0.05 TERIMA H0
• Bagaimana perbandingannya dengan Moran’s I?
Jawab :
Moran’s I = −0.0923 (p = 0.7053) → tidak signifikan, menunjukkan kecenderungan lemah ke arah dispersi.
Geary’s C = 1.0825 (p = 0.7401) → tidak signifikan, juga sedikit >1 yang konsisten dengan pola dispersi.
Interpretasi: kedua uji konsisten menyimpulkan tidak ada autokorelasi spasial signifikan pada Rate per 10k. Distribusi kasus antar kecamatan cenderung acak, tanpa pola clustering atau hotspot yang jelas.
• Jelaskan perbedaan sensitivitas kedua ukuran ini.
Jawab :
Moran’s I dan Geary’s C sama-sama digunakan untuk mengukur autokorelasi spasial, namun keduanya memiliki sensitivitas yang berbeda. Moran’s I lebih sensitif dalam mendeteksi pola autokorelasi global, sehingga lebih baik untuk melihat kecenderungan umum apakah nilai tinggi atau rendah cenderung berkelompok dalam skala luas. Sebaliknya, Geary’s C lebih sensitif terhadap variasi lokal antar wilayah yang berdekatan, karena perhitungannya menekankan perbedaan nilai antara pasangan tetangga.
Moran’s I lebih menyoroti pola global, sedangkan Geary’s C lebih peka terhadap ketidaksamaan lokal.
# Tetapkan hubungan tetangga: 4 nearest neighbors
knn4 <- knearneigh(coords, k=4)
nb <- knn2nb(knn4)
lw <- nb2listw(nb, style="W")
# Hitung Local Moran’s I (LISA)
lisa <- localmoran(data_sim$Rate_per_10k, lw)
# Gabungkan hasil ke data
data_sim$Local_I <- lisa[,1]
data_sim$Local_I_pvalue <- lisa[,5]
# Tampilkan hasil
data_sim[, c("Kecamatan", "Rate_per_10k", "Local_I", "Local_I_pvalue")]
## Kecamatan Rate_per_10k Local_I Local_I_pvalue
## 1 K01 0.000 -8.919981e-01 0.07422604
## 2 K02 4.291 -3.530815e-01 0.79373792
## 3 K03 3.917 6.866580e-01 0.30416784
## 4 K04 0.727 -2.212431e-01 0.39278626
## 5 K05 1.619 -8.613337e-03 0.85131601
## 6 K06 0.000 3.000095e-01 0.48411783
## 7 K07 5.800 -4.153427e-01 0.92350143
## 8 K08 3.104 -1.034537e-01 0.90691413
## 9 K09 3.540 -6.022109e-01 0.41371698
## 10 K10 1.489 -4.311343e-05 0.97871768
## 11 K11 0.000 -4.455175e-01 0.39284798
## 12 K12 0.000 -1.543042e-01 0.80460825
## 13 K13 0.455 -9.999747e-02 0.80509485
## 14 K14 1.495 -2.695985e-04 0.94033848
## 15 K15 2.416 -4.197471e-01 0.18281545
## 16 K16 1.376 -1.500921e-02 0.67708446
## 17 K17 0.672 9.625434e-02 0.68756258
## 18 K18 0.403 2.696459e-01 0.41296242
## 19 K19 0.299 4.244360e-01 0.24620925
## 20 K20 2.938 4.782425e-02 0.86154409
## 21 K21 2.390 -1.397682e-01 0.66930524
## 22 K22 1.730 -1.287644e-02 0.88304792
## 23 K23 1.199 -1.389331e-01 0.14227626
## 24 K24 1.626 -9.176868e-03 0.84962792
## 25 K25 0.000 3.927869e-01 0.37180201
## 26 K26 0.445 -3.181499e-01 0.37511734
## 27 K27 0.527 -1.159020e-01 0.74648844
## 28 K28 0.000 -8.667585e-01 0.08316647
## 29 K29 1.344 -6.213398e-02 0.18009288
## 30 K30 0.722 4.078302e-01 0.09469057
• Identifikasi kecamatan yang masuk kategori High-High, Low-Low, High-Low, dan Low-High.
library(knitr)
## Warning: package 'knitr' was built under R version 4.3.3
# Tambahkan hasil ke data
data_sim$Local_I <- lisa[,1]
data_sim$Local_pvalue <- lisa[,5]
# Global mean
mean_rate <- mean(data_sim$Rate_per_10k)
# Spatial lag (nilai rata-rata tetangga)
lag_rate <- lag.listw(lw, data_sim$Rate_per_10k)
# Klasifikasi cluster LISA
data_sim$LISA_cluster <- NA
data_sim$LISA_cluster[data_sim$Rate_per_10k > mean_rate & lag_rate > mean_rate] <- "High-High"
data_sim$LISA_cluster[data_sim$Rate_per_10k < mean_rate & lag_rate < mean_rate] <- "Low-Low"
data_sim$LISA_cluster[data_sim$Rate_per_10k > mean_rate & lag_rate < mean_rate] <- "High-Low"
data_sim$LISA_cluster[data_sim$Rate_per_10k < mean_rate & lag_rate > mean_rate] <- "Low-High"
kable(
data_sim[, c("Kecamatan","Rate_per_10k","Local_I","Local_pvalue","LISA_cluster")],
caption = "Hasil Klasifikasi LISA per Kecamatan"
)
| Kecamatan | Rate_per_10k | Local_I | Local_pvalue | LISA_cluster |
|---|---|---|---|---|
| K01 | 0.000 | -0.8919981 | 0.0742260 | Low-High |
| K02 | 4.291 | -0.3530815 | 0.7937379 | High-Low |
| K03 | 3.917 | 0.6866580 | 0.3041678 | High-High |
| K04 | 0.727 | -0.2212431 | 0.3927863 | Low-High |
| K05 | 1.619 | -0.0086133 | 0.8513160 | High-Low |
| K06 | 0.000 | 0.3000095 | 0.4841178 | Low-Low |
| K07 | 5.800 | -0.4153427 | 0.9235014 | High-Low |
| K08 | 3.104 | -0.1034537 | 0.9069141 | High-Low |
| K09 | 3.540 | -0.6022109 | 0.4137170 | High-Low |
| K10 | 1.489 | -0.0000431 | 0.9787177 | High-Low |
| K11 | 0.000 | -0.4455175 | 0.3928480 | Low-High |
| K12 | 0.000 | -0.1543042 | 0.8046082 | Low-High |
| K13 | 0.455 | -0.0999975 | 0.8050949 | Low-High |
| K14 | 1.495 | -0.0002696 | 0.9403385 | High-Low |
| K15 | 2.416 | -0.4197471 | 0.1828155 | High-Low |
| K16 | 1.376 | -0.0150092 | 0.6770845 | Low-High |
| K17 | 0.672 | 0.0962543 | 0.6875626 | Low-Low |
| K18 | 0.403 | 0.2696459 | 0.4129624 | Low-Low |
| K19 | 0.299 | 0.4244360 | 0.2462092 | Low-Low |
| K20 | 2.938 | 0.0478243 | 0.8615441 | High-High |
| K21 | 2.390 | -0.1397682 | 0.6693052 | High-Low |
| K22 | 1.730 | -0.0128764 | 0.8830479 | High-Low |
| K23 | 1.199 | -0.1389331 | 0.1422763 | Low-High |
| K24 | 1.626 | -0.0091769 | 0.8496279 | High-Low |
| K25 | 0.000 | 0.3927869 | 0.3718020 | Low-Low |
| K26 | 0.445 | -0.3181499 | 0.3751173 | Low-High |
| K27 | 0.527 | -0.1159020 | 0.7464884 | Low-High |
| K28 | 0.000 | -0.8667585 | 0.0831665 | Low-High |
| K29 | 1.344 | -0.0621340 | 0.1800929 | Low-High |
| K30 | 0.722 | 0.4078302 | 0.0946906 | Low-Low |
• Buat peta cluster LISA.
# --- 1. Pastikan shapefile sudah ada ---
Bandung_sf$id <- 1:30 # kasih ID ke shapefile
# --- 2. Ambil hanya kolom penting dari data_sim ---
# (buang koordinat dummy X Y biar gak dobel)
data_sim_clean <- data_sim %>%
dplyr::select(id, Kecamatan, Rate_per_10k, LISA_cluster)
# --- 3. Join shapefile + data LISA ---
Bandung_cluster <- dplyr::left_join(Bandung_sf, data_sim_clean, by = "id")
# --- 4. Plot peta cluster LISA ---
ggplot(Bandung_cluster) +
geom_sf(aes(fill = LISA_cluster), color = "white", size = 0.3) +
scale_fill_manual(values = c(
"High-High" = "red",
"Low-Low" = "blue",
"High-Low" = "orange",
"Low-High" = "green",
"Not Significant" = "grey70"
)) +
theme_minimal() +
labs(
title = "Peta Cluster LISA Kota Bandung",
fill = "Cluster"
)
• Apa interpretasi hasil ini untuk kasus penyakit menular?
Jawab :
High-High (merah) → Kecamatan dengan angka kasus tinggi dan berdekatan dengan kecamatan lain yang juga tinggi. → Ini indikasi klaster endemis, sehingga wilayah ini perlu jadi prioritas intervensi pengendalian penyakit.
Low-Low (biru) → Kecamatan dengan angka kasus rendah, bertetangga dengan wilayah rendah juga. → Menunjukkan adanya “zona aman” atau daerah dengan risiko relatif kecil. Bisa jadi contoh praktik baik atau faktor protektif yang bisa dipelajari.
High-Low (oranye) → Kecamatan dengan angka kasus tinggi, tapi dikelilingi oleh wilayah rendah. → Bisa mengindikasikan anomali lokal atau outlier, mungkin ada faktor khusus (misalnya outbreak lokal, kepadatan penduduk tinggi, sanitasi buruk).
Low-High (hijau) → Kecamatan dengan angka kasus rendah, tetapi dikelilingi wilayah tinggi. → Potensi wilayah berisiko meningkat (spillover effect). Jika tidak diintervensi, bisa jadi daerah ini ikut terdampak.
Kesimpulan: Penyakit menular dalam data ini tidak merata secara acak, melainkan membentuk pola spasial. Ada klaster signifikan (High-High) yang menunjukkan kemungkinan sumber penularan lokal, sementara outlier (High-Low, Low-High) penting untuk dianalisis lebih lanjut, misalnya terkait mobilitas penduduk, sanitasi, atau faktor lingkungan.
globalG <- globalG.test(data_sim$Rate_per_10k, listw = lw, B = 999)
## Warning in globalG.test(data_sim$Rate_per_10k, listw = lw, B = 999): Binary
## weights recommended (especially for distance bands)
globalG
##
## Getis-Ord global G statistic
##
## data: data_sim$Rate_per_10k
## weights: lw
##
## standard deviate = -0.18181, p-value = 0.5721
## alternative hypothesis: greater
## sample estimates:
## Global G statistic Expectation Variance
## 3.362122e-02 3.448276e-02 2.245484e-05
Global G statistic = 0.0336
Expectation (nilai harapan) = 0.0345
Variance = 2.25e-05
Standard deviate (Z-score) = –0.18
p-value = 0.5721
Interpretasi
Nilai G observasi (0.0336) hampir sama dengan nilai harapan acak (0.0345).
Z-score sangat kecil (–0.18) dan p-value jauh di atas 0.05 → tidak signifikan.
Artinya, tidak ada bukti kuat adanya konsentrasi spasial (hotspot atau coldspot) dari angka kasus penyakit antar-kecamatan.
Dengan kata lain, distribusi Rate per 10k lebih cenderung acak dalam ruang, bukan terklaster atau terdispersi secara signifikan.
• Tentukan kecamatan yang termasuk hot spot dan cold spot.
data_rate <- data_sim$Rate_per_10k
# weights matriks tetangga
lw <- nb2listw(nb, style="W")
# uji Local Getis-Ord Gi*
gi_star <- localG(data_rate, lw)
# gabung hasil ke data frame
hasil_gi <- data.frame(
Kecamatan = rownames(as.data.frame(gi_star)),
GiZScore = as.numeric(gi_star)
)
# tentukan kategori
hasil_gi$Kategori <- ifelse(hasil_gi$GiZScore > 1.96, "Hot Spot",
ifelse(hasil_gi$GiZScore < -1.96, "Cold Spot",
"Tidak signifikan"))
hasil_gi
## Kecamatan GiZScore Kategori
## 1 1 1.78521751 Tidak signifikan
## 2 2 -0.26145983 Tidak signifikan
## 3 3 1.02753665 Tidak signifikan
## 4 4 0.85457539 Tidak signifikan
## 5 5 -0.18743956 Tidak signifikan
## 6 6 -0.69969495 Tidak signifikan
## 7 7 -0.09602410 Tidak signifikan
## 8 8 -0.11693175 Tidak signifikan
## 9 9 -0.81737006 Tidak signifikan
## 10 10 -0.02667660 Tidak signifikan
## 11 11 0.85446394 Tidak signifikan
## 12 12 0.24738763 Tidak signifikan
## 13 13 0.24675886 Tidak signifikan
## 14 14 -0.07484444 Tidak signifikan
## 15 15 -1.33213616 Tidak signifikan
## 16 16 0.41644492 Tidak signifikan
## 17 17 -0.40216502 Tidak signifikan
## 18 18 -0.81869155 Tidak signifikan
## 19 19 -1.15960602 Tidak signifikan
## 20 20 0.17440894 Tidak signifikan
## 21 21 -0.42710172 Tidak signifikan
## 22 22 -0.14710655 Tidak signifikan
## 23 23 1.46736696 Tidak signifikan
## 24 24 -0.18959320 Tidak signifikan
## 25 25 -0.89310300 Tidak signifikan
## 26 26 0.88692861 Tidak signifikan
## 27 27 0.32327308 Tidak signifikan
## 28 28 1.73260181 Tidak signifikan
## 29 29 1.34046910 Tidak signifikan
## 30 30 -1.67115753 Tidak signifikan
# --- 1. Tambah ID biar join gampang ---
Bandung_sf$id <- 1:30
hasil_gi$id <- 1:30 # urutan sesuai kecamatan
# --- 2. Gabungkan shapefile dengan hasil Gi* ---
Bandung_gi <- left_join(Bandung_sf, hasil_gi, by = "id")
# --- 3. Plot peta choropleth ---
ggplot(Bandung_gi) +
geom_sf(aes(fill = Kategori), color = "white", size = 0.3) +
scale_fill_manual(values = c(
"Hot Spot" = "red",
"Cold Spot" = "blue",
"Tidak signifikan" = "grey70"
)) +
theme_minimal() +
labs(
title = "Peta Hotspot & Coldspot (Getis-Ord Gi*) Kota Bandung",
fill = "Kategori"
)
Interpretasi :
Semua kecamatan jatuh ke kategori “Tidak signifikan” → artinya tidak ada daerah dengan pola spasial “Hotspot” atau “Coldspot” yang kuat secara statistik.
• Bandingkan hasilnya dengan peta LISA.
Jawab :
LISA: lebih sensitif terhadap hubungan nilai antar tetangga → masih bisa menangkap pola lokal (misalnya 1–2 kecamatan dengan pola High–High / Low–Low meski tidak kuat).
Getis–Ord Gi*: lebih ketat karena fokus ke concentration nilai ekstrem → hasilnya menunjukkan tidak ada konsentrasi signifikan.
Peta LISA memberikan indikasi adanya pola spasial lokal (meski lemah), sementara Getis–Ord Gi* menguatkan kesimpulan bahwa pola tersebut belum signifikan secara statistik dan distribusi kasus lebih mendekati acak.
• Apakah ada perbedaan wilayah yang ditandai sebagai klaster signifikan?
Jawab : Ada perbedaan besar antara hasil kedua peta. Peta LISA mengidentifikasi banyak klaster dan outlier spasial yang signifikan, sementara peta Getis-Ord Gi* tidak menemukan satu pun klaster yang signifikan (baik hotspot maupun coldspot).
Perbedaan ini bisa terjadi karena kedua metode memiliki tujuan dan dasar statistik yang berbeda:
LISA mengukur keterkaitan spasial lokal (local spatial autocorrelation) dan mengidentifikasi klaster serta outlier berdasarkan hubungan antara satu wilayah dan tetangganya.
Getis-Ord Gi* berfokus pada klaster nilai tinggi atau rendah yang ekstrem, bukan sekadar hubungan antara tetangga. Metode ini mengidentifikasi “hotspot” dan “coldspot” yang sangat kuat secara statistik.
Dengan kata lain, meskipun ada pola spasial yang terdeteksi oleh LISA, pola tersebut mungkin tidak cukup ekstrem atau kuat untuk memenuhi kriteria hotspot/coldspot Getis-Ord Gi*.
• MAUP (Modifiable Areal Unit Problem) • Ukuran bobot spasial (rook, queen, k-nearest neighbors) • Masalah multiple testing pada analisis lokal
Jawab:
1. MAUP (Modifiable Areal Unit Problem)
Keterbatasan:
Nilai autokorelasi global (misal Moran’s I) atau pola lokal bisa berubah drastis saat skala atau zonasi berubah.
Membuat kesimpulan tentang “kluster” atau pola spasial menjadi tidak stabil jika unit analisis diubah.
Sulit membandingkan studi antarwilayah yang menggunakan pembagian administratif berbeda.
2. Ukuran bobot spasial / definisi tetangga (spatial weights)
Keterbatasan:
3. Masalah multiple testing pada analisis lokal
Keterbatasan: