Centro de Investigación y Docencia Económicas (CIDE)Región Centro

Manejo de Bases de Datos y Programación
Actividad 4
Profesor: Dr. Héctor de la Torre Gutiérrez

Alumno: Erick Gabriel Fajardo Martínez

6 de Diciembre de 2021

Usando la información generada por el CONEVAL y, publicada en su sitio de internet, generar lo siguiente.

EJERCICIO 1

Utilizando el reporte “ANEXO ESTADÍSTICO DE POBREZA A NIVEL MUNICIPIO 2010 Y 2015”, elegir un estado (y sus municipios), y representar el nivel de pobreza y pobreza extrema para los años 2010 y 2015. Esto es:

# Librerías
library(dplyr)
library(stringr)
library(rgdal)
library(leaflet)

# Lectura ----

# Se crea un archivo temporal
temp <- tempfile()

# Descarga del archivo .zip
download.file("https://www.coneval.org.mx/Medicion/Documents/Pobreza_municipal/Concentrado_indicadores_de_pobreza.zip",
              temp)

# Extracción y lectura del archivo .xlsx
pobreza_coneval_raw <- readxl::read_xlsx(unzip(temp), skip = 3) %>%
  janitor::clean_names()

# Se elimina el archivo temporal
unlink(temp)

# Limpieza ----

## Coneval ----

### Variables de interés ----
pobreza_coneval_clean <- pobreza_coneval_raw %>%
  select(1:18) %>% # La columna 18 es la última de pobreza extrema
  filter(!is.na(entidad_federativa))

### Nombres de variables ----

# Se corrigen los nombres de las columnas de interés
nombres_columnas <- names(pobreza_coneval_raw[ , 1:6])
columnas_pobreza <- paste0("pobreza_", pobreza_coneval_raw[1 , 7:12])
columnas_pobreza_extrema <- paste0("pobreza_extrema_", pobreza_coneval_raw[1, 13:18])

# Se expande el vector de nombres
nombres_columnas <- c(nombres_columnas, columnas_pobreza, columnas_pobreza_extrema)

# Se elimina "leer_nota_al_final..." y se reemplaza "\r\n" por "_"
nombres_columnas <- str_replace(nombres_columnas, "_leer_nota_al_final_del_cuadro", "")
nombres_columnas <- str_replace(nombres_columnas, "\r\n|\\s", "_")

# Se agregan los nombres a las columnas 
names(pobreza_coneval_clean) <- nombres_columnas

head(pobreza_coneval_clean)
## # A tibble: 6 x 18
##   clave_de_entidad entidad_federati~ clave_de_munici~ municipio   poblacion_2010
##   <chr>            <chr>             <chr>            <chr>                <dbl>
## 1 01               Aguascalientes    01001            Aguascalie~         801807
## 2 01               Aguascalientes    01002            Asientos             48358
## 3 01               Aguascalientes    01003            Calvillo             57627
## 4 01               Aguascalientes    01004            Cosío                14929
## 5 01               Aguascalientes    01005            Jesús María         102211
## 6 01               Aguascalientes    01006            Pabellón d~          40659
## # ... with 13 more variables: poblacion_2015 <chr>,
## #   pobreza_Porcentaje_2010 <chr>, pobreza_Porcentaje_2015 <chr>,
## #   pobreza_Personas_2010 <chr>, pobreza_Personas_2015 <chr>,
## #   pobreza_Carencias_promedio
## 2010 <chr>,
## #   pobreza_Carencias_promedio
## 2015 <chr>,
## #   pobreza_extrema_Porcentaje_2010 <chr>,
## #   pobreza_extrema_Porcentaje_2015 <chr>, ...
# Estados con 20 municipios o más
pobreza_coneval_clean %>%
       group_by(entidad_federativa) %>%
       summarise(cantidad_municipios = n()) %>%
       filter(cantidad_municipios >= 20)
## # A tibble: 22 x 2
##    entidad_federativa cantidad_municipios
##    <chr>                            <int>
##  1 Chiapas                            118
##  2 Chihuahua                           67
##  3 Coahuila                            38
##  4 Durango                             39
##  5 Guanajuato                          46
##  6 Guerrero                            81
##  7 Hidalgo                             84
##  8 Jalisco                            125
##  9 México                             125
## 10 Michoacán                          113
## # ... with 12 more rows
# Se selecciona Yucatán
yucatan_pobreza <- pobreza_coneval_clean %>% 
  filter(entidad_federativa == "Yucatán") %>%
  mutate(clave_de_municipio = str_replace(clave_de_municipio, "31", ""), 
         across(contains("Porcentaje"), ~ round(as.numeric(.), 2)))

## Mapa ----
yucatan_mapa <- readOGR(dsn = here::here("./maps/yucatan_qgis"), layer = "municipios_yucatan", encoding = "UTF-8")
## OGR data source with driver: ESRI Shapefile 
## Source: "C:\Users\Erick\Documents\projects\programacion\maps\yucatan_qgis", layer: "municipios_yucatan"
## with 106 features
## It has 4 fields
### Merge ----
yucatan_mapa@data <- merge(x = yucatan_mapa@data, 
      y = yucatan_pobreza, 
      by.x = "CVE_MUN", 
      by.y = "clave_de_municipio",
      sort = FALSE)

### Información para los popups ----
yucatan_mapa@data <- yucatan_mapa@data %>%
  mutate(popup_info_pobreza_2010 = paste0(sep = "",
                             "<br> <b>Municipio: </b>", municipio,
                             "<br> <b>Población en 2010: </b>", poblacion_2010, 
                             "<br> <b>Porcentaje de pobreza en 2010: </b>", pobreza_Porcentaje_2010), 
         popup_info_pobreza_2015 = paste0(sep = "",
                             "<br> <b>Municipio: </b>", municipio,
                             "<br> <b>Población en 2010: </b>", poblacion_2015, 
                             "<br> <b>Porcentaje de pobreza en 2015: </b>", pobreza_Porcentaje_2015),
         popup_info_pobreza_extrema_2010 = paste0(sep = "",
                             "<br> <b>Municipio: </b>", municipio,
                             "<br> <b>Población en 2010: </b>", poblacion_2010, 
                             "<br> <b>Porcentaje de pobreza extrema en 2010: </b>", pobreza_extrema_Porcentaje_2010),
         popup_info_pobreza_extrema_2015 = paste0(sep = "",
                             "<br> <b>Municipio: </b>", municipio,
                             "<br> <b>Población en 2010: </b>", poblacion_2015, 
                             "<br> <b>Porcentaje de pobreza extrema en 2015: </b>", pobreza_extrema_Porcentaje_2015)
         )

1. (10%) Para el año 2010, considerando la división (cut) por cuantiles, representar en un mapa la distribución de la pobreza de los municipios.

# Función para obtener los valores de los cuantiles con base en la función cut
cut_values <- function(vector, breaks = 5){
  na.omit(
    unique(
      as.numeric(
        unlist(
          str_extract_all(
            levels(
              cut(vector, 5) # función cut
              ), 
            "[0-9]*\\.?\\d*")
          )
        )
      )
    )
}

# Cortes 
cortes <- cut_values(yucatan_mapa@data$pobreza_Porcentaje_2010)
colores <- colorBin(palette = "YlOrRd", 
                     domain = as.numeric(yucatan_mapa@data$pobreza_Porcentaje_2010), 
                     na.color = "transparent", 
                     bins = cut_values(yucatan_mapa@data$pobreza_Porcentaje_2010)
)

leaflet(yucatan_mapa) %>%
  addTiles() %>%
  addPolygons(label = yucatan_mapa@data$municipio,
              popup = yucatan_mapa@data$popup_info_pobreza_2010,
              fillColor = colores(yucatan_mapa@data$pobreza_Porcentaje_2010),
              fillOpacity = 0.9)

2. (10%) Para el año 2015, considerando la división (cut) por cuantiles, representar en un mapa la distribución de la pobreza de los municipios.

cortes <- cut_values(yucatan_mapa@data$pobreza_Porcentaje_2015)
colores <- colorBin(palette = "YlGnBu", 
                     domain = as.numeric(yucatan_mapa@data$pobreza_Porcentaje_2015), 
                     na.color = "transparent", 
                     bins = cortes
)

leaflet(yucatan_mapa) %>%
  addTiles() %>%
  addPolygons(label = yucatan_mapa@data$municipio,
              popup = yucatan_mapa@data$popup_info_pobreza_2015,
              fillColor = colores(yucatan_mapa@data$pobreza_Porcentaje_2015),
              fillOpacity = 0.9)

3. (10%) Para el año 2010, considerando la división (cut) por cuantiles, representar en un mapa la distribución de la pobreza extrema de los municipios.

cortes <- cut_values(yucatan_mapa@data$pobreza_extrema_Porcentaje_2010)
colores <- colorBin(palette = "YlOrRd", 
                     domain = as.numeric(yucatan_mapa@data$pobreza_extrema_Porcentaje_2010), 
                     na.color = "transparent", 
                     bins = cortes
)

leaflet(yucatan_mapa) %>%
  addTiles() %>%
  addPolygons(label = yucatan_mapa@data$municipio,
              popup = yucatan_mapa@data$popup_info_pobreza_extrema_2010,
              fillColor = colores(yucatan_mapa@data$pobreza_extrema_Porcentaje_2010),
              fillOpacity = 0.9)

4. (10%) Para el año 2015, considerando la división (cut) por cuantiles, representar en un mapa la distribución de la pobreza extrema de los municipios del estado elegido.

cortes <- cut_values(yucatan_mapa@data$pobreza_extrema_Porcentaje_2015)
colores <- colorBin(palette = "YlGnBu", 
                     domain = as.numeric(yucatan_mapa@data$pobreza_extrema_Porcentaje_2015), 
                     na.color = "transparent", 
                     bins = cortes
)

leaflet(yucatan_mapa) %>%
  addTiles() %>%
  addPolygons(label = yucatan_mapa@data$municipio,
              popup = yucatan_mapa@data$popup_info_pobreza_extrema_2015,
              fillColor = colores(yucatan_mapa@data$pobreza_extrema_Porcentaje_2015),
              fillOpacity = 0.9)

5. (10%) ¿La pobreza extrema se distribuye de manera aleatoria en los municipios? Es decir, ¿hay grupos o zonas específicas del estado elegido donde se concentran porcentajes mayores de la pobreza extrema?

Los municipios del estado de Yucatán muestran un concentrado de pobreza distribuido principalmente en las zonas Sur y Este, sobretodo esta última zona. Los municipios de Chemax, Chichimilá, Tixcacalcupu, Chikindzonot son los que presentan un mayor porcentaje de sus poblaciones que se encuentran en situación de pobreza e incluso pobreza extrema. Coincidentemente, la capital, en ninguno de los casos para ambos años presenta un porcentaje alto o medio de su población.