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.
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)
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]
## [,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
W menunjukkan hubungan spasial antar kecamatan:
1 jika berbatasan, 0 jika tidak.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)
\[ y = \rho W y + X\beta + \epsilon \] - \(y\): variabel dependen - \(W y\): pengaruh wilayah sekitar - \(X\beta\): efek variabel independen - \(\rho\): koefisien spasial
\[ y = X\beta + u, \quad u = \lambda W u + \epsilon \] - \(\lambda\): koefisien error spasial - SEM menangkap pengaruh spasial dalam error, bukan pada \(y\) langsung.
set.seed(42)
n <- 30
x1 <- rnorm(n)
x2 <- runif(n)
x <- cbind(1, x1, x2)
beta <- c(2, 0.5, -0.3)
rho <- 0.6
I <- diag(n)
y_sar <- solve(I - rho * W_matrix) %*% (x %*% beta + rnorm(n))
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)
sar_model <- spatialreg::lagsarlm(y_sar ~ x1 + x2, data = sim_data, listw = W_list)
sem_model <- spatialreg::errorsarlm(y_sem ~ 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
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)
lagsarlm() untuk model SAR.errorsarlm() untuk model SEM.Hipotesis: - \(H_0: \rho = 0\) → tidak ada ketergantungan spasial - \(H_1: \rho \neq 0\) → ada ketergantungan spasial
Jika p-value < 0.05 → tolak \(H_0\), ada pengaruh spasial yang signifikan.
lm.LMtests(lm(y_sar ~ x1 + x2, data = sim_data), listw = 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
LM = \(\frac{(e' W y)^2}{\hat{\sigma}^2 \cdot tr(W'W)}\),
dengan \(e\) adalah residual model OLS.
logLik(lm(y_sar ~ x1 + x2, data = sim_data))
## 'log Lik.' -99.03453 (df=4)
logLik(sar_model)
## 'log Lik.' -92.56581 (df=5)
logLik(sem_model)
## 'log Lik.' -225.1208 (df=5)
Bandung$y_sar <- as.numeric(sim_data$y_sar)
Bandung$y_sem <- as.numeric(sim_data$y_sem)
spplot(Bandung, "y_sar", main = "Simulasi Output SAR", col.regions = viridis::viridis(30))
spplot(Bandung, "y_sem", main = "Simulasi Output SEM", col.regions = viridis::viridis(30))
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.
Dari hasil simulasi dan pengujian: - Koefisien \(\rho\) dan \(\lambda\) signifikan → terdapat pengaruh spasial nyata - Uji LM menunjukkan perlunya pendekatan spasial - Log-likelihood SAR dan SEM lebih baik dibanding OLS
Implementasi ini menunjukkan bahwa pendekatan spasial penting untuk pengambilan keputusan berbasis data wilayah, baik untuk perencanaan, kebijakan, maupun penelitian lanjutan.