Sesión 3

Autor/a

Jorge de la Vega

Datos de CONAPO

Se utiliza el marco geoestadístico de 2020. El diccionario es:

  • CVE_ENT Clave de entidad federativa
  • NOM_ENT Nombre de entidad federativa
  • CVE_MUN Clave del municipio
  • NOM_MUN Nombre del municipio
  • POB_TOT Población total
  • ANALF Porcentaje de población analfabeta de 15 años o más
  • SBASC Porcentaje de población de 15 años o más sin educación básica
  • OVSDE Porcentaje de ocupantes en viviendas particulares habitadas sin drenaje ni excusado
  • OVSEE Porcentaje de ocupantes en viviendas particulares habitadas sin energía eléctrica
  • OVSAE Porcentaje de ocupantes en viviendas particulares habitadas sin agua entubada
  • OVPT Porcentaje de ocupantes en viviendas particulares habitadas con piso de tierra
  • VHAC Porcentaje de viviendas particulares con hacinamiento
  • PL.5000 Porcentaje de población que vive en localidades menores a 5 000 habitantes
  • PO2SM Porcentaje de población ocupada con ingresos de hasta 2 salarios mínimos
  • IM_2020 Índice de marginación, 2020
  • GM_2020 Grado de marginación, 2020
  • IMN_2020 Índice de marginación normalizado, 2020
library(tidyverse)
library(readxl)

base <- read_excel("datos3/IMM_2020.xls", 
                  sheet = "IMM_2020") %>%
        janitor::clean_names() # para convertir nombres de variables a minúsculas y homogeneizar
str(base)
tibble [2,469 × 17] (S3: tbl_df/tbl/data.frame)
 $ cve_ent : chr [1:2469] "01" "01" "01" "01" ...
 $ nom_ent : chr [1:2469] "Aguascalientes" "Aguascalientes" "Aguascalientes" "Aguascalientes" ...
 $ cve_mun : chr [1:2469] "01001" "01002" "01003" "01004" ...
 $ nom_mun : chr [1:2469] "Aguascalientes" "Asientos" "Calvillo" "Cosío" ...
 $ pob_tot : num [1:2469] 948990 51536 58250 17000 129929 ...
 $ analf   : num [1:2469] 1.64 3.53 4.49 3.14 2.38 ...
 $ sbasc   : num [1:2469] 20.4 33.9 42.5 27.7 26.7 ...
 $ ovsde   : num [1:2469] 0.105 2.65 0.365 0.713 0.277 ...
 $ ovsee   : num [1:2469] 0.113 0.486 0.517 0.577 0.355 ...
 $ ovsae   : num [1:2469] 0.379 0.858 0.801 0.66 0.86 ...
 $ ovpt    : num [1:2469] 0.591 1.352 1.04 1.031 1.313 ...
 $ vhac    : num [1:2469] 10.3 22.9 19.2 22.7 16.4 ...
 $ pl_5000 : num [1:2469] 7.52 78.22 51.3 65.47 37.16 ...
 $ po2sm   : num [1:2469] 54.2 78.6 79.3 81.7 56.7 ...
 $ im_2020 : num [1:2469] 60.3 56.5 57.1 57.1 59 ...
 $ gm_2020 : chr [1:2469] "Muy bajo" "Muy bajo" "Muy bajo" "Muy bajo" ...
 $ imn_2020: num [1:2469] 0.945 0.885 0.893 0.894 0.924 ...

Vamos a hacer un joint con la base que contiene la información geográfica. Leemos los datos en formato shp

library(sf)
entidad <-  read_sf("datos3/marco_geo_2020/edo.shp")
municipio <- read_sf("datos3/gad/gadm41_MEX_2.shp") # no coincide con el número de municipios

joint de las bases: Hacemos un mapa de población total por entidad

pob_entidad <- base %>%
   group_by(cve_ent, nom_ent) %>%
   summarise(poblacion = sum(pob_tot)) %>%
   ungroup() %>%
   arrange(desc(poblacion))

plot(entidad)

Reproyectar es cambiar la escala de los valores.

final <- left_join(x = entidad, y = pob_entidad, by = c("CVE_ENT" = "cve_ent"))
final2 <- st_transform(final, 4326) # convierte a grados
ggplot() + 
  geom_sf(data = final, aes(fill = poblacion))

library(leaflet)

colores <- colorNumeric("viridis",domain = final2$poblacion)

 leaflet() %>%
  addProviderTiles(providers$OpenStreetMap, group = "OSM") %>%
  addProviderTiles(providers$Esri.WorldImagery, group = "satelite") %>% 
  addPolygons(data=final2,fillColor = ~colores(poblacion),
              weight = 1,
              label = ~poblacion,
              opacity = 1,
              fillOpacity = 1,
              group = "Estados") %>%
   addLegend(pal= colores,
             values = final2$poblacion,
             opacity = 1) %>%
   addLayersControl(overlayGroups = "Estados",
                    baseGroups = c("OSM","satelite"))

Apéndice:

La library geodata tiene archivos que no son 100% confiables. EL primer nivel es estados, segundo nivel es municipal