Spasial ekonometrik merupakan cabang dari ilmu ekonometrika yang memperhitungkan pengaruh lokasi atau ruang dalam hubungan ekonometrik. Pendekatan ini berkembang untuk menangani permasalahan ketika data saling bergantung secara geografis, seperti dalam kasus rumah tangga di wilayah tertentu, kota-kota dalam satu negara, atau wilayah administrasi lainnya.
Konsep dasar spasial dalam ekonometrika mulai dikenal pada dekade 1970-an dan 1980-an, ketika para ekonom dan geografer menyadari pentingnya ketergantungan spasial dalam analisis data regional. Salah satu tokoh penting dalam pengembangan ekonometrika spasial adalah Luc Anselin, seorang ilmuwan yang mempopulerkan pendekatan ini melalui karyanya “Spatial Econometrics: Methods and Models” yang diterbitkan pada tahun 1988. Buku ini menjadi tonggak penting dalam metodologi analisis spasial yang sistematis, termasuk pengembangan model SAR (Spatial Autoregressive) dan SEM (Spatial Error Model).
Dengan kemajuan komputasi dan ketersediaan data spasial digital, ekonometrika spasial semakin luas digunakan di berbagai bidang seperti perencanaan wilayah, epidemiologi, lingkungan, serta kebijakan publik.
Matriks bobot spasial (spatial weight matrix) adalah representasi hubungan spasial antar unit observasi, biasanya wilayah geografis.
W berisi 1 jika dua wilayah berbatasan.W dibentuk
berdasarkan jarak antar titik centroid wilayah.# Membaca shapefile Bandung dan membentuk matriks bobot
Indo_Kec <- readRDS('gadm36_IDN_3_sp.rds')
Bandung <- Indo_Kec[Indo_Kec$NAME_2 == "Kota Bandung", ]
Bandung$id <- 1:30
row.names(Bandung) <- as.character(1:30)
CoordK <- sp::coordinates(Bandung)
# Matriks bobot menggunakan queen contiguity
W <- poly2nb(Bandung, queen = TRUE)
W_matrix <- nb2mat(W, style = 'B', zero.policy = TRUE)
W_list <- nb2listw(W, style = 'W')
W_matrix[1:5, 1:5] # Menampilkan sebagian dari matriks
## [,1] [,2] [,3] [,4] [,5]
## 1 0 0 0 1 1
## 2 0 0 1 0 0
## 3 0 1 0 0 0
## 4 1 0 0 0 0
## 5 1 0 0 0 0
plot(Bandung, axes = TRUE, col = "gray90", main = "Peta Kecamatan Kota Bandung")
text(CoordK[,1], CoordK[,2], row.names(Bandung), col = "black", cex = 0.8, pos = 1.5)
points(CoordK[,1], CoordK[,2], pch = 19, cex = 0.7, col = "blue")
plot(W, CoordK, col = "red", add = TRUE)
Model spasial ekonometrik digunakan untuk menangkap ketergantungan antar unit geografis yang saling memengaruhi. Model ini menjadi penting ketika asumsi independensi dalam regresi klasik tidak lagi terpenuhi karena adanya interaksi spasial.
Berikut adalah langkah-langkah umum dalam penerapan model spasial ekonometrik:
Tentukan terlebih dahulu bentuk ketergantungan spasial: - Jika pengaruh spasial terjadi pada variabel dependen, gunakan model SAR: \[ y = \rho W y + X\beta + \epsilon \] - Jika pengaruh spasial terjadi pada residual, gunakan model SEM: \[ y = X\beta + u \quad \text{dengan} \quad u = \lambda W u + \epsilon \]
Bentuk matriks bobot spasial \(W\) berdasarkan kedekatan geografis: - Contiguity (berbatasan): menggunakan poly2nb atau contiguity queen/rook. - Jarak: berdasarkan radius atau k-nearest neighbors.
Matriks ini menggambarkan hubungan antar wilayah dan menjadi komponen penting dalam model spasial.
Lakukan estimasi parameter menggunakan metode Maximum Likelihood (MLE): - SAR: estimasi \(\rho\) dan \(\beta\). - SEM: estimasi \(\lambda\), \(\beta\), dan \(\sigma^2\).
Evaluasi dilakukan dengan: - Menilai signifikansi koefisien spasial \(\rho\) atau \(\lambda\). - Menggunakan kriteria AIC, log-likelihood, atau nilai R² pseudo untuk membandingkan model.
Gunakan pengujian seperti: - Lagrange Multiplier Test (LM): - \(H_0: \rho = 0\) untuk SAR. - \(H_0: \lambda = 0\) untuk SEM. - Likelihood Ratio Test (LR): untuk membandingkan model spasial vs model klasik.
Langkah-langkah di atas dapat digunakan untuk membangun, mengestimasi, dan menginterpretasi model spasial dalam berbagai aplikasi.
Model: \[ y = \rho W y + X\beta + \epsilon \]
Di mana \(\rho\) adalah koefisien autroregresif spasial.
Model: \[ y = X\beta + u \quad \text{dengan} \quad u = \lambda W u + \epsilon \]
Hipotesis umum:
# Pastikan sim_data sudah dibuat sebelum visualisasi
# Potongan visualisasi ini dipindah ke bawah setelah sim_data tersedia
set.seed(42)
n <- 30
x1 <- rnorm(n)
x2 <- runif(n)
x <- cbind(1, x1, x2)
beta <- c(2, 0.5, -0.3)
# SAR
rho <- 0.6
I <- diag(n)
y_sar <- solve(I - rho * W_matrix) %*% (x %*% beta + rnorm(n))
# SEM
lambda <- 0.7
u <- solve(I - lambda * W_matrix) %*% rnorm(n)
y_sem <- x %*% beta + u
sim_data <- data.frame(id = 1:n, x1 = x1, x2 = x2, y_sar = y_sar, y_sem = y_sem)
head(sim_data)
## id x1 x2 y_sar y_sem
## 1 1 1.3709584 0.6756073 -12.3774821 451.9473
## 2 2 -0.5646982 0.9828172 -10.1035470 782.7758
## 3 3 0.3631284 0.7595443 -12.0850250 -40.0228
## 4 4 0.6328626 0.5664884 0.2081208 120.6613
## 5 5 0.4042683 0.8496897 2.4840956 -424.5935
## 6 6 -0.1061245 0.1894739 9.6391755 -290.7800
# Spatial regression SAR
sar_model <- spatialreg::lagsarlm(y_sar ~ x1 + x2, data = sim_data, listw = W_list)
summary(sar_model)
##
## Call:spatialreg::lagsarlm(formula = y_sar ~ x1 + x2, data = sim_data,
## listw = W_list)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.98184 -3.13638 -0.35046 3.21351 8.97155
##
## Type: lag
## Coefficients: (asymptotic standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.61451 1.55158 1.6851 0.09198
## x1 -0.26283 0.70505 -0.3728 0.70931
## x2 -5.36908 3.08714 -1.7392 0.08200
##
## Rho: 0.81726, LR test value: 12.937, p-value: 0.00032207
## Asymptotic standard error: 0.091432
## z-value: 8.9385, p-value: < 2.22e-16
## Wald statistic: 79.896, p-value: < 2.22e-16
##
## Log likelihood: -92.56581 for lag model
## ML residual variance (sigma squared): 22.23, (sigma: 4.7149)
## Number of observations: 30
## Number of parameters estimated: 5
## AIC: 195.13, (AIC for lm: 206.07)
## LM test for residual autocorrelation
## test value: 15.068, p-value: 0.0001037
# Spatial regression SEM
sem_model <- spatialreg::errorsarlm(y_sem ~ x1 + x2, data = sim_data, listw = W_list)
summary(sem_model)
##
## Call:spatialreg::errorsarlm(formula = y_sem ~ x1 + x2, data = sim_data,
## listw = W_list)
##
## Residuals:
## Min 1Q Median 3Q Max
## -615.832 -319.001 35.615 343.674 815.648
##
## Type: error
## Coefficients: (asymptotic standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -46.783 420.594 -0.1112 0.9114
## x1 -51.972 59.673 -0.8709 0.3838
## x2 27.624 214.798 0.1286 0.8977
##
## Lambda: 0.82905, LR test value: 12.708, p-value: 0.00036402
## Asymptotic standard error: 0.087584
## z-value: 9.4658, p-value: < 2.22e-16
## Wald statistic: 89.602, p-value: < 2.22e-16
##
## Log likelihood: -225.1208 for error model
## ML residual variance (sigma squared): 151390, (sigma: 389.09)
## Number of observations: 30
## Number of parameters estimated: 5
## AIC: 460.24, (AIC for lm: 470.95)
Bandung$y_sar <- as.numeric(sim_data$y_sar)
Bandung$y_sem <- as.numeric(sim_data$y_sem)
# Visualisasi SAR
spplot(Bandung, "y_sar", main = "Simulasi Output SAR", col.regions = viridis::viridis(30))
# Visualisasi SEM
spplot(Bandung, "y_sem", main = "Simulasi Output SEM", col.regions = viridis::viridis(30))
lm.LMtests(lm(y_sar ~ x1 + x2, data = sim_data), W_list, test = "all")
## Please update scripts to use lm.RStests in place of lm.LMtests
##
## Rao's score (a.k.a Lagrange multiplier) diagnostics for spatial
## dependence
##
## data:
## model: lm(formula = y_sar ~ x1 + x2, data = sim_data)
## test weights: listw
##
## RSerr = 5.9808, df = 1, p-value = 0.01446
##
##
## Rao's score (a.k.a Lagrange multiplier) diagnostics for spatial
## dependence
##
## data:
## model: lm(formula = y_sar ~ x1 + x2, data = sim_data)
## test weights: listw
##
## RSlag = 8.0005, df = 1, p-value = 0.004677
##
##
## Rao's score (a.k.a Lagrange multiplier) diagnostics for spatial
## dependence
##
## data:
## model: lm(formula = y_sar ~ x1 + x2, data = sim_data)
## test weights: listw
##
## adjRSerr = 1.175, df = 1, p-value = 0.2784
##
##
## Rao's score (a.k.a Lagrange multiplier) diagnostics for spatial
## dependence
##
## data:
## model: lm(formula = y_sar ~ x1 + x2, data = sim_data)
## test weights: listw
##
## adjRSlag = 3.1946, df = 1, p-value = 0.07388
##
##
## Rao's score (a.k.a Lagrange multiplier) diagnostics for spatial
## dependence
##
## data:
## model: lm(formula = y_sar ~ x1 + x2, data = sim_data)
## test weights: listw
##
## SARMA = 9.1754, df = 2, p-value = 0.01018
Spasial ekonometrik memberikan pendekatan yang lebih realistis dalam menganalisis fenomena sosial ekonomi yang tersebar secara geografis. Dengan mempertimbangkan interaksi antar wilayah, model seperti SAR dan SEM mampu mengatasi pelanggaran asumsi klasik akibat adanya autokorelasi spasial.
Melalui contoh simulasi yang dilakukan pada 30 kecamatan di Kota Bandung, dapat dilihat bahwa:
Langkah-langkah mulai dari pembentukan matriks bobot spasial, simulasi data, estimasi parameter, hingga visualisasi peta membuktikan bahwa pendekatan ini sangat berguna untuk analisis spasial terapan.
Implementasi R melalui paket spdep dan
spatialreg menjadikan analisis spasial ekonometrik dapat
dilakukan secara efisien dan komprehensif untuk berbagai tujuan
penelitian maupun kebijakan.