En México, se dice que los casos y muertes por COVID-19 sufridas durante la pandemia seguían ciertos patrones de comportamiento según el sector poblacional y sus características socio-económicas y geográficas. En este documento se pretende encontrar dichas características y validarlas con fundamentos estadísticos, para después poder identificar su comportamiento espacial, así como si tienen autocorrelación espacial. La base de datos que se utilizará con este propósito es la de ‘covid19_confirmados.csv’, usando como complemento la de ‘denue_hospitales.xlsx’.
El ESDA o Exploratory Spatial Data Analysis a diferencia del análisis de datos tradicional, busca encontrar una relación entre las variables de interés con ubicaciones. Nos sirve para poder identificar Autocorrelación Espacial, que confirma la presencia de variaciones espaciales. La autocorrelación espacial puede ser negativa o positiva, donde siendo positiva representa que las áreas cerca unas de las otras tienen valores similares, mientras que la negativa representa que las áreas de vecinos son diferentes.
Un ejemplo de autocorrelación espacial positiva son las características geográficas, es decir, un desierto en un territorio cuenta con la variable arena en toda su extensión territorial, por lo que se parecen entre más cerca están. Mientras tanto, un ejemplo de autocorrelación espacial negativa es
str(hospitales)
## 'data.frame': 234303 obs. of 42 variables:
## $ id : int 9331895 6697315 6751037 536 8625042 16651 8463387 8984759 48213 8500272 ...
## $ clee : chr "01001621111005611000000000U0" "01001621511001384002003549S9" "01001621511001441000003549S7" "01003624191000011001000000S3" ...
## $ nom_estab : chr "(H) CONSULTORIO AGUASCALIENTES, AGS." "176 SUCURSAL EMILIANO ZAPATA SIGLO XXI" "184 SUCURSAL CONVENCI\xd3N ORIENTE GRUPO DIAGN\xd3STICO M\xc9DICO PROA" "AA GRUPO CHICAGO 85" ...
## $ raz_social: chr "(H) CONSULTORIO AGUASCALIENTES, AGS. " "GRUPO DIAGNOSTICO MEDICO PROA SA DE CV" "GRUPO DIAGNOSTICO MEDICO PROA SA DE CV" "" ...
## $ codigo_act: int 621111 621511 621511 624191 624191 624191 624211 623311 621331 621211 ...
## $ nombre_act: chr "Consultorios de medicina general del sector privado" "Laboratorios m\xe9dicos y de diagn\xf3stico del sector privado" "Laboratorios m\xe9dicos y de diagn\xf3stico del sector privado" "Agrupaciones de autoayuda para alcoh\xf3licos y personas con otras adicciones" ...
## $ per_ocu : chr "0 a 5 personas" "31 a 50 personas" "0 a 5 personas" "11 a 30 personas" ...
## $ tipo_vial : chr "" "CALLE" "AVENIDA" "CALLE" ...
## $ nom_vial : chr "" "GENERAL EMILIANO ZAPATA" "CONVENCI\xd3N DE 1914 ORIENTE" "ABASOLO" ...
## $ tipo_v_e_1: chr "" "CALLE" "AVENIDA" "CALLE" ...
## $ nom_v_e_1 : chr "" "JOS\xc9 GUADALUPE POSADA" "HALEY" "INDEPENDENCIA" ...
## $ tipo_v_e_2: chr "" "CALLE" "AVENIDA" "CALLE" ...
## $ nom_v_e_2 : chr "" "AZTECA" "PASEO DE LA CRUZ" "5 DE MAYO" ...
## $ tipo_v_e_3: chr "" "CALLE" "CALLE" "CALLE" ...
## $ nom_v_e_3 : chr "" "TALAMANTES" "V\xcdA L\xc1CTEA" "FRANCISCO JAVIER MINA" ...
## $ numero_ext: int NA 532 702 NA 201 400 202 111 45 1001 ...
## $ letra_ext : chr "" "" "" "SN" ...
## $ edificio : chr "" "" "" "" ...
## $ edificio_e: chr "" "" "" "" ...
## $ numero_int: int NA 0 0 NA NA NA NA 0 NA 15 ...
## $ letra_int : chr "" "" "" "" ...
## $ tipo_asent: chr "" "COLONIA" "COLONIA" "COLONIA" ...
## $ nomb_asent: chr "" "SAN MARCOS" "JESUS GOMEZ PORTUGAL" "INDEPENDENCIA" ...
## $ tipoCenCom: chr "" "" "OTRO CONGLOMERADO" "" ...
## $ nom_CenCom: chr "" "" "LA LOMA" "" ...
## $ num_local : chr "" "" "702-A" "" ...
## $ cod_postal: int NA 20070 20250 20800 20326 20030 20140 20130 20674 20127 ...
## $ cve_ent : int 1 1 1 1 1 1 1 1 1 1 ...
## $ entidad : chr "Aguascalientes" "Aguascalientes" "Aguascalientes" "Aguascalientes" ...
## $ cve_mun : int 1 1 1 3 1 1 1 1 6 1 ...
## $ municipio : chr "Aguascalientes" "Aguascalientes" "Aguascalientes" "Calvillo" ...
## $ cve_loc : int 1 1 1 1 1 1 1 1 1 1 ...
## $ localidad : chr "Aguascalientes" "Aguascalientes" "Aguascalientes" "Calvillo" ...
## $ ageb : chr "731" "619" "2189" "187" ...
## $ manzana : int 3 9 5 24 15 8 4 17 13 19 ...
## $ telefono : chr "" "" "" "4951077786" ...
## $ correoelec: chr "" "ERICK_ROQUE@PROA.COM.MX" "ERICK_ROQUE@PROA.COM.MX" "" ...
## $ www : chr "" "WWW.CHOPO.COM.MX" "" "" ...
## $ tipoUniEco: chr "Fijo" "Fijo" "Fijo" "Fijo" ...
## $ latitud : num 21.9 21.9 21.9 21.8 21.9 ...
## $ longitud : num -102 -102 -102 -103 -102 ...
## $ fecha_alta: chr "2020-11" "2016-01" "2016-10" "2010-07" ...
str(covid)
## 'data.frame': 2457 obs. of 42 variables:
## $ cve_ent : int 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 ...
## $ mpio : chr "Aguascalientes" "Asientos" "Calvillo" "Cosio" ...
## $ poblacion_2022 : int 961977 50864 60760 16918 130184 50032 57981 9661 22743 21947 ...
## $ hogrem2015 : chr "4.819" "12.867" "25.85" "14.294" ...
## $ hogremjefmuj2015 : chr "27.827" "22.054" "25.596" "21.171" ...
## $ popnoafmed2015 : chr "14.337" "5.774" "9.974" "5.283" ...
## $ gini2015 : chr "0.392" "0.37" "0.375" "0.37" ...
## $ popden2020 : chr "811.991" "94.087" "62.549" "131.885" ...
## $ crimen_2018 : num 7.36 7.81 8.4 17.86 5.14 ...
## $ crimen_2019 : num 8.15 5.78 8.31 0 10.98 ...
## $ inclusion_fin_2019 : num 1.78 0 1.16 0 0.36 1.2 1.03 0 0 0 ...
## $ porcentaje_pob_pobreza : chr "23.68" "40.13" "45.76" "37.04" ...
## $ porcentaje_pob_pobreza_ext : chr "1.97" "4.14" "4.5" "3.38" ...
## $ porcentaje_pob_servicios_salud: chr "20.02" "16.47" "21.03" "17.59" ...
## $ porcentaje_pob_acceso_ss : chr "37.77" "62.09" "76.15" "47.52" ...
## $ pob_6.14_no_edu : num 4.6 6.29 6.95 5.7 5.88 4.44 4.38 5.74 5.37 4.4 ...
## $ rezago_social : num -1.32 -0.86 -0.92 -1 -1.17 -1.17 -1.07 -0.96 -0.9 -0.83 ...
## $ grado_rs : chr "Muy bajo" "Muy bajo" "Muy bajo" "Muy bajo" ...
## $ feb_2020 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ march_2020 : int 45 1 0 0 1 5 1 0 1 0 ...
## $ april_2020 : int 213 1 9 0 12 6 10 4 1 1 ...
## $ may_2020 : int 520 7 2 17 21 26 40 1 24 3 ...
## $ june_2020 : int 1168 21 25 25 42 57 88 18 43 3 ...
## $ july_2020 : int 1271 42 89 25 65 69 153 26 48 7 ...
## $ august_2020 : int 1385 17 18 17 71 40 85 6 24 4 ...
## $ sept_2020 : int 1364 13 41 2 65 82 47 3 14 4 ...
## $ oct_2020 : int 2388 46 64 6 93 109 74 9 19 6 ...
## $ nov_2020 : int 3965 94 185 13 104 192 73 13 24 2 ...
## $ dic_2020 : int 2370 73 116 2 73 87 16 14 18 11 ...
## $ jan_2021 : int 3271 64 186 9 78 90 42 9 22 7 ...
## $ feb_2021 : int 1498 42 151 7 73 46 34 7 8 4 ...
## $ mar_2021 : int 1310 21 73 0 38 34 10 4 8 5 ...
## $ mar_2021.1 : int 1310 21 73 0 38 34 10 4 8 5 ...
## $ april_2021 : int 826 14 19 2 27 15 11 5 2 6 ...
## $ may_2021 : int 401 6 3 1 14 3 13 0 0 3 ...
## $ june_2021 : int 221 2 0 4 8 3 3 1 1 0 ...
## $ july_2021 : int 1140 6 37 1 35 10 11 2 1 2 ...
## $ august_2021 : int 2944 49 82 4 116 74 52 12 19 3 ...
## $ sept_2021 : int 2121 23 22 1 95 38 79 11 34 11 ...
## $ oct_2021 : int 1560 33 57 4 78 39 66 5 12 22 ...
## $ nov_2021 : int 1126 16 32 4 45 38 61 2 10 14 ...
## $ dic_2021 : int 2067 14 68 4 95 18 30 0 6 11 ...
#Preparing the variable 'clee' to match 'cve_ent' to do the joint
hospitales$cve_ent <- substr(hospitales$clee, 1, 5)
covid$cve_ent <- as.character(covid$cve_ent)
covid$cve_ent <- ifelse(str_length(covid$cve_ent) == 4, paste("0",covid$cve_ent, sep = ""),covid$cve_ent)
#Deleting all the health centers that aren't considered as hospitals or related to the treatment of Covid or related.
hospitalesFiltered <- filter(hospitales, codigo_act != 624191 & codigo_act !=
623311 & codigo_act !=
621331 & codigo_act !=
624198 & codigo_act !=
621311 & codigo_act !=
623991 & codigo_act !=
623992 & codigo_act !=
624221 & codigo_act !=
624112 & codigo_act !=
624111 & codigo_act !=
624311 & codigo_act !=
622311 & codigo_act !=
624411 & codigo_act !=
624412 & codigo_act !=
624122 & codigo_act !=
624222 & codigo_act !=
624312 & codigo_act !=
621411 & codigo_act !=
623312 & codigo_act !=
624121 & codigo_act !=
621412 & codigo_act !=
621312)
#Creating a Dataset that counts the number of hospitals in México
hospitalesMexico <- hospitalesFiltered %>% count(cve_ent,entidad)
hospitalesMexico <- hospitalesMexico[-c(2),]
#Merging the data bases into one
covid$infectados2020 <- rowSums(covid[,c("feb_2020", "march_2020","april_2020","may_2020","june_2020","july_2020","august_2020","sept_2020","oct_2020","nov_2020","dic_2020")])
covid$infectados2021 <- rowSums(covid[,c("jan_2021", "feb_2021", "mar_2021","april_2021","may_2021","june_2021","july_2021","august_2021","sept_2021","oct_2021","nov_2021","dic_2021")])
joint <- merge(hospitales,covid, by.x = "cve_ent", by.y = "cve_ent", all.x = TRUE, all.y = FALSE)
Iniciamos con un análisis de NA´s que podrían estar presentes en la base de datos.
library(naniar)
gg_miss_var(covid, show_pct=TRUE)
No hay NA´s en la base de datos.
Ahora, transformamos las columnas al tipo de dato que debe tener, además de crear dos nuevas columnas que tengan el total de casos de Covid por año. Así mismo, las columnas que sean representadas con porcentajes son divididas entre 100 para un mejor uso.
covid1 <-covid
covid1$casos2021 <- rowSums(covid[, 30:42])
covid1$casos2020 <- rowSums(covid[, 19:29])
covid1 <- covid1 %>% mutate_at(c("hogrem2015", "hogremjefmuj2015", "popnoafmed2015", "gini2015", "porcentaje_pob_pobreza", "porcentaje_pob_pobreza_ext", "porcentaje_pob_servicios_salud", "porcentaje_pob_acceso_ss", "popden2020"), as.numeric)
covid1 <- na.omit(covid1)
covid1$porcentaje_pob_pobreza <- covid1$porcentaje_pob_pobreza/100
covid1$porcentaje_pob_acceso_ss <- covid1$porcentaje_pob_acceso_ss/100
covid1$porcentaje_pob_pobreza_ext <- covid1$porcentaje_pob_pobreza_ext/100
covid1$porcentaje_pob_servicios_salud <- covid1$porcentaje_pob_servicios_salud/100
library(dlookr)
corr_covid <- covid1 %>% select(hogrem2015, hogremjefmuj2015, popnoafmed2015, gini2015, porcentaje_pob_pobreza, porcentaje_pob_pobreza_ext, porcentaje_pob_servicios_salud, porcentaje_pob_acceso_ss, popden2020, casos2020)
correlate(corr_covid, hogrem2015, hogremjefmuj2015, popnoafmed2015, gini2015, porcentaje_pob_pobreza, porcentaje_pob_pobreza_ext, porcentaje_pob_servicios_salud, porcentaje_pob_acceso_ss, popden2020, casos2020) %>% plot()
Como se puede apreciar en la anterior gráfica de correlación, las columnas casos2020, porcentaje_pob_pobreza y porcentaje_pob_acceso_ss, son las columnas que más correlación presentan, además de la pobreza extrema y densidad de población, por lo que estás serán las analizadas con más detalle.
Municipio se refiere ala división territorial administrativa que está regida por un ayuntamiento, por estado.
Popden2020 se refiere a la concentración de población (densidad) en una locación geográfica; se utiliza para cuantificar información demográfica en relación a ecosistemas, salud, infraestructura y distintos patrones.
Porcentaje_pob_pobreza explica en porcentaje, la pobreza de la población en las áreas especificadas de México. Según el Consejo Nacional de Evaluación de la Política de Desarrollo Social (CONEVAL), la pobreza por ingresos se define por tres líneas. La línea de pobreza alimentaria habla de la capacidad para obtener una canasta básica alimentaria, aquella de capacidades a la suficiencia del ingreso disponible para adquirir el valor de la canasta alimentaria y efectuar los gastos necesarios en salud y educación y finalmente la de patrimonio que habla de la insuficiencia de éstos dos así como de vivienda, transporte y bienes y servicios.
Porcentaje_pob_pobreza_ext se refiere a la situación de pobreza extrema al tener tres o más carencias (de seis) del Índice de Privación Social y estar por debajo de la línea de bienestar (mínima).
Porcentaje_pob_servicios_salud se refiere al porcentaje de la población por área, que tiene acesso a servicios de salud pública y privada
Porcentaje_pob_acceso_ss se refiere al porcentaje de la población que tiene acceso al seguro social.
Así mismo, se utilizarán las variables HospitalesHabitantes y casos2020, las cuales serán calculadas más adelante.
HospitalesHabitantes: Indica el número de hospitales cada 10 mil habitantes.
Casos2020: Indica el número de casos de COVID 19 en el año 2020.
plot_normality(covid1, casos2020, porcentaje_pob_pobreza, porcentaje_pob_acceso_ss)
Para poder identificar la distribución de los datos en las variables de interés se hacen estás 12 gráficas, dando como resultado de solo la variable de casos2020 seguiría una distribución normal solo si se le aplica una transformación logarítmica.
target_var_1<-target_by(covid1, porcentaje_pob_pobreza)
relationship_1<-relate(target_var_1, casos2020)
plot(relationship_1)
target_var_2<-target_by(covid1, porcentaje_pob_acceso_ss)
relationship_2<-relate(target_var_2, casos2020)
plot(relationship_2)
ggplot(covid1, aes(x=porcentaje_pob_pobreza, y=porcentaje_pob_acceso_ss, size=casos2020)) +
geom_point() +
scale_x_log10()
Como se puede ver en esta última gráfica de exploración de los datos, entre menor es el acceso al Seguro Social y mayor la pobreza, incremente considerablemente la cantidad de casos de Covid, confirmando así lo que hemos visto en todas nuestras gráficas. Por lo tanto, las variables porcentaje_pob_pobreza y porcentaje_pob_pobreza son explicativas y nos pueden servir más adelante cuando veamos la distribución de hospitales en México.
#Creating subsets for the regions in México
hospitalesCentroNorte <- filter(hospitalesFiltered, entidad == "Aguascalientes"
| entidad == "Baja California Sur"
| entidad == "Colima"
| entidad == "Durango"
| entidad == "Jalisco"
| entidad == "Michoac\xe1n de Ocampo"
| entidad == "Nayarit"
| entidad == "San Luis Potos\xed"
| entidad == "Sinaloa"
| entidad == "Zacatecas")
hospitalesCentro <- filter(hospitalesFiltered, entidad == "Ciudad de M\xe9xico"
| entidad == "M\xe9xico"
| entidad == "Guanajuato"
| entidad == "Hidalgo"
| entidad == "Morelos"
| entidad == "Puebla"
| entidad == "Quer\xe9taro"
| entidad == "Tlaxcala")
hospitalesNorte <- filter(hospitalesFiltered, entidad == "Baja California"
| entidad == "Chihuahua"
| entidad == "Coahuila de Zaragoza"
| entidad == "Nuevo Le\xf3n"
| entidad == "Sonora"
| entidad == "Tamaulipas")
hospitalesSur <- filter(hospitalesFiltered, entidad == "Campeche"
| entidad == "Chiapas"
| entidad == "Guerrero"
| entidad == "Oaxaca"
| entidad == "Quintana Roo"
| entidad == "Tabasco"
| entidad == "Veracruz de Ignacio de la Llave"
| entidad == "Yucat\xe1n")
#Adding the amount of hospitals for region
jointCentroNorte <- merge(hospitalesCentroNorte,covid, by.x = "cve_ent", by.y = "cve_ent", all.x = TRUE, all.y = FALSE)
jointCentro <- merge(hospitalesCentro,covid, by.x = "cve_ent", by.y = "cve_ent", all.x = TRUE, all.y = FALSE)
jointNorte <- merge(hospitalesNorte,covid, by.x = "cve_ent", by.y = "cve_ent", all.x = TRUE, all.y = FALSE)
jointSur <- merge(hospitalesSur,covid, by.x = "cve_ent", by.y = "cve_ent", all.x = TRUE, all.y = FALSE)
qmplot(longitud, latitud, data = joint, colour = I('red'), size = I(0.8), darken = .3)
qmplot(longitud, latitud, data = jointCentroNorte, colour = I('red'), size = I(0.8), darken = .3)
qmplot(longitud, latitud, data = jointCentro, colour = I('red'), size = I(0.8), darken = .3)
qmplot(longitud, latitud, data = jointSur, colour = I('red'), size = I(0.8), darken = .3)
qmplot(longitud, latitud, data = jointNorte, colour = I('red'), size = I(0.8), darken = .3)
densidad <- readxl::read_excel("C:\\Users\\art191127\\Downloads\\Población_07.xlsx")
superficie <- readxl::read_excel("C:\\Users\\art191127\\Downloads\\inegi_superficie_territorial.xlsx",sheet = "Distribución territorial")
superficie <- na.omit(superficie)
colnames(superficie) <- c("Entidad federativa", "Municipio", "Superficie (Km2)", "Porcentaje de la superficie estatal","Demsidad de población (hab./km2)","Total de municipios o demarcaciones territoriales / localidades")
superficie$`Entidad federativa` <- substr(superficie$`Entidad federativa`,1,2)
superficie$Municipio <- substr(superficie$Municipio,1,3)
superficie$cve_ent <- paste(superficie$`Entidad federativa`,superficie$Municipio,sep = "")
#Adding population density into hospitalesMexico dataset
hospitalesMexico <- merge(hospitalesMexico,superficie,by.x = "cve_ent", by.y = "cve_ent")
hospitalesMexico <- merge(hospitalesMexico, covid %>% select(cve_ent, poblacion_2022), by.x = "cve_ent", by.y = "cve_ent")
#Deleting extra municipalities
hospitalesMexico <- hospitalesMexico[-c(2457, 2458), ]
#Creating the columns for KM2 extension and population density
hospitalesMexico$hospitalesKm2 <- hospitalesMexico$n/hospitalesMexico$`Superficie (Km2)`
hospitalesMexico$hospitalespHabitantes <- (hospitalesMexico$n/hospitalesMexico$poblacion_2022)*10000
map <- st_read("C:\\Users\\art191127\\Documents\\Tec de Monterrey\\Semestre 8\\Clase 2\\Saucedo\\shp_mx_mpios\\mx_mpios.shp")
## Reading layer `mx_mpios' from data source
## `C:\Users\art191127\Documents\Tec de Monterrey\Semestre 8\Clase 2\Saucedo\shp_mx_mpios\mx_mpios.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
map_deprctd <- readShapePoly("C:\\Users\\art191127\\Documents\\Tec de Monterrey\\Semestre 8\\Clase 2\\Saucedo\\shp_mx_mpios\\mx_mpios.shp", IDvar = "IDUNICO", proj4string = CRS("+proj=longlat"), sf_use_s2(FALSE))
## Shapefile type: Polygon, (5), # of Shapes: 2456
hospitalesMexico$cve_ent <- as.numeric(hospitalesMexico$cve_ent)
merged_data <- merge(map,hospitalesMexico, by.x = "IDUNICO", by.y = "cve_ent", all.y = TRUE)
municipiosHH <- ggplot() +
geom_sf(data = merged_data, aes(fill = hospitalespHabitantes)) +
scale_fill_gradient(low = "#fff7ec", high = "#7F0000", limits = c(0.000009, 28))
municipiosHH
Iniciando por la cantidad de hospitales cada 10 mil habitantes, podemos observar como en el norte predomina una mayor cantidad de hospitales para sus habitantes, mientras que en el sur, hay un concentración mucho menor.
# Transforming selected variables to plot them
covid <- covid %>% mutate_at(c("hogrem2015", "hogremjefmuj2015", "popnoafmed2015", "gini2015", "porcentaje_pob_pobreza", "porcentaje_pob_pobreza_ext", "porcentaje_pob_servicios_salud", "porcentaje_pob_acceso_ss", "popden2020"), as.numeric)
#covid1 <- na.omit(covid1)
# Dividing the percentage variables between 100 for a better interpretation
covid$porcentaje_pob_pobreza <- covid$porcentaje_pob_pobreza/100
covid$porcentaje_pob_acceso_ss <- covid$porcentaje_pob_acceso_ss/100
covid$porcentaje_pob_pobreza_ext <- covid$porcentaje_pob_pobreza_ext/100
covid$porcentaje_pob_servicios_salud <- covid$porcentaje_pob_servicios_salud/100
covid$cve_ent <- as.character(covid$cve_ent)
colnames(map)[3] ="cve_ent"
map$cve_ent <- as.character(map$cve_ent)
# Deleting the extra row
map <- map[-2456,]
map$cve_ent <- as.character(map$cve_ent)
# Matching the key of the dataset 'map' with the key of 'covid'
map$cve_ent <- ifelse(str_length(map$cve_ent) == 4, paste("0",map$cve_ent, sep = ""),map$cve_ent)
connectivityM <- merge(map, covid, by = "cve_ent")
# Selecting only the interest variables
vector <- as.vector(c("cve_ent","porcentaje_pob_pobreza_ext", "porcentaje_pob_pobreza", "porcentaje_pob_servicios_salud", "rezago_social", "popden2020","infectados2020", "crimen_2019", "geometry"))
#vector <- as.vector(c("porcentaje_pob_pobreza", "rezago_social", "feb_2020", "march_2020","april_2020","may_2020","june_2020","july_2020","august_2020","sept_2020","oct_2020","nov_2020","dic_2020", "geometry"))
connectivityM <- connectivityM[,vector]
#mex_cov <- function(df, fill) {
#ggplot() +
#geom_sf(data = df, aes(fill = fill)) +
#scale_fill_gradient(low = "#fff7ec", high = "#7F0000", ggtitle("Porcentaje de Pobreza Ext en México"))
#}
#mex_cov(connectivityM, porcentaje_pob_pobreza_ext)
####
municipiosPX <- ggplot() +
geom_sf(data = connectivityM, aes(fill = porcentaje_pob_pobreza_ext)) +
scale_fill_gradient(low = "#fff7ec", high = "#7F0000", ggtitle("Porcentaje de Pobreza Ext en México"))
municipiosPX
municipiosPX <- ggplot() +
geom_sf(data = connectivityM, aes(fill = porcentaje_pob_pobreza_ext)) +
scale_fill_gradient(low = "#fff7ec", high = "#7F0000", ggtitle("Porcentaje de Pobreza Ext en México"))
municipiosPX
En este mapa se puede observar un tendencia contraria al anterior, donde la pobreza extrema está concentrada más en el centro y sur del país.
municipiosPX <- ggplot() +
geom_sf(data = connectivityM, aes(fill = porcentaje_pob_pobreza)) +
scale_fill_gradient(low = "#fff7ec", high = "#7F0000", ggtitle("Porcentaje de Pobreza en México"))
municipiosPX
Al igual que el anterior, en este caso podemos observar que la pobreza es más común en el sur del país, aunque a diferencia de la pobreza extrema, en este caso podemos ver más casos en el norte.
municipiosPX <- ggplot() +
geom_sf(data = connectivityM, aes(fill = porcentaje_pob_servicios_salud)) +
scale_fill_gradient(low = "#fff7ec", high = "#7F0000", ggtitle("Por de Carencia a SS en México"))
municipiosPX
Siguiendo con la tendencia, el sur nuevamente vuelve a ser el que más problemas presenta, ahora en términos de carencia en Servicios de Salud
Al hacer este mapa salió a la luz que la variable de densidad de población presentaba problemas, por lo que se hicieron 2 boxplots previas.
boxplot(connectivityM$popden2020)
En la primera podemos apreciar como esta variable cuenta con outliers muy altos, probablemente el más alto siendo el Estado de México, sin embargo, al no poder eliminar este municipio, se optó por hacer una transformación logarítmica.
boxplot(log(connectivityM$popden2020))
Como se puede ver después de la transformación, la variable cuenta con una distribución mucho más sana.
municipiosPX <- ggplot() +
geom_sf(data = connectivityM, aes(fill = log(popden2020))) +
scale_fill_gradient(low = "#fff7ec", high = "#7F0000", ggtitle("Densidad de Población"))
municipiosPX
Aunque no se aprecia en su totalidad, el centro de México es el más poblado.
Esta variable también presento un problema al momento de ser graficada, por lo que se hizo un summary de la variable.
summary(connectivityM$crimen_2019)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 0.00 11.49 20.29 26.92 551.82
Como se puede ver, la variable cuenta con el valor 0, el cual es común en varios municipios, por lo que es dificil saber si se trata de un error o es intencional. En cualquier caso se graficó con los ceros.
municipiosPX <- ggplot() +
geom_sf(data = connectivityM, aes(fill = crimen_2019)) +
scale_fill_gradient(low = "#fff7ec", high = "#7F0000", limits = c(0, 27), ggtitle("Crimen en México"))
municipiosPX
Dado la naturaleza de la variable, el mapa presenta muchas zonas grises que representan los ceros en la variable, por lo que al haber tantos, la interpretación se vuelve confusa, por lo que está variable no seguirá siendo tomada en cuenta.
Para iniciar con nuestro análisis de Autocorrelación Espacial, decidimos hacer 6 gráficas de Spatial Weight Matrix, donde se busca identificar el comportamiento espacial de los datos, en este caso en tipo ‘rook’ lo que permite identificar vecinos incluyendo los vértices comunes. Por lo tanto observamos 6 variables graficadas, porcentaje_pob_pobreza_ext, porcentaje_pob_pobreza, porcentaje_pob_servicios_salud, rezago_social, popden2020 y crimen_2019.
hospitalesMexico$cve_ent <- as.character(hospitalesMexico$cve_ent)
hospitalesMexico$cve_ent <- ifelse(str_length(hospitalesMexico$cve_ent) == 4, paste("0",hospitalesMexico$cve_ent, sep = ""),hospitalesMexico$cve_ent)
connectivityM <- merge(connectivityM, hospitalesMexico, by = "cve_ent")
vector <- as.vector(c("porcentaje_pob_pobreza_ext", "porcentaje_pob_pobreza", "porcentaje_pob_servicios_salud", "rezago_social", "popden2020","hospitalespHabitantes", "infectados2020", "geometry"))
connectivityM <- connectivityM[,vector]
#map_deprctd <- map_deprctd[-2457,]
connectivityM <- na.omit(connectivityM)
lmat_c<-coordinates(map_deprctd)
map.centroid_c<-coordinates(map_deprctd)
connectivityM.link_a_rook<-poly2nb(connectivityM,queen=T)
connectivityM.linkW_a_rook<-nb2listw(connectivityM.link_a_rook, style="W")
plot(connectivityM,border="white",axes=TRUE,las=1)
plot(connectivityM,col="grey",border=grey(0.11),axes=T,add=T)
plot(connectivityM.linkW_a_rook,coords=map.centroid_c,pch=19,cex=0.1,col="red",add=T)
Al igual que con los mapas de exploración, podemos observar como las variables de pobreza, acceso a servicios de salud y rezago social presentan los
hospitalesMexico_centroid<-coordinates(map_deprctd)
map_nb<-poly2nb(map_deprctd)
hospitalesMexico_map.linkW<-nb2listw(map_nb, style="W")
plot(map_deprctd,border="blue",axes=FALSE,las=1, main="MX Spatial Connectivity Matrix")
plot(map_deprctd,col="grey",border=grey(0.9),axes=T,add=T)
plot(hospitalesMexico_map.linkW,coords=hospitalesMexico_centroid,pch=19,cex=0.1,col="red",add=T)
library(spdep)
moran.test(connectivityM$porcentaje_pob_pobreza_ext, nb2listw(connectivityM.link_a_rook))
##
## Moran I test under randomisation
##
## data: connectivityM$porcentaje_pob_pobreza_ext
## weights: nb2listw(connectivityM.link_a_rook)
##
## Moran I statistic standard deviate = 56.891, p-value < 2.2e-16
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.6927728299 -0.0004078303 0.0001484580
moran.plot(connectivityM$porcentaje_pob_pobreza_ext, nb2listw(connectivityM.link_a_rook))
Tanto la gráfica como el resultado del Moran Test indican autocorrelación espacial positiva, dado que el Moran statistic es de 0.69 y el p-value es significativo.
Además, dado que el Moran I statistic es mayor a 0.5, se puede inferir que existen clusters a nivel local que concentran mayores cantidades de Pobreza Extrema, a comparación de lo que se podría observar en otros lugares del país.
moran.test(connectivityM$porcentaje_pob_pobreza, nb2listw(connectivityM.link_a_rook))
##
## Moran I test under randomisation
##
## data: connectivityM$porcentaje_pob_pobreza
## weights: nb2listw(connectivityM.link_a_rook)
##
## Moran I statistic standard deviate = 62.273, p-value < 2.2e-16
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.7587271433 -0.0004078303 0.0001486072
moran.plot(connectivityM$porcentaje_pob_pobreza, nb2listw(connectivityM.link_a_rook))
Tanto la gráfica como el resultado del Moran Test indican autocorrelación espacial positiva, dado que el Moran statistic es de 0.75 y el p-value es significativo.
De igual forma que el anterior el Moran I statistic es mayor a 0.5, por lo que es un valor alto y se puede inferir que existen clusters locales que tienen mayores niveles de pobreza a comparación de otros lugares en el país.
moran.test(connectivityM$porcentaje_pob_servicios_salud, nb2listw(connectivityM.link_a_rook))
##
## Moran I test under randomisation
##
## data: connectivityM$porcentaje_pob_servicios_salud
## weights: nb2listw(connectivityM.link_a_rook)
##
## Moran I statistic standard deviate = 34.389, p-value < 2.2e-16
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.4187152972 -0.0004078303 0.0001485366
moran.plot(connectivityM$porcentaje_pob_servicios_salud, nb2listw(connectivityM.link_a_rook))
Tanto la gráfica como el resultado del Moran Test indican autocorrelación espacial positiva, dado que el Moran statistic es de 0.42 y el p-value es significativo.
Moran I statistic menor a 0.5, no se infiere la existencia de clusters locales.
moran.test(log(connectivityM$popden2020), nb2listw(connectivityM.link_a_rook))
##
## Moran I test under randomisation
##
## data: log(connectivityM$popden2020)
## weights: nb2listw(connectivityM.link_a_rook)
##
## Moran I statistic standard deviate = 60.396, p-value < 2.2e-16
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.7356359156 -0.0004078303 0.0001485205
moran.plot(log(connectivityM$popden2020), nb2listw(connectivityM.link_a_rook))
Tanto la gráfica como el resultado del Moran Test indican autocorrelación espacial positiva, dado que el Moran statistic es de 0.73 y el p-value es significativo.
Moran I statistic mayor a 0.5, por lo que se infiere la existencia de clusters locales que concentran mayor cantidades de Densidad Poblacional a comparación de otros lugares en el país.
moran.test(connectivityM$hospitalespHabitantes, nb2listw(connectivityM.link_a_rook))
##
## Moran I test under randomisation
##
## data: connectivityM$hospitalespHabitantes
## weights: nb2listw(connectivityM.link_a_rook)
##
## Moran I statistic standard deviate = 23.349, p-value < 2.2e-16
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.2822790706 -0.0004078303 0.0001465748
moran.plot(connectivityM$hospitalespHabitantes, nb2listw(connectivityM.link_a_rook))
Tanto la gráfica como el resultado del Moran Test indican autocorrelación espacial positiva, dado que el Moran statistic es de 0.28 y el p-value es significativo.
Moran I statistic menor a 0.5, por lo que se infiere que no existen clusters locales.
Tomando en consideración los hallazgos previos, hacemos un análisis de clusters locales LISA para las variables seleccionadas.
map <- map[-2455,]
map <- map[-2454,]
queen_w<-queen_weights(map)
connectivityM1 <- connectivityM
lisa_pppe<-local_moran(queen_w, connectivityM["porcentaje_pob_pobreza_ext"])
connectivityM1$porcentaje_pob_pobreza_ext<-as.factor(lisa_pppe$GetClusterIndicators())
levels(connectivityM1$porcentaje_pob_pobreza_ext)<-lisa_pppe$GetLabels()
ggplot(data=connectivityM1) +
geom_sf(aes(fill=porcentaje_pob_pobreza_ext)) +
ggtitle(label="Porcentaje de Pobreza Extrema")
Como se puede ver en el mapa, no hay muchos clusters autocorrelación espacial positiva o de cualquier tipo en general.
lisa_pppe<-local_moran(queen_w, connectivityM["porcentaje_pob_pobreza"])
connectivityM1$porcentaje_pob_pobreza<-as.factor(lisa_pppe$GetClusterIndicators())
levels(connectivityM1$porcentaje_pob_pobreza)<-lisa_pppe$GetLabels()
ggplot(data=connectivityM1) +
geom_sf(aes(fill=porcentaje_pob_pobreza)) +
ggtitle(label="Porcentaje de Pobreza")
En este caso, en la zona norte del país se puede ver que en varios municipios, si la pobreza el baja, a su alrededor también tiende a serlo.
lisa_pppe<-local_moran(queen_w, connectivityM["porcentaje_pob_servicios_salud"])
connectivityM1$porcentaje_pob_servicios_salud<-as.factor(lisa_pppe$GetClusterIndicators())
levels(connectivityM1$porcentaje_pob_servicios_salud)<-lisa_pppe$GetLabels()
ggplot(data=connectivityM1) +
geom_sf(aes(fill=porcentaje_pob_servicios_salud)) +
ggtitle(label="Porcentaje Acceso a Servicios de Salud")
Sin muchos patrones, más que en el norte podemos ver pocos municipios con LL que significa que si hay baja cantidad de falta a acceso a servicios de salud, tiende a también haberla en la cercanía. Pero como se esperaba desde el Moran Test, realmente no existen clusters.
lisa_pppe<-local_moran(queen_w, connectivityM["popden2020"])
connectivityM1$popden2020<-as.factor(lisa_pppe$GetClusterIndicators())
levels(connectivityM1$popden2020)<-lisa_pppe$GetLabels()
ggplot(data=connectivityM1) +
geom_sf(aes(fill=popden2020)) +
ggtitle(label="Densidad de población")
Sin prácticamente clusters o muy pocos de estos, esta variable solamente sigue la tendencia de las 3 gráficas anteriores en pocos municipios.
lisa_pppe<-local_moran(queen_w, connectivityM["hospitalespHabitantes"])
connectivityM1$hospitalespHabitantes<-as.factor(lisa_pppe$GetClusterIndicators())
levels(connectivityM1$hospitalespHabitantes)<-lisa_pppe$GetLabels()
ggplot(data=connectivityM1) +
geom_sf(aes(fill=hospitalespHabitantes)) +
ggtitle(label="Hospitales por Habitantes")
Prácticamente sin tendencias, más que en Chiapas donde podemos ver una relación LL, que indica que si hay pocos hospitales para cada 10 mil habitantes en un municipio, los otros también tienden a tener pocos.
¿Cuáles son las regiones en México que representan una oportunidad de crecimiento y/o expansión de organizaciones relacionadas con el acceso a servicios de salud? R: Considerando los mapas de exploración de las variables en México, es claro que en el sur del país falta mucha infraestructura y desarrollo de los servicios de salud.
¿Cuáles son las características socioeconómicas de la población de dichas regiones? R: Al comparar la zona sur con la norte en los mapas LISA, nos podemos dar cuenta que en el norte, cuando hay poca pobreza, rezago social, etc, en una zona, las de alrededor suelen también presentar bajos niveles, es decir autocorrelación espacial LL, algo que no pasa en el sur, haciendo que los niveles de riqueza no se propaguen.
¿Por qué sí / no existen condiciones en dichas regiones para el crecimiento y/o expansión de organizaciones relacionadas con el acceso a servicios de salud? R: Sí existen condiciones para una expansión de organizaciones de salud en la zona sur del país, dado el bajo desarrollo que existe actualmente para una población que también tiene demanda de servicios de salud, sin embargo, esta expansión no se haría de la manera tradicional, pues como podemos ver en las variables socio-económicas, hay obstáculos económicos en esa zona.