Este documento presenta una exploracion espacial sencilla del PIB
turistico en Mexico.
La idea es visualizar patrones territoriales, medir si existe
autocorrelacion espacial y comparar algunos modelos espaciales
basicos.
Se utilizan dos niveles de analisis:
El objetivo es entender si existen patrones geograficos en la actividad turistica entre los estados del pais.
Se cargan los paquetes necesarios para trabajar con datos espaciales, mapas y modelos econometricos.
Se define el modo de visualizacion de mapas y algunas opciones para evitar problemas graficos.
Se carga la base de datos panel con variables economicas y el shapefile con los estados de Mexico.
Se combinan los datos economicos con la geometria de los estados.
Para el analisis espacial exploratorio se necesita una sola
observacion por estado.
Aqui se utiliza el año mas reciente disponible.
latest_year <- max(state_geodata$year, na.rm = TRUE)
state_geodata_cs <- state_geodata %>%
filter(year == latest_year) %>%
arrange(OBJECTID)
latest_year[1] 2022
[1] 32
Se define un estilo visual simple para mantener consistencia en los mapas.
Esta funcion permite crear mapas coropleticos de forma mas eficiente.
El siguiente mapa muestra como se distribuye el PIB turistico entre los estados.
tourism_map <- make_map(
data = state_geodata_cs,
var = "tourism_gdp",
palette = "Blues",
legend_title = "PIB turistico",
map_title = "Importancia economica del turismo por estado"
)
tourism_mapA continuacion se muestran algunas variables que pueden ayudar a explicar diferencias territoriales.
real_wage_map <- make_map(
state_geodata_cs,
"real_wage",
"BuGn",
"Salario real",
"Poder adquisitivo"
)
real_wage_mappop_density_map <- make_map(
state_geodata_cs,
"pop_density",
"OrRd",
"Habitantes por km cuadrado",
"Densidad poblacional"
)
pop_density_mapEste panel resume visualmente varias variables relevantes.
tmap_arrange(
real_wage_map,
pop_density_map,
college_education_map,
public_investment_map,
ncol = 2,
nrow = 2
)Se construye una matriz de vecindad tipo Queen, donde los estados vecinos comparten frontera o vertice.
mx_cs_map <- state_geodata_cs
swm <- poly2nb(mx_cs_map, queen = TRUE)
sswm <- nb2listw(swm, style = "W", zero.policy = TRUE)
summary(swm)Neighbour list object:
Number of regions: 32
Number of nonzero links: 138
Percentage nonzero weights: 13.47656
Average number of links: 4.3125
Link number distribution:
1 2 3 4 5 6 7 8 9
1 6 6 6 5 2 3 2 1
1 least connected region:
31 with 1 link
1 most connected region:
8 with 9 links
La matriz de contigüidad tipo Queen considera vecinos a los estados
que comparten frontera o vertice.
Esto permite representar las relaciones espaciales directas entre
entidades federativas.
mx_cs_map_sp <- as(mx_cs_map, "Spatial")
mx_cs_centroid <- coordinates(mx_cs_map_sp)
plot(mx_cs_map_sp, border = "gray60", axes = FALSE,
main = "Conectividad espacial: matriz Queen")
plot(mx_cs_map_sp, col = "gray90", border = "white", add = TRUE)
plot(sswm,
coords = mx_cs_centroid,
pch = 19,
cex = 0.2,
col = "red",
add = TRUE)En este enfoque cada estado se conecta con sus k vecinos mas cercanos en terminos de distancia geografica.
Neighbour list object:
Number of regions: 32
Number of nonzero links: 160
Percentage nonzero weights: 15.625
Average number of links: 5
Non-symmetric neighbours list
Link number distribution:
5
32
32 least connected regions:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 with 5 links
32 most connected regions:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 with 5 links
plot(mx_cs_map_sp,
border = "gray70",
main = "Vecinos mas cercanos (k = 5)")
plot(knn5,
mx_cs_centroid,
pch = 19,
cex = 0.4,
add = TRUE,
col = "red")El analisis LISA permite identificar agrupamientos locales de valores altos o bajos en el espacio.
sswm_geoda <- queen_weights(mx_cs_map)
lisa_tourism <- local_moran(
sswm_geoda,
state_geodata_cs["tourism_gdp"]
)
state_geodata_cs$cluster_tourism <- as.factor(
lisa_tourism$GetClusterIndicators()
)
levels(state_geodata_cs$cluster_tourism) <- lisa_tourism$GetLabels()
ggplot(state_geodata_cs) +
geom_sf(aes(fill = cluster_tourism), color = "white", linewidth = 0.2) +
labs(
title = "Clusters espaciales del PIB turistico",
subtitle = paste("Year", latest_year),
fill = "Tipo de cluster"
) +
theme_minimal()Despues del analisis exploratorio, se estiman algunos modelos econometricos para evaluar la relacion entre el PIB turistico y las variables que mostraron mayor correlacion durante el EDA previo.
Las variables utilizadas en los modelos son:
real_wage)pop_density)college_education)ratio_public_investment)tourism_gdp_lag1)Primero se prepara una base limpia para la estimacion de los modelos.
model_vars <- c(
"tourism_gdp",
"real_wage",
"pop_density",
"college_education",
"ratio_public_investment",
"tourism_gdp_lag1"
)
cs_model <- state_geodata_cs %>%
st_drop_geometry() %>%
select(all_of(model_vars)) %>%
na.omit()
nrow(cs_model)[1] 32
Se estima primero una regresion lineal tradicional como punto de referencia.
tourism_formula <- tourism_gdp ~ real_wage +
pop_density +
college_education +
ratio_public_investment +
tourism_gdp_lag1
model_ols <- lm(tourism_formula, data = cs_model)
summary(model_ols)
Call:
lm(formula = tourism_formula, data = cs_model)
Residuals:
Min 1Q Median 3Q Max
-11366 -2975 -1397 3595 10565
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -5.241e+03 9.197e+03 -0.570 0.573681
real_wage 1.538e+01 2.655e+01 0.579 0.567276
pop_density 6.498e+00 1.598e+00 4.067 0.000393 ***
college_education -3.703e+03 2.209e+04 -0.168 0.868198
ratio_public_investment 2.203e+05 8.009e+04 2.751 0.010683 *
tourism_gdp_lag1 1.085e+00 2.774e-02 39.129 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 5250 on 26 degrees of freedom
Multiple R-squared: 0.9955, Adjusted R-squared: 0.9946
F-statistic: 1144 on 5 and 26 DF, p-value: < 2.2e-16
[1] 646.3853
Este modelo incorpora dependencia espacial directamente en la variable dependiente.
model_sar <- lagsarlm(
tourism_formula,
data = cs_model,
listw = sswm,
zero.policy = TRUE
)
summary(model_sar)
Call:lagsarlm(formula = tourism_formula, data = cs_model, listw = sswm,
zero.policy = TRUE)
Residuals:
Min 1Q Median 3Q Max
-11876.4 -3155.7 -1291.7 3104.6 11203.1
Type: lag
Coefficients: (numerical Hessian approximate standard errors)
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.2152e+03 8.5978e+03 -0.3740 0.70844
real_wage 1.4209e+01 2.3780e+01 0.5975 0.55015
pop_density 6.8804e+00 1.5175e+00 4.5341 5.786e-06
college_education -3.5047e+03 2.0019e+04 -0.1751 0.86102
ratio_public_investment 2.1192e+05 7.2531e+04 2.9218 0.00348
tourism_gdp_lag1 1.0809e+00 2.5562e-02 42.2852 < 2.2e-16
Rho: -0.024572, LR test value: 0.54477, p-value: 0.46046
Approximate (numerical Hessian) standard error: 0.033146
z-value: -0.74132, p-value: 0.4585
Wald statistic: 0.54956, p-value: 0.4585
Log likelihood: -315.9203 for lag model
ML residual variance (sigma squared): 22010000, (sigma: 4691.4)
Number of observations: 32
Number of parameters estimated: 8
AIC: 647.84, (AIC for lm: 646.39)
En este caso la dependencia espacial se modela en el termino de error.
model_sem <- errorsarlm(
tourism_formula,
data = cs_model,
listw = sswm,
zero.policy = TRUE
)
summary(model_sem)
Call:errorsarlm(formula = tourism_formula, data = cs_model, listw = sswm,
zero.policy = TRUE)
Residuals:
Min 1Q Median 3Q Max
-11380.3 -3022.4 -1372.5 3475.8 9827.5
Type: error
Coefficients: (asymptotic standard errors)
Estimate Std. Error z value Pr(>|z|)
(Intercept) -5.4475e+03 7.8915e+03 -0.6903 0.490004
real_wage 1.1627e+01 2.3219e+01 0.5008 0.616539
pop_density 6.0754e+00 1.4454e+00 4.2033 2.631e-05
college_education 1.5415e+03 1.8842e+04 0.0818 0.934795
ratio_public_investment 2.2611e+05 7.1793e+04 3.1495 0.001636
tourism_gdp_lag1 1.0881e+00 2.5558e-02 42.5758 < 2.2e-16
Lambda: -0.16374, LR test value: 0.1588, p-value: 0.69026
Approximate (numerical Hessian) standard error: 0.43539
z-value: -0.37607, p-value: 0.70686
Wald statistic: 0.14143, p-value: 0.70686
Log likelihood: -316.1132 for error model
ML residual variance (sigma squared): 22133000, (sigma: 4704.6)
Number of observations: 32
Number of parameters estimated: 8
AIC: 648.23, (AIC for lm: 646.39)
Se calcula el promedio ponderado de los valores de los estados vecinos.
state_geodata_cs$sp_lag_tourism <- lag.listw(
sswm,
state_geodata_cs$tourism_gdp,
zero.policy = TRUE
)Finalmente se comparan los resultados de los diferentes modelos.
stargazer(
model_ols,
model_sar,
model_sem,
type = "text",
title = "Comparacion de modelos espaciales"
)
Comparacion de modelos espaciales
===============================================================================
Dependent variable:
-------------------------------------------------------
tourism_gdp
OLS spatial spatial
autoregressive error
(1) (2) (3)
-------------------------------------------------------------------------------
real_wage 15.384 14.209 11.627
(26.550) (23.780) (23.219)
pop_density 6.498*** 6.880*** 6.075***
(1.598) (1.518) (1.445)
college_education -3,702.823 -3,504.738 1,541.527
(22,093.800) (20,018.630) (18,841.860)
ratio_public_investment 220,298.300** 211,920.400*** 226,110.000***
(80,088.990) (72,530.850) (71,793.280)
tourism_gdp_lag1 1.086*** 1.081*** 1.088***
(0.028) (0.026) (0.026)
Constant -5,240.656 -3,215.200 -5,447.496
(9,196.790) (8,597.814) (7,891.456)
-------------------------------------------------------------------------------
Observations 32 32 32
R2 0.995
Adjusted R2 0.995
Log Likelihood -315.920 -316.113
sigma2 22,009,558.000 22,132,962.000
Akaike Inf. Crit. 647.841 648.226
Residual Std. Error 5,249.569 (df = 26)
F Statistic 1,144.489*** (df = 5; 26)
Wald Test (df = 1) 0.550 0.141
LR Test (df = 1) 0.545 0.159
===============================================================================
Note: *p<0.1; **p<0.05; ***p<0.01
El indice de Moran permite evaluar si valores similares tienden a agruparse en el espacio.
Moran I test under randomisation
data: state_geodata_cs$tourism_gdp
weights: sswm
Moran I statistic standard deviate = 0.38237, p-value = 0.3511
alternative hypothesis: greater
sample estimates:
Moran I statistic Expectation Variance
0.006512234 -0.032258065 0.010281098
tmap_arrange(
make_map(state_geodata_cs,"tourism_gdp","Blues","PIB turistico","PIB turistico"),
make_map(state_geodata_cs,"sp_lag_tourism","Blues","Rezago espacial","Rezago espacial del PIB turistico"),
ncol = 2
)El analisis espacial permite explorar si la actividad turistica presenta patrones segun su ubicacion.
Los mapas muestran diferencias claras en la distribucion del PIB turistico, con algunos estados concentrando una mayor actividad economica asociada al turismo.
Los resultados del analisis indican que tres variables presentan una relacion significativa con el PIB turistico: la densidad poblacional, la inversion publica relativa y el nivel de actividad turistica del periodo anterior. En particular, la variable rezagada del PIB turistico muestra un efecto muy fuerte, lo que sugiere que la actividad turistica tiende a persistir en el tiempo dentro de cada estado.
En contraste, variables como el salario real y el nivel de educacion superior no resultan estadisticamente significativas en los modelos estimados.
La comparacion entre el modelo OLS y los modelos espaciales (SAR y SEM) muestra que la inclusion de efectos espaciales no necesariamente mejora de forma sustancial el ajuste del modelo. Ademas, la prueba global de autocorrelacion espacial de Moran no resulta significativa, lo que sugiere que no existe una dependencia espacial fuerte en la distribucion del PIB turistico entre estados.
Dicho esto, el modelo SAR si mostró un un error medio más bajo (RMSE) que el resto de modelos estimados en este sprint. Comparados con el primer sprint, los modelos de corte transversal mostraron una mejor generalización, pues el RMSE de los modelos de la primera fase superaron en cifra los siete mil, con excepción del modelo de XGBOOST, que sigue teniendo el mejor desempeño general en cuanto a predicción.
En conjunto, los resultados sugieren que las diferencias en la actividad turistica entre estados estan mas asociadas a caracteristicas economicas y estructurales internas que a efectos de interaccion espacial entre entidades vecinas.