Introducción

La econometría espacial, parte fundamental de mi investigación, brinda un enfoque integral para comprender las dinámicas económicas y sociales en un contexto geográfico. En contraste con la econometría clásica, que asume la independencia entre observaciones, la econometría espacial reconoce la interdependencia espacial entre unidades geográficas, añadiendo una dimensión esencial para entender las relaciones económicas.

Mi investigación actual se enfoca en el estado de Jalisco, México, donde analizaré la autocorrelación espacial en los niveles de pobreza en los municipios. Este análisis busca confirmar patrones espaciales en la distribución de la pobreza utilizando herramientas como el test de Moran global y local, así como el índice de Geary, para cuantificar y explorar la magnitud y dirección de la autocorrelación.

El test de Moran global evaluará la presencia de autocorrelación espacial en el conjunto de datos, proporcionando una visión general de la distribución espacial de la pobreza en el estado. El test de Moran local identificará patrones específicos en municipios individuales, resaltando áreas con características particulares de pobreza y revelando posibles áreas de enfoque para políticas específicas.

Datos

Para el analisis utilizaremos los siguientes conjuntos de datos:

  1. Datos de Pobreza y variables Pobreza Jalisco, IIEG
  2. Archivo Shapefile Datos Jalisco

Librerias a utilizar

library(geostan) library(spdep) library(gstat) library(sp) library(tidyverse) library(spatial) library(spatialreg) library(splm) library(sf) library(broom) library(cowplot) library(extrafont) library(dplyr) library(ggplot2)

Preparacion de datos

Iniciare preparando el working enviroment

setwd("D:/Curso Econometria y ML/Modulo Econometria Espacial/Proyecto final")

Carga de mapa

Jal<- read_sf("Limites Jalisco/LimiteMunicipal_MGJ2012_modificadoDecreto26837.shp")

Transformamos a un objeto espacial

Jal_sfd<-as(Jal,"Spatial")

Cargar Datos

A continuacion cargamos los datos obtenidos de IIEG

Pobreza <- read.csv("pobrezapormun2023.csv")

Para poder tener un entendimiento de las variables que se usaran vamos a explorar el dataset

colnames(Pobreza)
##  [1] "Clave.de.municipio"                                      
##  [2] "Municipio"                                               
##  [3] "Poblacion.total"                                         
##  [4] "Porcentaje.2020"                                         
##  [5] "Personas.en.probreza"                                    
##  [6] "Personas.en.pobreza.extrema"                             
##  [7] "Vulnerables.carencia.social"                             
##  [8] "Vulnerables.por.ingreso"                                 
##  [9] "Rezago.educativo"                                        
## [10] "Carencia.en.servicios.de.salud"                          
## [11] "Carencia.por.seguridad.social"                           
## [12] "Carencia.por.calidad.y.espacio.en.la.vivienda"           
## [13] "Carencia.por.acceso.a.los.servicios.basico.en.la.vivenda"
## [14] "Carencia.por.acceso.a.la.alimentacion"

Y ahora un resumen de los datos

summary(Pobreza)
##  Clave.de.municipio  Municipio         Poblacion.total    Porcentaje.2020
##  Min.   :  1        Length:125         Length:125         Min.   :17.4   
##  1st Qu.: 32        Class :character   Class :character   1st Qu.:35.1   
##  Median : 63        Mode  :character   Mode  :character   Median :39.9   
##  Mean   : 63                                              Mean   :40.7   
##  3rd Qu.: 94                                              3rd Qu.:45.3   
##  Max.   :125                                              Max.   :80.1   
##  Personas.en.probreza Personas.en.pobreza.extrema Vulnerables.carencia.social
##  Min.   :   482       Min.   :   36               Min.   :   756             
##  1st Qu.:  3218       1st Qu.:  356               1st Qu.:  2956             
##  Median :  6758       Median :  774               Median :  6969             
##  Mean   : 21865       Mean   : 2332               Mean   : 20903             
##  3rd Qu.: 14387       3rd Qu.: 1888               3rd Qu.: 13490             
##  Max.   :387944       Max.   :39841               Max.   :459843             
##  Vulnerables.por.ingreso Rezago.educativo Carencia.en.servicios.de.salud
##  Min.   :     8          Min.   :   502   Min.   :   242                
##  1st Qu.:   161          1st Qu.:  1764   1st Qu.:  1434                
##  Median :   494          Median :  3952   Median :  5099                
##  Mean   :  6231          Mean   : 10306   Mean   : 21531                
##  3rd Qu.:  2025          3rd Qu.:  8196   3rd Qu.: 12837                
##  Max.   :156389          Max.   :160754   Max.   :498124                
##  Carencia.por.seguridad.social Carencia.por.calidad.y.espacio.en.la.vivienda
##  Min.   :  1493                Min.   :   65                                
##  1st Qu.:  5218                1st Qu.:  504                                
##  Median : 12025                Median : 1165                                
##  Mean   : 33498                Mean   : 4225                                
##  3rd Qu.: 21996                3rd Qu.: 2899                                
##  Max.   :694929                Max.   :84547                                
##  Carencia.por.acceso.a.los.servicios.basico.en.la.vivenda
##  Min.   :  151                                           
##  1st Qu.:  885                                           
##  Median : 2170                                           
##  Mean   : 3612                                           
##  3rd Qu.: 4180                                           
##  Max.   :33787                                           
##  Carencia.por.acceso.a.la.alimentacion
##  Min.   :    93                       
##  1st Qu.:   870                       
##  Median :  2124                       
##  Mean   :  9584                       
##  3rd Qu.:  5737                       
##  Max.   :182639

Georeferencia de datos (vamos a unir las tablas para que la tabla JAL, contenga los datos de pobreza de csv)

  Jal<- Jal %>%
    inner_join(Pobreza,by=c("CLAVE"="Clave.de.municipio")) 

Mapa Tematico con variable continua

Jal %>%
  ggplot() +
  geom_sf(aes(fill =Porcentaje.2020)) +
  scale_fill_gradient(low = "lightgreen", high = "darkgreen") +
  labs(
    title = "Mapa Tematico de Jalisco ",
    subtitle = "por entidad federativa 2020, personas en pobreza",
    caption = "Elaborado por Diego Gonzalez",
    fill = "Personas en Pobreza"
  ) +
  theme(
    legend.position = "bottom",
    plot.caption = element_text(hjust = 0)
  )

Mapa tematico con calsificación

Para poder visualizar de una manera mas sencilla dividiremos en quintiles la separacion de datos de pobreza

Quintiles<-quantile(Jal$Porcentaje.2020, c(0,0.2,0.4,0.6,0.8,1))


Jal <- Jal %>% 
  mutate(Pobreza_Quintil=cut(Porcentaje.2020,
                             breaks=Quintiles,
                             dig.lab=5))

De igual manera realizaremos el grafico para visualizar la clasificacion de personas en pobreza por quintiles

*NA es causado por falta de datos en municipio de Atenguillo

Matriz de pesos espaciales

W_Jal<- nb2listw(poly2nb(Jal_sfd,
                        row.names = Jal_sfd$CLAVE,
                        queen=T),
                style="W",
                zero.policy=T)  

Pruebas de autocorrelacion espacial

Globales–

Indice de moran—

IMG<-moran.test(Jal$Personas.en.probreza,
                listw=W_Jal,
                zero.policy=T)
IMG
## 
##  Moran I test under randomisation
## 
## data:  Jal$Personas.en.probreza  
## weights: W_Jal    
## 
## Moran I statistic standard deviate = 7.988, p-value = 6.858e-16
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic       Expectation          Variance 
##       0.422677571      -0.008064516       0.002907763

Indice Geary—

IGG <- geary.test(Jal$Personas.en.probreza,
                  listw=W_Jal,
                  zero.policy = T)

IGG
## 
##  Geary C test under randomisation
## 
## data:  Jal$Personas.en.probreza 
## weights: W_Jal 
## 
## Geary C statistic standard deviate = 2.8584, p-value = 0.002129
## alternative hypothesis: Expectation greater than statistic
## sample estimates:
## Geary C statistic       Expectation          Variance 
##        0.70400424        1.00000000        0.01072321

Hallazgos

Centrado en la variable Personas en Pobreza y empleando tanto la prueba de Moran I como el Test de Geary C.

Prueba de Moran I:

El estadístico de Moran I standard deviate fue notablemente alto, registrando 7.988, con un p-value prácticamente nulo (6.858e-16). Estos resultados respaldan fuertemente la presencia de autocorrelación espacial significativa. Rechacé la hipótesis nula de ausencia de autocorrelación espacial, indicando patrones geográficos relevantes en la distribución de la pobreza.

Test de Geary C:

El estadístico standard deviate de Geary C fue de 2.8584, y el p-value fue 0.002129. Este resultado, al ser menor que el nivel de significancia, llevó al rechazo de la hipótesis nula. La autocorrelación espacial es inconsistente con la expectativa bajo un patrón aleatorio, indicando una distribución no aleatoria de la pobreza en la región. Estos hallazgos económicos destacan la existencia de patrones espaciales significativos en la pobreza de Jalisco

Grafico de Moran (Extra)

Declaramos y estandarizamos la variable

variable<-Jal$Porcentaje.2020

variable_std<- ((variable-mean(variable))/sd(variable))

con la variable estandarizada y los labels de la matriz de peso vamos a realizar la prueba de moran

Jal_sf <- st_as_sf(Jal)

# Agrega la variable estandarizada al conjunto de datos espaciales
Jal_sf$variable_std <- variable_std

# Crea el gráfico de Moran
mp <- moran.plot(Jal_sf$variable_std, W_Jal, 
                 labels = as.character(Jal_sf$CLAVE),
                 pch = 19, quiet = FALSE, plot = FALSE)
## Potentially influential observations of
##   lm(formula = wx ~ x) :
## 
##     dfb.1_ dfb.x dffit   cov.r   cook.d hat    
## 10  -0.02  -0.08 -0.08    1.12_*  0.00   0.09_*
## 12   0.08  -0.18  0.20    1.06_*  0.02   0.05_*
## 31  -0.04  -0.09 -0.10    1.08_*  0.00   0.06_*
## 32  -0.07  -0.19 -0.21    1.08_*  0.02   0.07_*
## 40  -0.11  -0.26 -0.28    1.05    0.04   0.05_*
## 41   0.20   0.04  0.21    0.94_*  0.02   0.01  
## 42   0.65   0.67  0.94_*  0.51_*  0.31   0.02  
## 76   0.26  -0.15  0.30    0.90_*  0.04   0.01  
## 95  -0.01   0.01 -0.01    1.06_*  0.00   0.04  
## 115  0.26   0.22  0.34    0.91_*  0.05   0.01  
## 61   0.03   0.12  0.12    1.17_*  0.01   0.13_*
# Visualiza el gráfico de Moran
plot(mp)

Codigo con ggplot para generar la grafica de moran

if(require(ggplot2,quietly=T)){
  xname<-attr(mp,"xname")
  ggplot(mp,aes(x=x,y=wx))+
    geom_point(colour="Darkred")+
    geom_smooth(formula=y~x,method="lm")+
    geom_hline(yintercept=mean(mp$wx),lty=2)+
    geom_vline(xintercept=mean(mp$x),lty=2)+
    geom_point(data=mp[mp$is_inf,],aes(x=x,y=wx),shape=9)+
    geom_text(data=mp[mp$is_inf,],aes(x=x,y=wx,label=labels,vjust=1.5))+
    labs(x="Pobreza std",
         y=paste0("Rezago espacial: ", "Pobreza std."),
         title="Gráfico de Moran",
         subtitle="Variable:Poreza por entidad federativa",
         caption="Elaboracion por Diego Gonzalez Farias con datos del INEGI Y GOB. DE JAL.",
         theme(legen.position="bottom",
               plot.background = element_blank(),axis.ticks=element_line(colour=alpha("grey",0.4))))
}

# Estimación de modelos econométricos no espaciales y espaciales–

Especificación

reg<-log(Personas.en.probreza)~log(Vulnerables.carencia.social)+log(Rezago.educativo)

MCO

MCO<-lm(reg,data=Jal)

summary(MCO)
## 
## Call:
## lm(formula = reg, data = Jal)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.80868 -0.17403  0.02678  0.19875  0.58056 
## 
## Coefficients:
##                                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                      -0.006109   0.176718  -0.035    0.972    
## log(Vulnerables.carencia.social)  0.075301   0.080614   0.934    0.352    
## log(Rezago.educativo)             0.988799   0.083123  11.896   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2603 on 122 degrees of freedom
## Multiple R-squared:  0.9577, Adjusted R-squared:  0.957 
## F-statistic:  1380 on 2 and 122 DF,  p-value: < 2.2e-16

Pruebas de autocorrelación espacial

moran.test(MCO$residuals,listw=W_Jal,zero.policy = T)
## 
##  Moran I test under randomisation
## 
## data:  MCO$residuals  
## weights: W_Jal    
## 
## Moran I statistic standard deviate = 5.2304, p-value = 8.457e-08
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic       Expectation          Variance 
##       0.304991938      -0.008064516       0.003582415
lmLMtext<-lm.LMtests(MCO,
                     W_Jal,
                     test=c("LMerr","LMlag",
                            "RLMerr","RLMlag",
                            "SARMA"))
lmLMtext
## 
##  Lagrange multiplier diagnostics for spatial dependence
## 
## data:  
## model: lm(formula = reg, data = Jal)
## weights: W_Jal
## 
## LMerr = 24.997, df = 1, p-value = 5.743e-07
## 
## 
##  Lagrange multiplier diagnostics for spatial dependence
## 
## data:  
## model: lm(formula = reg, data = Jal)
## weights: W_Jal
## 
## LMlag = 0.25097, df = 1, p-value = 0.6164
## 
## 
##  Lagrange multiplier diagnostics for spatial dependence
## 
## data:  
## model: lm(formula = reg, data = Jal)
## weights: W_Jal
## 
## RLMerr = 27.655, df = 1, p-value = 1.45e-07
## 
## 
##  Lagrange multiplier diagnostics for spatial dependence
## 
## data:  
## model: lm(formula = reg, data = Jal)
## weights: W_Jal
## 
## RLMlag = 2.9094, df = 1, p-value = 0.08807
## 
## 
##  Lagrange multiplier diagnostics for spatial dependence
## 
## data:  
## model: lm(formula = reg, data = Jal)
## weights: W_Jal
## 
## SARMA = 27.906, df = 2, p-value = 8.715e-07