library(readxl)
library(dplyr)
library(ggplot2)
library(janitor)
library(qqplotr)
library(car)
library(sf)
library(digest)
library(viridisLite)
library(viridis)
library(rgeoda)
library(gridExtra)
library(dlookr)
library(spdep)
library(sp)
library(tidyverse)
library(sf)
library(corrplot)
library(spatialreg)
library(stargazer)
library(knitr)
library(tigris)df <- read_excel("/Users/hectordelagarzatrevino/Library/CloudStorage/GoogleDrive-hectordelagarzat@outlook.com/My Drive/LIT/8. Octavo semestre/Planeación estratégica basada en analítica prescriptiva/Modulo 1/mx_spatial_data/tourism_state_data.xlsx")
cuartos <- read_excel("/Users/hectordelagarzatrevino/Library/CloudStorage/GoogleDrive-hectordelagarzat@outlook.com/My Drive/LIT/8. Octavo semestre/Planeación estratégica basada en analítica prescriptiva/Modulo 1/mx_spatial_data/CuartosOcupadosNacional.xlsx")
mxstates <- sf::read_sf("/Users/hectordelagarzatrevino/Library/CloudStorage/GoogleDrive-hectordelagarzat@outlook.com/My Drive/LIT/8. Octavo semestre/Planeación estratégica basada en analítica prescriptiva/Modulo 1/mx_spatial_data/mx_maps/mx_states/mexlatlong.shp")El análisis espacial de datos se relaciona con “Location Intelligence” porque permite visualizar, analizar e interpretar datos geográficos para tomar decisiones estratégicas. “Location Intelligence” utiliza la ubicación como eje central para identificar patrones, tendencias y relaciones en los datos, facilitando decisiones más informadas en áreas como selección de ubicaciones, logística, marketing geográfico y gestión de riesgos.
1.- Consideración de la ubicación:
No espacial: No toma en cuenta la ubicación geográfica de las observaciones.
Espacial: Incorpora la dimensión espacial, considerando que las observaciones cercanas pueden estar relacionadas.
2.- Precisión del modelo:
No espacial: Puede producir estimaciones sesgadas si existe autocorrelación espacial no considerada.
Espacial: Mejora la precisión al ajustar por dependencias espaciales.
3.- Aplicaciones típicas:
No espacial: Se usa en contextos donde la ubicación no es un factor relevante.
Espacial: Es clave en estudios de geografía, bienes raíces, salud pública, criminología, entre otros, donde la ubicación afecta el fenómeno estudiado.
## state year state_id tourism_gdp
## Length:544 Min. :2006 Min. : 888 Min. : 6240
## Class :character 1st Qu.:2010 1st Qu.:1047 1st Qu.: 22685
## Mode :character Median :2014 Median :1081 Median : 32482
## Mean :2014 Mean :1219 Mean : 56520
## 3rd Qu.:2018 3rd Qu.:1118 3rd Qu.: 59014
## Max. :2022 Max. :2357 Max. :472642
## crime_rate college_education unemployment employment
## Min. : 1.710 Min. :0.08751 Min. :0.01000 Min. :0.8900
## 1st Qu.: 8.107 1st Qu.:0.16703 1st Qu.:0.03000 1st Qu.:0.9500
## Median : 13.880 Median :0.20304 Median :0.04000 Median :0.9700
## Mean : 22.163 Mean :0.21106 Mean :0.04251 Mean :0.9639
## 3rd Qu.: 26.314 3rd Qu.:0.25085 3rd Qu.:0.05000 3rd Qu.:0.9754
## Max. :181.510 Max. :0.43761 Max. :0.10000 Max. :0.9928
## business_activity real_wage pop_density good_governance
## Min. :-2.980 Min. :239.3 Min. : 7.74 Min. : 0.000
## 1st Qu.:-2.260 1st Qu.:282.5 1st Qu.: 39.56 1st Qu.: 0.180
## Median :-2.070 Median :306.2 Median : 61.77 Median : 0.500
## Mean :-1.757 Mean :314.9 Mean : 299.46 Mean : 2.362
## 3rd Qu.:-1.768 3rd Qu.:335.4 3rd Qu.: 150.46 3rd Qu.: 1.350
## Max. : 2.470 Max. :481.7 Max. :6211.45 Max. :200.020
## ratio_public_investment exchange_rate inpc border_distance
## Min. :0.000000 Min. :10.85 Min. : 62.69 Min. : 8.83
## 1st Qu.:0.000000 1st Qu.:12.87 1st Qu.: 74.93 1st Qu.: 613.26
## Median :0.000000 Median :14.51 Median : 87.19 Median : 751.64
## Mean :0.005736 Mean :15.91 Mean : 89.08 Mean : 704.92
## 3rd Qu.:0.010000 3rd Qu.:19.47 3rd Qu.:103.02 3rd Qu.: 875.76
## Max. :0.067644 Max. :20.52 Max. :126.48 Max. :1252.66
## region...17 region...18
## Length:544 Min. :1.000
## Class :character 1st Qu.:2.000
## Mode :character Median :3.000
## Mean :3.188
## 3rd Qu.:4.250
## Max. :5.000
## Estado Enero Febrero Marzo
## Length:32 Min. : 9488 Min. : 11931 Min. : 17323
## Class :character 1st Qu.: 94088 1st Qu.:100800 1st Qu.:117922
## Mode :character Median :141658 Median :136658 Median :171398
## Mean :167344 Mean :172473 Mean :217102
## 3rd Qu.:206742 3rd Qu.:214843 3rd Qu.:296955
## Max. :520668 Max. :554547 Max. :657140
## Abril Mayo Junio Julio
## Min. : 16326 Min. : 14794 Min. : 16154 Min. : 16103
## 1st Qu.:123173 1st Qu.:118696 1st Qu.:116242 1st Qu.:134529
## Median :194593 Median :187047 Median :188508 Median :193337
## Mean :238589 Mean :236902 Mean :228647 Mean :259881
## 3rd Qu.:309610 3rd Qu.:297516 3rd Qu.:300384 3rd Qu.:319914
## Max. :736922 Max. :768455 Max. :698451 Max. :846138
## Agosto Septiembre Octubre Noviembre
## Min. : 17398 Min. : 13704 Min. : 18872 Min. : 19209
## 1st Qu.:123890 1st Qu.:108678 1st Qu.:130094 1st Qu.:127303
## Median :193810 Median :181449 Median :193836 Median :198763
## Mean :258068 Mean :227581 Mean :249168 Mean :250624
## 3rd Qu.:363711 3rd Qu.:293988 3rd Qu.:316960 3rd Qu.:314358
## Max. :788235 Max. :680943 Max. :751194 Max. :795454
## Diciembre Total 2022
## Min. : 15989 Min. : 187290
## 1st Qu.:134473 1st Qu.:1397378
## Median :201042 Median :2103677
## Mean :241299 Mean :2747678
## 3rd Qu.:290378 3rd Qu.:3365748
## Max. :729000 Max. :8507081
# Une por nombre del estado
df_mapa <- merge(mxstates, df, by.x = "ADMIN_NAME", by.y = "state")
# Asegurarse de que no hay NAs
df_mapa <- df_mapa %>%
filter(!is.na(tourism_gdp) & !is.na(college_education) &
!is.na(real_wage) & !is.na(ratio_public_investment))
# Ahora genera vecinos desde df_mapa
vecinos <- poly2nb(df_mapa)
pesos <- nb2listw(vecinos, style = "W", zero.policy = TRUE)modelo_no_espacial <- lm(tourism_gdp ~ college_education + unemployment +
business_activity + real_wage + pop_density +
good_governance + ratio_public_investment,
data = df_mapa)
summary(modelo_no_espacial)##
## Call:
## lm(formula = tourism_gdp ~ college_education + unemployment +
## business_activity + real_wage + pop_density + good_governance +
## ratio_public_investment, data = df_mapa)
##
## Residuals:
## Min 1Q Median 3Q Max
## -73361 -20633 -4589 9708 155022
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 42129.50 17428.90 2.417 0.015983 *
## college_education -88877.32 31480.40 -2.823 0.004936 **
## unemployment -42054.73 114986.44 -0.366 0.714711
## business_activity 3765.14 1790.55 2.103 0.035966 *
## real_wage 58.39 47.13 1.239 0.215935
## pop_density 136.18 11.19 12.168 < 2e-16 ***
## good_governance 623.19 152.02 4.099 4.81e-05 ***
## ratio_public_investment -802665.03 223725.29 -3.588 0.000365 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 34900 on 519 degrees of freedom
## Multiple R-squared: 0.2638, Adjusted R-squared: 0.2538
## F-statistic: 26.56 on 7 and 519 DF, p-value: < 2.2e-16
Sí se justifica el uso de un análisis de regresión espacial, ya que en la Actividad 1 identificamos patrones de autocorrelación espacial en las variables asociadas al turismo en los estados de México. A través del análisis ESDA, se observó que ciertos estados presentan valores similares de indicadores turísticos en regiones geográficamente cercanas, lo que sugiere dependencia espacial.
# Modelo SAR (Spatial Autoregressive Model)
modelo_sar <- lagsarlm(tourism_gdp ~ college_education + unemployment +
business_activity + real_wage + pop_density +
good_governance + ratio_public_investment,
data = df_mapa, listw = pesos, zero.policy = TRUE)## Warning in lagsarlm(tourism_gdp ~ college_education + unemployment + business_activity + : inversion of asymptotic covariance matrix failed for tol.solve = 2.22044604925031e-16
## reciprocal condition number = 1.80794e-19 - using numerical Hessian.
##
## Call:lagsarlm(formula = tourism_gdp ~ college_education + unemployment +
## business_activity + real_wage + pop_density + good_governance +
## ratio_public_investment, data = df_mapa, listw = pesos, zero.policy = TRUE)
##
## Residuals:
## Min 1Q Median 3Q Max
## -66313.6 -20605.1 -6202.7 10375.3 159061.7
##
## Type: lag
## Coefficients: (numerical Hessian approximate standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 57578.165 17132.006 3.3609 0.0007770
## college_education -110903.787 31217.734 -3.5526 0.0003815
## unemployment -105596.742 111112.759 -0.9504 0.3419311
## business_activity 2708.939 1751.422 1.5467 0.1219335
## real_wage 88.345 45.697 1.9333 0.0532017
## pop_density 150.448 11.602 12.9677 < 2.2e-16
## good_governance 595.474 148.707 4.0043 6.219e-05
## ratio_public_investment -789530.400 218376.984 -3.6154 0.0002998
##
## Rho: -0.42773, LR test value: 13.565, p-value: 0.00023049
## Approximate (numerical Hessian) standard error: 0.11552
## z-value: -3.7025, p-value: 0.00021348
## Wald statistic: 13.709, p-value: 0.00021348
##
## Log likelihood: -6249.44 for lag model
## ML residual variance (sigma squared): 1166500000, (sigma: 34155)
## Number of observations: 527
## Number of parameters estimated: 10
## AIC: 12519, (AIC for lm: 12530)
# Modelo SEM (Spatial Error Model)
modelo_sem <- errorsarlm(tourism_gdp ~ college_education + unemployment +
business_activity + real_wage + pop_density +
good_governance + ratio_public_investment,
data = df_mapa, listw = pesos, zero.policy = TRUE)## Warning in errorsarlm(tourism_gdp ~ college_education + unemployment + business_activity + : inversion of asymptotic covariance matrix failed for tol.solve = 2.22044604925031e-16
## reciprocal condition number = 5.07549e-19 - using numerical Hessian.
##
## Call:errorsarlm(formula = tourism_gdp ~ college_education + unemployment +
## business_activity + real_wage + pop_density + good_governance +
## ratio_public_investment, data = df_mapa, listw = pesos, zero.policy = TRUE)
##
## Residuals:
## Min 1Q Median 3Q Max
## -74261.2 -18835.0 -1775.8 14394.2 152735.8
##
## Type: error
## Coefficients: (asymptotic standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 9723.616 22269.545 0.4366 0.6623776
## college_education -106146.661 34109.658 -3.1119 0.0018587
## unemployment 54724.716 119933.967 0.4563 0.6481812
## business_activity 3647.649 1989.041 1.8339 0.0666728
## real_wage 40.376 48.866 0.8263 0.4086573
## pop_density 228.671 14.502 15.7682 < 2.2e-16
## good_governance 550.768 145.961 3.7734 0.0001610
## ratio_public_investment -755364.312 216789.881 -3.4843 0.0004934
##
## Lambda: 0.89677, LR test value: 21.009, p-value: 4.5712e-06
## Approximate (numerical Hessian) standard error: 0.069802
## z-value: 12.847, p-value: < 2.22e-16
## Wald statistic: 165.05, p-value: < 2.22e-16
##
## Log likelihood: -6245.718 for error model
## ML residual variance (sigma squared): 1127100000, (sigma: 33573)
## Number of observations: 527
## Number of parameters estimated: 10
## AIC: 12511, (AIC for lm: 12530)
# Modelo SDM (Spatial Durbin Model)
modelo_sdm <- lagsarlm(tourism_gdp ~ college_education + real_wage + ratio_public_investment,
data = df_mapa, listw = pesos, type = "mixed", zero.policy = TRUE)## Warning in lagsarlm(tourism_gdp ~ college_education + real_wage + ratio_public_investment, : inversion of asymptotic covariance matrix failed for tol.solve = 2.22044604925031e-16
## reciprocal condition number = 1.4683e-19 - using numerical Hessian.
##
## Call:lagsarlm(formula = tourism_gdp ~ college_education + real_wage +
## ratio_public_investment, data = df_mapa, listw = pesos, type = "mixed",
## zero.policy = TRUE)
##
## Residuals:
## Min 1Q Median 3Q Max
## -46997 -27203 -11636 11522 132700
##
## Type: mixed
## Coefficients: (numerical Hessian approximate standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -9360.832 50757.627 -0.1844 0.85368
## college_education 35675.148 36859.866 0.9679 0.33311
## real_wage 112.650 52.902 2.1294 0.03322
## ratio_public_investment -299970.753 246727.681 -1.2158 0.22406
## lag.college_education -402617.211 99502.009 -4.0463 5.203e-05
## lag.real_wage 349.858 144.217 2.4259 0.01527
## lag.ratio_public_investment -562161.955 1379808.258 -0.4074 0.68370
##
## Rho: -0.19577, LR test value: 2.1387, p-value: 0.14362
## Approximate (numerical Hessian) standard error: 0.13241
## z-value: -1.4785, p-value: 0.13928
## Wald statistic: 2.1859, p-value: 0.13928
##
## Log likelihood: -6316.406 for mixed model
## ML residual variance (sigma squared): 1506200000, (sigma: 38810)
## Number of observations: 527
## Number of parameters estimated: 9
## AIC: 12651, (AIC for lm: 12651)
# Calcular AIC y Moran's para residuos
model_a_aic <- AIC(modelo_no_espacial)
model_b_aic <- AIC(modelo_sar)
model_c_aic <- AIC(modelo_sem)
model_d_aic <- AIC(modelo_sdm)
# Moran's para residuos
moran_a <- moran.test(residuals(modelo_no_espacial), pesos)$estimate[1]
moran_b <- moran.test(residuals(modelo_sar), pesos)$estimate[1]
moran_c <- moran.test(residuals(modelo_sem), pesos)$estimate[1]
moran_d <- moran.test(residuals(modelo_sdm), pesos)$estimate[1]
# Crear tabla comparativa
comparison_table <- data.frame(
Modelo = c("OLS", "SAR", "SEM", "SDM"),
AIC = c(model_a_aic, model_b_aic, model_c_aic, model_d_aic),
Moran = c(moran_a, moran_b, moran_c, moran_d),
Significancia_Moran = c(
ifelse(moran.test(residuals(modelo_no_espacial), pesos)$p.value < 0.05, "Sí", "No"),
ifelse(moran.test(residuals(modelo_sar), pesos)$p.value < 0.05, "Sí", "No"),
ifelse(moran.test(residuals(modelo_sem), pesos)$p.value < 0.05, "Sí", "No"),
ifelse(moran.test(residuals(modelo_sdm), pesos)$p.value < 0.05, "Sí", "No")
)
)
kable(comparison_table, caption = "Comparación de Modelos")| Modelo | AIC | Moran | Significancia_Moran |
|---|---|---|---|
| OLS | 12530.44 | 0.0187173 | Sí |
| SAR | 12518.88 | 0.0776177 | Sí |
| SEM | 12511.44 | -0.0225213 | No |
| SDM | 12650.81 | 0.0130205 | Sí |
En la tabla esta mal debido a la estructura del código pero el que no tiene nada de significancia en su Moran es el modelo SAR ya que tiene un p-value mayor a 0.05 y los demas modelos tienen un valor menor al 0.05 lo que los hace altamente significativos.
library(randomForest)
set.seed(123)
modelo_rf <- randomForest(tourism_gdp ~ college_education + unemployment +
business_activity + real_wage + pop_density +
good_governance + ratio_public_investment,
data = df, importance = TRUE)
print(modelo_rf)##
## Call:
## randomForest(formula = tourism_gdp ~ college_education + unemployment + business_activity + real_wage + pop_density + good_governance + ratio_public_investment, data = df, importance = TRUE)
## Type of random forest: regression
## Number of trees: 500
## No. of variables tried at each split: 2
##
## Mean of squared residuals: 475480928
## % Var explained: 91.04
## %IncMSE IncNodePurity
## college_education 16.31199 3.446151e+11
## unemployment 11.19656 9.176842e+10
## business_activity 19.87893 1.188862e+11
## real_wage 23.44887 8.113962e+11
## pop_density 34.01223 1.272954e+12
## good_governance 17.09187 1.481531e+11
## ratio_public_investment 19.03220 6.376754e+10
library(Metrics)
# Predicciones
pred_no_espacial <- predict(modelo_no_espacial, df)
pred_rf <- predict(modelo_rf, df)
# RMSE
rmse_no_espacial <- rmse(df$tourism_gdp, pred_no_espacial)
rmse_rf <- rmse(df$tourism_gdp, pred_rf)
rmse_no_espacial## [1] 89338.12
## [1] 9938.704
1. Fomento de alianzas y promoción regional conjunta: - Dado que la regresión espacial (por ejemplo, el modelo SAR con su parámetro espacial negativo) evidencia que el turismo en un estado influye en sus estados vecinos, se recomienda diseñar estrategias de promoción conjunta y desarrollo de infraestructura compartida. Esto permitiría aprovechar economías de escala y reducir la competencia interna entre estados colindantes.
2. Focalización de inversiones en variables determinantes: - Orientar recursos hacia mejoras en gobernanza, calidad de servicios (reflejadas en mejores salarios y condiciones laborales) y en la optimización de la inversión pública puede potenciar la actividad turística. En regiones donde se observa alta densidad poblacional, reforzar los servicios turísticos y facilitar la conectividad podría generar un mayor atractivo para los visitantes.
3. Integración de la oferta hotelera a la estrategia turística: - Los datos del desempeño de la ocupación hotelera deben utilizarse para identificar cuellos de botella en la capacidad de absorción de turistas. La coordinación entre autoridades estatales y privados (por ejemplo, en la promoción de la ocupación en temporadas bajas o la mejora de servicios) se traduce en una estrategia integral para potenciar la actividad turística regional.