1. Brevemente, describir con sus propias palabras qué es un ESDA y cuál es su principal propósito en el proceso de analítica de datos.

El analisis exploratorio espacial de datos nos permite estudiar una agrupación de datos que cuenta con un componente de geolocalización. Es decir, que podemos analizar el comportamiento de las variables por “espacio” y así poder observar como se distribuyen y relacionan las variables;además, de las tendencias y patrones que se puedan encontrar.

“El análisis exploratorio de datos (EDA, Exploratory Data Analysis) se considera un instrumento indispensable al momento de realizar las primeras aproximaciones al estudio de la estructura de la información socio-espacial en una determinada área de estudio” (Buzai.GD, 2009)

Buzai, G. D,(2009). Análisis exploratorio de datos espaciales. Geografía y Sistemas de Información Geográfica, N° 1,(2009).

  1. Brevemente, describir con sus propias palabras el concepto de autocorrelación espacial así como 1-2 ejemplos relacionados con dicho concepto.

La autocorrelación espacial se permite analizar si lo que sucede en un lugar puede afectar lo que pasa en otro lugar cercano. Con esto se puede evaluar si las variables se agrupan por valores similares o diferentes.

“Si los valores altos de una localización están asociados con valores altos en los vecinos, la autocorrelación espacial es positiva siendo la situación opuesta la de autocorrelación espacial negativa.” (Cepeda y Velázquez, 2005).

Cargamos librerias

library(foreign)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(spdep)
## Warning: package 'spdep' was built under R version 4.3.3
## Loading required package: spData
## Warning: package 'spData' was built under R version 4.3.3
## To access larger datasets in this package, install the spDataLarge
## package with: `install.packages('spDataLarge',
## repos='https://nowosad.github.io/drat/', type='source')`
## Loading required package: sf
## Warning: package 'sf' was built under R version 4.3.3
## Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE
library(tigris)
## Warning: package 'tigris' was built under R version 4.3.3
## To enable caching of data, set `options(tigris_use_cache = TRUE)`
## in your R script or .Rprofile.
library(rgeoda)
## Warning: package 'rgeoda' was built under R version 4.3.3
## Loading required package: digest
## Warning: package 'digest' was built under R version 4.3.3
## 
## Attaching package: 'rgeoda'
## The following object is masked from 'package:spdep':
## 
##     skater
library(RColorBrewer)
library(viridis)
## Loading required package: viridisLite
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(tmap)
## 
## Attaching package: 'tmap'
## The following object is masked from 'package:datasets':
## 
##     rivers
library(sf)
library(sp)
## Warning: package 'sp' was built under R version 4.3.3
  1. ESDA Cargar archivos
library(readxl)
#setwd("C:/Users/52553/OneDrive/Escritorio/PlaneacionEst")
data <- read_xlsx("C:/Users/HP/OneDrive - FEMSA Comercio/Escritorio/Planeación estrategica/M1/Actividad 1/Act1/cross_sectional_dataset.xlsx")  

Estados

mx_state_map <- st_read("C:/Users/HP/OneDrive - FEMSA Comercio/Escritorio/Planeación estrategica/M1/Actividad 1/Ejemplo Clase/mx_maps/mx_states/mexlatlong.shp")
## Reading layer `mexlatlong' from data source 
##   `C:\Users\HP\OneDrive - FEMSA Comercio\Escritorio\Planeación estrategica\M1\Actividad 1\Ejemplo Clase\mx_maps\mx_states\mexlatlong.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 32 features and 19 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -118.4042 ymin: 14.55055 xmax: -86.73862 ymax: 32.71846
## Geodetic CRS:  WGS 84
mx_state_map <- read_sf("C:/Users/HP/OneDrive - FEMSA Comercio/Escritorio/Planeación estrategica/M1/Actividad 1/Ejemplo Clase/mx_maps/mx_states/mexlatlong.shp")

Municipios

mx_mpio_map <- st_read("C:/Users/HP/OneDrive - FEMSA Comercio/Escritorio/Planeación estrategica/M1/Actividad 1/Ejemplo Clase/mx_maps/mx_mpios/Mexican Municipalities.shp")
## Reading layer `Mexican Municipalities' from data source 
##   `C:\Users\HP\OneDrive - FEMSA Comercio\Escritorio\Planeación estrategica\M1\Actividad 1\Ejemplo Clase\mx_maps\mx_mpios\Mexican Municipalities.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 2456 features and 3 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -118.4076 ymin: 14.5321 xmax: -86.71041 ymax: 32.71865
## Geodetic CRS:  WGS 84
mx_mpio_map <- read_sf("C:/Users/HP/OneDrive - FEMSA Comercio/Escritorio/Planeación estrategica/M1/Actividad 1/Ejemplo Clase/mx_maps/mx_mpios/Mexican Municipalities.shp")

Homologamos el nombre de los estados para que se pueda realizar el merge de manera exitosa

data <- data %>%
  mutate(entidad = recode(entidad, "Coahuila de Zaragoza" = "Coahuila", "Nuevo León" = "Nuevo Leon", "Querétaro" = "Queretaro", "Michoacán de Ocampo" = "Michoacan", "Veracruz de Ignacio de la Llave" = "Veracruz", "Ciudad de México" = "Distrito Federal", "Yucatán" = "Yucatan", "San Luis Potosí" = "San Luis Potosi", "México" = "Mexico"))

La base de datos presenta NA’s y estos se sustituyen por la mediana de cada variable

sum(is.na(data))
## [1] 9
colSums(is.na(data)) 
##                clave_municipio                        entidad 
##                              0                              0 
##                           mpio              numero_hospitales 
##                              0                              0 
##                 poblacion_2022                     hogrem2015 
##                              0                              1 
##               hogremjefmuj2015                 popnoafmed2015 
##                              1                              1 
##                       gini2015                     popden2020 
##                              1                              1 
##                    crimen_2018                    crimen_2019 
##                              0                              0 
##             inclusion_fin_2019         porcentaje_pob_pobreza 
##                              0                              1 
##     porcentaje_pob_pobreza_ext porcentaje_pob_servicios_salud 
##                              1                              1 
##       porcentaje_pob_acceso_ss                pob_6-14_no_edu 
##                              1                              0 
##                  rezago_social                       grado_rs 
##                              0                              0 
##                       feb_2020                     march_2020 
##                              0                              0 
##                     april_2020                       may_2020 
##                              0                              0 
##                      june_2020                      july_2020 
##                              0                              0 
##                    august_2020                      sept_2020 
##                              0                              0 
##                       oct_2020                       nov_2020 
##                              0                              0 
##                       dic_2020                       jan_2021 
##                              0                              0 
##                       feb_2021                     march_2021 
##                              0                              0 
##                     april_2021                       may_2021 
##                              0                              0 
##                      june_2021                      july_2021 
##                              0                              0 
##                    august_2021                      sept_2021 
##                              0                              0 
##                       oct_2021                       nov_2021 
##                              0                              0 
##                       dic_2021                    total_casos 
##                              0                              0 
##                     tasa_covid 
##                              0
summary(data)
##  clave_municipio   entidad              mpio           numero_hospitales
##  Min.   : 1001   Length:2449        Length:2449        Min.   :   1.00  
##  1st Qu.:14083   Class :character   Class :character   1st Qu.:   3.00  
##  Median :20229   Mode  :character   Mode  :character   Median :   8.00  
##  Mean   :19368                                         Mean   :  47.34  
##  3rd Qu.:24032                                         3rd Qu.:  24.00  
##  Max.   :32058                                         Max.   :2744.00  
##                                                                         
##  poblacion_2022      hogrem2015     hogremjefmuj2015 popnoafmed2015  
##  Min.   :     95   Min.   : 0.000   Min.   : 0.00    Min.   : 1.124  
##  1st Qu.:   4502   1st Qu.: 2.285   1st Qu.:22.14    1st Qu.: 9.729  
##  Median :  14148   Median : 5.316   Median :26.05    Median :13.680  
##  Mean   :  52158   Mean   : 8.562   Mean   :25.86    Mean   :14.938  
##  3rd Qu.:  37226   3rd Qu.:12.001   3rd Qu.:29.56    3rd Qu.:19.252  
##  Max.   :1815551   Max.   :52.027   Max.   :48.24    Max.   :62.101  
##                    NA's   :1        NA's   :1        NA's   :1       
##     gini2015        popden2020        crimen_2018      crimen_2019    
##  Min.   :0.3030   Min.   :    0.16   Min.   :  0.00   Min.   :  0.00  
##  1st Qu.:0.3690   1st Qu.:   17.75   1st Qu.:  0.00   1st Qu.:  0.00  
##  Median :0.3870   Median :   52.46   Median :  9.76   Median : 11.50  
##  Mean   :0.3916   Mean   :  313.09   Mean   : 19.03   Mean   : 20.34  
##  3rd Qu.:0.4100   3rd Qu.:  142.69   3rd Qu.: 25.71   3rd Qu.: 26.99  
##  Max.   :0.6400   Max.   :56489.74   Max.   :719.42   Max.   :551.82  
##  NA's   :1        NA's   :1                                           
##  inclusion_fin_2019 porcentaje_pob_pobreza porcentaje_pob_pobreza_ext
##  Min.   : 0.0000    Min.   : 5.45          Min.   : 0.00             
##  1st Qu.: 0.0000    1st Qu.:45.57          1st Qu.: 5.35             
##  Median : 0.0000    Median :62.59          Median :12.47             
##  Mean   : 0.4892    Mean   :61.91          Mean   :17.14             
##  3rd Qu.: 0.8600    3rd Qu.:80.19          3rd Qu.:24.12             
##  Max.   :10.6800    Max.   :99.65          Max.   :84.45             
##                     NA's   :1              NA's   :1                 
##  porcentaje_pob_servicios_salud porcentaje_pob_acceso_ss pob_6-14_no_edu 
##  Min.   : 1.05                  Min.   :22.03            Min.   : 0.000  
##  1st Qu.:16.09                  1st Qu.:64.33            1st Qu.: 4.170  
##  Median :23.23                  Median :76.46            Median : 5.720  
##  Mean   :25.10                  Mean   :72.37            Mean   : 6.301  
##  3rd Qu.:32.83                  3rd Qu.:83.43            3rd Qu.: 7.800  
##  Max.   :83.86                  Max.   :96.99            Max.   :38.560  
##  NA's   :1                      NA's   :1                                
##  rezago_social         grado_rs            feb_2020          march_2020     
##  Min.   :-1.550000   Length:2449        Min.   :0.000000   Min.   :  0.000  
##  1st Qu.:-0.760000   Class :character   1st Qu.:0.000000   1st Qu.:  0.000  
##  Median :-0.220000   Mode  :character   Median :0.000000   Median :  0.000  
##  Mean   :-0.004418                      Mean   :0.003267   Mean   :  1.274  
##  3rd Qu.: 0.460000                      3rd Qu.:0.000000   3rd Qu.:  0.000  
##  Max.   : 6.830000                      Max.   :1.000000   Max.   :139.000  
##                                                                             
##    april_2020        may_2020         june_2020         july_2020      
##  Min.   :   0.0   Min.   :   0.00   Min.   :   0.00   Min.   :   0.00  
##  1st Qu.:   0.0   1st Qu.:   0.00   1st Qu.:   0.00   1st Qu.:   1.00  
##  Median :   0.0   Median :   1.00   Median :   4.00   Median :   5.00  
##  Mean   :  12.1   Mean   :  37.74   Mean   :  64.86   Mean   :  86.66  
##  3rd Qu.:   2.0   3rd Qu.:   8.00   3rd Qu.:  19.00   3rd Qu.:  27.00  
##  Max.   :1902.0   Max.   :4543.00   Max.   :5872.00   Max.   :6079.00  
##                                                                        
##   august_2020        sept_2020          oct_2020          nov_2020      
##  Min.   :   0.00   Min.   :   0.00   Min.   :   0.00   Min.   :   0.00  
##  1st Qu.:   1.00   1st Qu.:   0.00   1st Qu.:   0.00   1st Qu.:   0.00  
##  Median :   4.00   Median :   3.00   Median :   2.00   Median :   2.00  
##  Mean   :  69.74   Mean   :  60.21   Mean   :  70.29   Mean   :  84.12  
##  3rd Qu.:  22.00   3rd Qu.:  17.00   3rd Qu.:  14.00   3rd Qu.:  15.00  
##  Max.   :4295.00   Max.   :3877.00   Max.   :8984.00   Max.   :6798.00  
##                                                                         
##     dic_2020          jan_2021          feb_2021          march_2021     
##  Min.   :    0.0   Min.   :    0.0   Min.   :    0.00   Min.   :   0.00  
##  1st Qu.:    0.0   1st Qu.:    1.0   1st Qu.:    1.00   1st Qu.:   0.00  
##  Median :    4.0   Median :    7.0   Median :    3.00   Median :   2.00  
##  Mean   :  134.7   Mean   :  173.3   Mean   :   79.71   Mean   :  58.48  
##  3rd Qu.:   20.0   3rd Qu.:   35.0   3rd Qu.:   17.00   3rd Qu.:  12.00  
##  Max.   :19628.0   Max.   :24992.0   Max.   :11834.00   Max.   :9918.00  
##                                                                          
##    april_2021         may_2021         june_2021         july_2021      
##  Min.   :   0.00   Min.   :   0.00   Min.   :   0.00   Min.   :    0.0  
##  1st Qu.:   0.00   1st Qu.:   0.00   1st Qu.:   0.00   1st Qu.:    1.0  
##  Median :   1.00   Median :   1.00   Median :   1.00   Median :    5.0  
##  Mean   :  38.23   Mean   :  26.89   Mean   :  43.74   Mean   :  155.8  
##  3rd Qu.:   9.00   3rd Qu.:   5.00   3rd Qu.:   5.00   3rd Qu.:   32.0  
##  Max.   :5065.00   Max.   :3917.00   Max.   :6640.00   Max.   :20315.0  
##                                                                         
##   august_2021        sept_2021         oct_2021          nov_2021      
##  Min.   :    0.0   Min.   :   0.0   Min.   :   0.00   Min.   :   0.00  
##  1st Qu.:    2.0   1st Qu.:   2.0   1st Qu.:   0.00   1st Qu.:   0.00  
##  Median :   13.0   Median :   8.0   Median :   3.00   Median :   1.00  
##  Mean   :  213.5   Mean   : 110.2   Mean   :  50.03   Mean   :  33.25  
##  3rd Qu.:   73.0   3rd Qu.:  43.0   3rd Qu.:  16.00   3rd Qu.:   6.00  
##  Max.   :17590.0   Max.   :7742.0   Max.   :3556.00   Max.   :4854.00  
##                                                                        
##     dic_2021        total_casos       tasa_covid     
##  Min.   :   0.00   Min.   :     0   Min.   :   0.00  
##  1st Qu.:   0.00   1st Qu.:    21   1st Qu.:  38.97  
##  Median :   1.00   Median :   100   Median :  92.37  
##  Mean   :  48.91   Mean   :  1654   Mean   : 139.00  
##  3rd Qu.:   6.00   3rd Qu.:   445   3rd Qu.: 184.13  
##  Max.   :4708.00   Max.   :158582   Max.   :1950.98  
## 
#Sustituir por la mediana 
data$hogremjefmuj2015[is.na(data$hogremjefmuj2015)] <- median(data$hogremjefmuj2015, na.rm =TRUE)

data$popden2020[is.na(data$popden2020)] <- median(data$popden2020, na.rm =TRUE)

data$porcentaje_pob_servicios_salud[is.na(data$porcentaje_pob_servicios_salud)] <- median(data$porcentaje_pob_servicios_salud, na.rm =TRUE)

data$popnoafmed2015[is.na(data$popnoafmed2015)] <- median(data$popnoafmed2015, na.rm =TRUE)

data$porcentaje_pob_pobreza[is.na(data$porcentaje_pob_pobreza)] <- median(data$porcentaje_pob_pobreza, na.rm =TRUE)

data$porcentaje_pob_acceso_ss[is.na(data$porcentaje_pob_acceso_ss)] <- median(data$porcentaje_pob_acceso_ss, na.rm =TRUE)

data$hogrem2015[is.na(data$hogrem2015)] <- median(data$hogrem2015, na.rm =TRUE)

data$gini2015[is.na(data$gini2015)] <- median(data$gini2015, na.rm =TRUE)

data$porcentaje_pob_pobreza_ext[is.na(data$porcentaje_pob_pobreza_ext)] <- median(data$porcentaje_pob_pobreza_ext, na.rm =TRUE)

sum(is.na(data))
## [1] 0

Creamos la variable de “Region” y tendremos tres categorias: Norte,Centro y Sur

norte <- c("Baja California", "Baja California Sur", "Chihuahua", "Coahuila de Zaragoza", "Durango", "Nuevo León", "Sinaloa", "Sonora", "Tamaulipas")
centro <- c("Aguascalientes", "Colima", "Guanajuato", "Hidalgo", "Jalisco", "Estado de México", "Michoacán de Ocampo", "Morelos", "Nayarit", "Puebla", "Querétaro", "San Luis Potosí", "Zacatecas", "Ciudad de México", "Tlaxcala")
sur <- c("Campeche", "Chiapas", "Guerrero", "Oaxaca", "Quintana Roo", "Tabasco", "Veracruz de Ignacio de la Llave", "Yucatán")

data$Region <- with(data, ifelse(entidad %in% norte, "norte",
                    ifelse(entidad %in% centro, "centro",
                    ifelse(entidad %in% sur, "sur", NA))))

Realizamos el merge entre ambas bases de datos para poder implementar el componente de geolocalización

state_geodata <- geo_join(mx_state_map,data,'ADMIN_NAME','entidad',how='inner')
## Warning: We recommend using the dplyr::*_join() family of functions instead.

Creamos la variable de “Region” y tendremos tres categorias: Norte,Centro y Sur

norte <- c("Baja California", "Baja California Sur", "Chihuahua", "Coahuila", "Durango", "Nuevo Leon", "Sinaloa", "Sonora", "Tamaulipas")
centro <- c("Aguascalientes", "Colima", "Guanajuato", "Hidalgo", "Jalisco", "Mexico", "Michoacan", "Morelos", "Nayarit", "Puebla", "Queretaro", "San Luis Potosi", "Zacatecas", "Distrito Federal", "Tlaxcala")
sur <- c("Campeche", "Chiapas", "Guerrero", "Oaxaca", "Quintana Roo", "Tabasco", "Veracruz", "Yucatan")

data$Region <- with(data, ifelse(entidad %in% norte, "norte",
                    ifelse(entidad %in% centro, "centro",
                    ifelse(entidad %in% sur,"sur",NA))))

Realizamos visualizaciones para poder observar estadisticos descriptivas Zona centro es la region con mayor número de hospitales, esto tiene sentido dado que es ahí donde se encuentra la capital y además, esta región es conformada por más estados y es aqui donde se encuentra CDMX y Guadalajara que son de las ciudades más grandes y desarrolladas.

ggplot(data=data, aes(x=Region, y=numero_hospitales)) +
  theme_minimal() +
  geom_bar(stat="identity")

Observamos si las variables de interés presentan una distribucion normalo, en caso de no ser asi aplicaremos log

hist(log(data$popden2020)) #Se aplico log para mejorar distribucion normal 

hist(log(data$crimen_2018)) #Se aplico log para mejorar distribucion normal 

hist(log(data$crimen_2019)) #Se aplico log para mejorar distribucion normal 

hist(log(data$porcentaje_pob_pobreza)) #Se aplico log para mejorar distribucion normal y esta no mejora

hist(log(data$total_casos)) #Se aplico log para mejorar distribucion normal 

hist(log(data$tasa_covid)) #Se aplico log para mejorar distribucion normal 

Realizamos algunos boxplots para conocer la disperión de los datos de las variables y encontrar posibles insights

boxplot(data$popden2020) #Dispersión alta en la densidad de población 

boxplot(data$crimen_2018) #La tasa de crimen se mantiene parecida para el año 2018 y 2019, sin embargo, los outliers si reducen del año 18 al 19 

boxplot(data$crimen_2019) 

boxplot(data$porcentaje_pob_pobreza) #La tasa promedio de pobreza es cerca del 60% 

boxplot(data$total_casos) #Existe una alta dispersión en el número total de casos 

boxplot(data$tasa_covid) #Existe una alta dispersión en el número total de casos 

Se crea el mapa con los estadoos

tm_shape(mx_state_map) +
  tm_polygons(col = "blue") +
  tm_compass(position=c("left","bottom")) +
  tm_layout(main.title = "Mexico's States") +
  tm_text("ADMIN_NAME", size = "AREA")
## Warning: The 'main.title' argument of 'tm_layout()' is deprecated as of tmap
## 4.0. Please use 'tm_title()' instead.

Se crea el mapa con los municipios

tm_shape(mx_mpio_map) +
  tm_polygons(col = "blue") +
  tm_compass(position=c("left","bottom")) +
  tm_layout(main.title = "Mexico's Municipios")
## Warning: The 'main.title' argument of 'tm_layout()' is deprecated as of tmap
## 4.0. Please use 'tm_title()' instead.

Porcentaje de la población que carece de servicios de salud durante el año 2020

F1 <- tm_shape(state_geodata) + 
  tm_polygons(col = "porcentaje_pob_servicios_salud", palette="viridis", style="quantile", n=8, title="Pop Percentage") +
  tm_layout(main.title= 'porcentaje de la población que carece de servicios de salud - año 2020
',  title.position = c('right', 'top'), legend.position= c("left", "bottom"), title.size = 1)
## tm_polygons: Deprecated tmap v3 code detected. Code translated to v4
## Warning: The 'main.title' argument of 'tm_layout()' is deprecated as of tmap
## 4.0. Please use 'tm_title()' instead.

Número total de casos covid2019 confirmados

F2 <- tm_shape(state_geodata) + 
  tm_polygons(col = "total_casos", palette="viridis", style="quantile", n=8, title="Pop Percentage") +
  tm_layout(main.title= 'número total de casos de COVID19 confirmados

',  title.position = c('right', 'top'), legend.position= c("left", "bottom"), title.size = 1)
## tm_polygons: Deprecated tmap v3 code detected. Code translated to v4
## Warning: The 'main.title' argument of 'tm_layout()' is deprecated as of tmap
## 4.0. Please use 'tm_title()' instead.

Panel of maps

tmap_arrange(F1, F2, ncol = 2) 
## Warning: Some legend items or map compoments do not fit well (e.g. due to the
## specified font size).

## Warning: Some legend items or map compoments do not fit well (e.g. due to the
## specified font size).

En ambas graficas los colores claros reflejan un percentaje menor, mientras que los colores obscuros representan un mayor procentaje de población.

En la gráfica izquierda se visualiza el procentaje de la población que carece servicios de salud en el 2020. Chihuahua, Nuevo León, Tamaulipas, Puebla y Yucatán fueron las entidades con menor procentaje, por otro lado Jalisco, Oaxaca, Veracruz, y Estado de México, fueron los estados con mayor porcentaje de población que carece de servicios de salud.

En la gráfica derecha se puede visualizar el número total de casos confirmados de COVID-19, las entidades con mayor casos fueron, Baja California Sur, Baja California, Tabasco, CDMX, Colima, Guanajuato y Sinaloa, mientras que la entidad con menos casos confirmados fue Guerrero.

# library(tmap) 
remotes::install_github('r-tmap/tmap')
## Skipping install of 'tmap' from a github remote, the SHA1 (4ddb5394) has not changed since last install.
##   Use `force = TRUE` to force installation
tmaptools::palette_explorer()
## Loading required namespace: shiny
## Loading required namespace: shinyjs
Shiny applications not supported in static R Markdown documents

#Matrices de conectividad Primero hacemos uso del componente queen

queen  <- poly2nb(mx_state_map, queen=T)
summary(queen)
## 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

#Ahora implementamos el componente rook

rook  <- poly2nb(mx_state_map, queen=F)
summary(rook)
## Neighbour list object:
## Number of regions: 32 
## Number of nonzero links: 130 
## Percentage nonzero weights: 12.69531 
## Average number of links: 4.0625 
## Link number distribution:
## 
## 1 2 3 4 5 6 7 8 
## 1 6 7 7 3 4 3 1 
## 1 least connected region:
## 31 with 1 link
## 1 most connected region:
## 20 with 8 links
sswm <- nb2listw(queen, style="W", zero.policy = TRUE)
mx_state_map_a <- as(mx_state_map, "Spatial")
mx_state_map_centroid <- coordinates(mx_state_map_a) 
plot(mx_state_map_a,border="blue",axes=FALSE,las=1, main="Mexico's States Queen SWM")
plot(mx_state_map_a,col="grey",border=grey(0.9),axes=T,add=T) 
plot(sswm,coords=mx_state_map_centroid,pch=19,cex=0.1,col="red",add=T) 

0.0.1 Spatial Autocorrelation

# Global Moran's I 
#moran.test(state_geodata$porcentaje_pob_servicios_salud, sswm)  # Global Moran's I is 0.10 but not statistically significant (p-value > 10%). 
#moran.test(state_geodata$total_casos, sswm)                  # Global Moran's I is 0.02 but not statistically significant (p-value > 10%). 

Analizando el error en moran.test, logramos decifrar que hacen falta 7 municipios en nuestro dataframe “data”, por ende, al momento de hacer merge con el otro dataframe solo contamos con 2,449 observaciones, sin embargo deberiamos de tener 2,456.

Utilizamos los siguientes codigos para identificar cuales municipios eran lo que hacian falta para poder agregarlos a nuestro merge y después transformar nuestro datos nulos.

# OPCIÓN 1
#state_geodata_sf <- st_as_sf(state_geodata, coords = c("lon", "lat"), crs = 4326) 
#mx_mpio_map_sf <- st_as_sf(mx_mpio_map) 

#state_geodata_sf <- st_transform(state_geodata_sf, st_crs(mx_mpio_map_sf)$epsg) 
#geometrias_faltantes <- st_difference(mx_mpio_map_sf, state_geodata_sf)
#para que diera las coordenadas faltantes 

#OPCIÓN 2
#municipios_faltantes <- setdiff(state_geodata$geometry, mx_mpio_map$geometry)
#print(municipios_faltantes)

Intentamos correr la primera opción y se tardaba mucho en correr hasta que trono nuestro R (estuvo como 1 hr corriendo), después de intento la opción 2 la cual nos arrojó 5 coordenadas diferentes, sin embargo, nos debío haber dado 7.

No se puede hacer la identificación de clusters sin el moran

# Identification of Clusters 
#state_geodata$total_casos <- lag.listw(sswm, state_geodata$total_casos, zero.policy=TRUE) 
#state_geodata$sp_lag_crime_rate <- lag.listw(sswm, state_geodata$crime_rate, zero.policy=TRUE) 

#fdi_lag <- tm_shape(state_geodata) + 
  #tm_polygons(col = "sp_lag_new_fdi_real_mxn", palette="Blues", style="quantile", n=8, title="MXN FDI Inflows") +
  #tm_layout(main.title= 'Clusters of New FDI Inflows',  title.position = c('right', 'top'), legend.position= c("left", "bottom"), title.size = 1)

#crime_lag <- tm_shape(state_geodata) + 
  #tm_polygons(col = "sp_lag_crime_rate", palette="OrRd", style="quantile", n=8, title="Crime Rate") +
  #tm_layout(main.title= 'Clusters of Crime Rate',  title.position = c('right', 'top'), legend.position= c("left", "bottom"), title.size = 1)

# tmap_arrange(fdi, fdi_lag, crime, crime_lag, ncol = 2)

No se puede hacer sin el moran

# GeoDa Clusters Visualization 
#sswm_a <- queen_weights(mx_state_map) # queen spatial weight matrix (alternative format)
#lisa_income <- local_moran(sswm_a, state_geodata["real_ave_month_income"]) 
#state_geodata$cluster_income <- as.factor(lisa_income$GetClusterIndicators())
#levels(state_geodata$cluster_income)<-lisa_income$GetLabels() 

#ggplot(data=state_geodata) +
  #geom_sf(aes(fill=cluster_income)) + 
  #ggtitle(label = "Real Average Monthly Income", subtitle = "Mexico's States")