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).
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
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
#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)
# 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")