Radiografía de la marginación: Análisis de Mier y Noriega, NL (Censo 2020)

#LIBRERÍAS
library("tidyverse")
library("knitr")
library("dplyr")
library("kableExtra")
library("ggplot2")
library("tidyr")
#Bases de datos 
datos <- read.csv("ITER_19CSV20.csv")
datos_MyN <- datos %>% 
  filter(NOM_MUN == "Mier y Noriega")
#Limpieza de datos 

datos_MyN <- datos_MyN %>%
  mutate(across(everything(), as.character)) %>%
  mutate(across(everything(), ~na_if(., "*"))) %>% # reemplazo de asteriscoa por NA
  mutate(across(-c(NOM_ENT, NOM_MUN, NOM_LOC, LONGITUD, LATITUD, ALTITUD), as.numeric)) #convirtiendo variables a numéricas

Análisis de la Estructura Poblacional y Educativa

1. Población total del municipio

datos_MyN <- datos_MyN[-1,] #elimino la observación "total municipio"

pobtotal <- sum(datos_MyN$POBTOT, na.rm=TRUE)
pobhombres <- sum(datos_MyN$POBMAS, na.rm=TRUE)
pobmujeres <- sum(datos_MyN$POBFEM, na.rm=TRUE)

print(paste("La población total del municipio es de", pobtotal, "habitantes, donde", pobmujeres,"son mujeres y", pobhombres, "son hombres (los datos de género faltantes corresponden a localidades con datos confidenciales)"))
## [1] "La población total del municipio es de 7671 habitantes, donde 3857 son mujeres y 3795 son hombres (los datos de género faltantes corresponden a localidades con datos confidenciales)"

2. Analfabetismo y escolaridad

#Porcentaje de analfabetismo por localidad y por sexo [P15YM_AN, P15YM_AN_F, P15YM_AN_M]
datos_MyN <- datos_MyN %>%
  mutate(
    pct_analf_total = (P15YM_AN / P_15YMAS) * 100,
    pct_analf_fem = (P15YM_AN_F / P_15YMAS_F) * 100,
    pct_analf_mas = (P15YM_AN_M / P_15YMAS_M) * 100
  )

#Grado promedio de escolaridad por localidad y por sexo[GRAPROES, GRAPROES_F, GRAPROES_M]

datos_MyN <- datos_MyN %>%
  mutate(
    grado_prom_total = GRAPROES,
    grado_prom_fem = GRAPROES_F,
    grado_prom_mas = GRAPROES_M
  )
#Tabla de rezago educativo
tabla <- datos_MyN %>%
  select(NOM_LOC, 
         pct_analf_total, pct_analf_fem, pct_analf_mas,
         grado_prom_total, grado_prom_fem, grado_prom_mas) %>%
  arrange(desc(pct_analf_total))

kable(tabla, 
      digits = 2, 
      caption = "Rezago Educativo por Localidad",
      col.names = c("Localidad", "% Analf. Total", "% Analf. mujeres", "% Analf. hombres", 
                    "Grado Prom.", "Grado mujeres", "Grado hombres"))
Rezago Educativo por Localidad
Localidad % Analf. Total % Analf. mujeres % Analf. hombres Grado Prom. Grado mujeres Grado hombres
La Cardona 23.84 23.57 24.10 5.30 5.59 5.02
San Isidro 22.45 22.82 22.07 5.69 5.64 5.75
La Presita de Cerros Blancos (La Presita) 20.45 17.86 22.83 5.83 6.26 5.43
Localidades de dos viviendas 16.67 40.00 0.00 4.42 3.80 4.86
Tapona Moreña 14.57 10.78 18.03 6.27 6.38 6.17
San José de Cuatro Caminos 13.64 13.33 13.89 5.98 5.40 6.47
San José de Medina (Rancho de Abajo) 12.50 20.00 0.00 6.13 7.20 4.33
El Gallito 12.08 15.28 9.09 5.44 5.71 5.19
El Refugio de Cerros Blancos 11.17 12.37 9.76 6.64 6.63 6.64
San Elías 11.11 11.11 11.11 6.11 7.78 4.44
Mier y Noriega 9.88 10.55 9.16 7.27 7.43 7.11
Cerros Blancos 9.81 8.65 10.99 6.65 6.99 6.29
Lagunita de Taberna 8.89 5.97 11.76 5.87 6.36 5.38
Las Palomas (Lajillas) 8.60 8.59 8.61 6.71 7.04 6.38
Jesús María del Terrero (El Lindero) 7.43 6.49 8.45 6.51 6.75 6.24
Las Mesas de San Juan 6.85 3.03 10.00 6.58 6.68 6.50
San Rafael de los Martínez 6.51 5.88 7.18 7.47 7.76 7.18
San Antonio de Alamitos 6.12 6.85 5.30 6.80 7.12 6.45
Dolores 5.50 6.67 4.28 7.46 7.53 7.39
La Joya del Zacate 3.33 7.69 0.00 6.13 6.15 6.12
Localidades de una vivienda 0.00 0.00 0.00 5.17 5.50 5.00
San Diego NA NA NA NA NA NA
Falfurrias (San Carlos) NA NA NA NA NA NA
La Tortuga NA NA NA NA NA NA
La Puerta de Guadalupe (Los Mireles) NA NA NA NA NA NA
Tanque Roto NA NA NA NA NA NA
Los García NA NA NA NA NA NA

Se nota que el porcentaje de analfabetismo más alto lo presenta la localidad de La Cardona donde del total de habitantes de 15 años o más el 23.84% no saben leer ni escribir, esta cifra supera por mucho el índice de analfabetismo a nivel nacional en México que al cierre del año pasado se situó en 3.8%

Por otro lado el grado de escolaridad más bajo se encuentra alrededor de 5 y el más alto se encuentra alrededor de 7, este último aún siendo el más alto, se encuentra por debajo del grado promedio de escolaridad a nivel nacional que es de 9.7 años.

Análisis de Vivienda y Servicios

3. Carencias e índice

Para medir las carencias sociales en la vivienda se eligieron las variables que indican calidad de piso de los hogares (que su material sea diferente a tierra), acceso a energía eleéctrica, acceso a agua entubada, acceso a internet y que se cuente con drenaje.

# TVIVHAB - total de viviendas habitadas
# VPH_PISOTI - viviendas con piso de tierra (calidad del piso)
# VPH_S_ELEC - viviendas sin energía eléctrica
# VPH_AGUADV - viviendas con agua entubada
# VPH_DRENAJ - viviendas con drenaje
# VPH_INTER - internet


# /////// Calculo de porcentajes /////////
datos_indice <- datos_MyN %>%
  filter(TVIVHAB > 0) %>% 
  mutate(
    pct_internet = (VPH_INTER / TVIVHAB) * 100,
    pct_piso_tierra = (VPH_PISOTI / TVIVHAB) * 100,
    pct_sin_luz = (VPH_S_ELEC / TVIVHAB) * 100,
    pct_con_agua = (VPH_AGUADV / TVIVHAB) * 100,
    pct_con_drenaje = (VPH_DRENAJ / TVIVHAB) * 100,
    
    #/////// índice ///////
    
    indic_internet = if_else(pct_internet < 50, 1, 0), # Si menos del 50% tiene internet -> 1 punto
    indic_piso = if_else(pct_piso_tierra > 50, 1, 0), # Si más del 50% tiene piso de tierra -> 1 punto
    indic_luz = if_else(pct_sin_luz > 50, 1, 0),  #Si más del 50% no tiene luz -> 1 punto
    indic_agua = if_else(pct_con_agua < 50, 1, 0),  # Si menos del 50% tiene agua -> 1 punto
    indic_drenaje = if_else(pct_con_drenaje < 50, 1, 0)  # Si menos del 50% tiene drenaje -> 1 punto
  ) %>%
  
  mutate(
    INDICE_CARENCIA = indic_internet + indic_piso + indic_luz + indic_agua + indic_drenaje
  )

# ////////////////// Tabla resumen ////////////////
tabla_indice <- datos_indice %>%
  select(NOM_LOC, TVIVHAB, 
         indic_internet, indic_piso, indic_luz, indic_agua, indic_drenaje, 
         INDICE_CARENCIA) %>%
  arrange(desc(INDICE_CARENCIA), desc(TVIVHAB)) 

kable(tabla_indice, 
      align = "c",
      caption = "Índice de Carencias Sociales por Localidad (Escala 0-5)",
      col.names = c("Localidad", "Viviendas", 
                    "Falta Internet", "Piso de tierra", "Falta luz", "Falta agua", "Falta drenaje",
                    "ÍNDICE TOTAL"))
Índice de Carencias Sociales por Localidad (Escala 0-5)
Localidad Viviendas Falta Internet Piso de tierra Falta luz Falta agua Falta drenaje ÍNDICE TOTAL
Tapona Moreña 118 1 0 0 1 1 3
Las Mesas de San Juan 22 1 0 0 1 1 3
Localidades de dos viviendas 6 1 0 0 1 1 3
Las Palomas (Lajillas) 199 1 0 0 0 1 2
San Rafael de los Martínez 155 1 0 0 0 1 2
Dolores 142 1 0 0 0 1 2
La Presita de Cerros Blancos (La Presita) 129 1 0 0 0 1 2
El Refugio de Cerros Blancos 129 1 0 0 0 1 2
Cerros Blancos 122 1 0 0 0 1 2
San Isidro 102 1 0 0 1 0 2
San Antonio de Alamitos 92 1 0 0 0 1 2
El Gallito 54 1 0 0 0 1 2
Jesús María del Terrero (El Lindero) 51 1 0 0 0 1 2
Lagunita de Taberna 43 1 0 0 0 1 2
La Joya del Zacate 12 1 0 0 1 0 2
San Elías 7 1 0 0 1 0 2
San José de Medina (Rancho de Abajo) 3 1 0 0 0 1 2
Localidades de una vivienda 3 1 0 0 1 0 2
Mier y Noriega 335 1 0 0 0 0 1
La Cardona 131 1 0 0 0 0 1
San José de Cuatro Caminos 26 1 0 0 0 0 1
La Puerta de Guadalupe (Los Mireles) 2 NA NA NA NA NA NA
Tanque Roto 2 NA NA NA NA NA NA
Los García 2 NA NA NA NA NA NA
San Diego 1 NA NA NA NA NA NA
Falfurrias (San Carlos) 1 NA NA NA NA NA NA
La Tortuga 1 NA NA NA NA NA NA

El índice se construye de la siguiente manera: con un valor de 0-5, 5 indica el mayor índice de carencia, es decir que de las cinco variables que se toman como medida para calidad de vivienda, la localidad carece de las cinco.

Para determinar si hay o no carencia en cada localidad se tomó como criterio que al menos el 50% de las viviendas tuvieran dicha carencia.

Es importante notar que todas las localidades tienen al menos una carencia importante : accedo a Internet

4. Semáforo de índice de carencias por localidad

tabla_indice %>%
  select(NOM_LOC, INDICE_CARENCIA) %>%
  mutate(
    INDICE_CARENCIA = cell_spec(
      INDICE_CARENCIA, 
      format = "html",
      color = "white", 
      bold = TRUE,
      align = "center",
      background = case_when(
        INDICE_CARENCIA == 0 ~ "#228B22", 
        INDICE_CARENCIA == 1 ~ "#9ACD32", 
        INDICE_CARENCIA == 2 ~ "#FFD700", 
        INDICE_CARENCIA == 3 ~ "#FF8C00", 
        INDICE_CARENCIA == 4 ~ "#FF4500", 
        INDICE_CARENCIA == 5 ~ "#B22222", 
        TRUE ~ "grey"
      )
    )
  ) %>%
  
  kable(
    escape = FALSE,  
    format = "html", 
    align = "cl",   
    caption = "Semáforo de Vulnerabilidad Social por Localidad",
    col.names = c("Localidad", "Índice de Carencia (0-5)")
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"), 
    full_width = FALSE,
    position = "center"
  ) %>%
  column_spec(2, width = "5cm")
Semáforo de Vulnerabilidad Social por Localidad
Localidad Índice de Carencia (0-5)
Tapona Moreña 3
Las Mesas de San Juan 3
Localidades de dos viviendas 3
Las Palomas (Lajillas) 2
San Rafael de los Martínez 2
Dolores 2
La Presita de Cerros Blancos (La Presita) 2
El Refugio de Cerros Blancos 2
Cerros Blancos 2
San Isidro 2
San Antonio de Alamitos 2
El Gallito 2
Jesús María del Terrero (El Lindero) 2
Lagunita de Taberna 2
La Joya del Zacate 2
San Elías 2
San José de Medina (Rancho de Abajo) 2
Localidades de una vivienda 2
Mier y Noriega 1
La Cardona 1
San José de Cuatro Caminos 1
La Puerta de Guadalupe (Los Mireles) NA
Tanque Roto NA
Los García NA
San Diego NA
Falfurrias (San Carlos) NA
La Tortuga NA

Análisis comparativo : cabecera vs. localidades rurales

datos_comparativo <- datos_indice %>%
  mutate(
    TIPO_LOC = if_else(NOM_LOC == "Mier y Noriega", "Cabecera Municipal", "Localidad Rural")
  )

# ///// comparación de medias ///////

tabla_brechas <- datos_comparativo %>%
  group_by(TIPO_LOC) %>%
  summarise(
    Num_Localidades = n(),
    Analfabetismo_Prom = mean(pct_analf_total, na.rm = TRUE),  # Promedios de Educación
    Escolaridad_Prom = mean(grado_prom_total, na.rm = TRUE),
    Indice_Carencia_Prom = mean(INDICE_CARENCIA, na.rm = TRUE)   # Promedio de Carencias
  )

kable(tabla_brechas, 
      digits = 2,
      caption = "Brechas de Desigualdad: Cabecera vs. Resto del Municipio",
      col.names = c("Tipo de Localidad", "N° Loc.", 
                    "% Analfabetismo", "Grado Escolaridad", "Índice Carencias Promedio")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "bordered"), full_width = F) %>%
  row_spec(which(tabla_brechas$TIPO_LOC == "Cabecera Municipal"), bold = T, color = "white", background = "#2E8B57") 
Brechas de Desigualdad: Cabecera vs. Resto del Municipio
Tipo de Localidad N° Loc. % Analfabetismo Grado Escolaridad Índice Carencias Promedio
Cabecera Municipal 1 9.88 7.27 1.00
Localidad Rural 26 11.08 6.16 2.05

Se agruparon todas las localidades como rurales para hacer una comparación de medias entre la cabecera municipal “Mier y Noriega” y el resto de localidades en el municipio. Se observa que hay un punto de diferencia tanto en el grado promedio de escolaridad como en el índice de carencias, y una diferencia de dos porciento en analfabetismo.

datos_grafico <- tabla_brechas %>%
  select(TIPO_LOC, Escolaridad_Prom, Indice_Carencia_Prom) %>%
  pivot_longer(cols = c(Escolaridad_Prom, Indice_Carencia_Prom), 
               names_to = "Indicador", 
               values_to = "Valor") %>%
  mutate(Indicador = recode(Indicador, 
                            "Escolaridad_Prom" = "Grado de Escolaridad",
                            "Indice_Carencia_Prom" = "Índice de Carencias"))

ggplot(datos_grafico, aes(x = TIPO_LOC, y = Valor, fill = TIPO_LOC)) +
  geom_bar(stat = "identity", position = "dodge", width = 0.6) +
  facet_wrap(~Indicador, scales = "free_y") + 
  scale_fill_manual(values = c("Cabecera Municipal" = "#1f77b4", "Localidad Rural" = "#ff7f0e")) +
  labs(
    title = "Contraste de Desarrollo: cabecera vs. Periferia",
    subtitle = "Comparación de nivel educativo y acceso a servicios básicos",
    x = "",
    y = "Promedio",
    fill = "Zona"
  ) +
  theme_minimal() +
  theme(legend.position = "bottom")

Para validar que la diferencia de medias es significativa estadísticamente se realizó una prueba t-test para diferencia de medias

valor_cabecera_carencia <- datos_comparativo$INDICE_CARENCIA[datos_comparativo$TIPO_LOC == "Cabecera Municipal"]
distribucion_rural_carencia <- datos_comparativo$INDICE_CARENCIA[datos_comparativo$TIPO_LOC == "Localidad Rural"]

# Comparamos si la media de las rurales es distinta al valor exacto de la cabecera
prueba_t <- t.test(distribucion_rural_carencia, mu = valor_cabecera_carencia)

prueba_t
## 
##  One Sample t-test
## 
## data:  distribucion_rural_carencia
## t = 9.1998, df = 19, p-value = 1.982e-08
## alternative hypothesis: true mean is not equal to 1
## 95 percent confidence interval:
##  1.811117 2.288883
## sample estimates:
## mean of x 
##      2.05

Como se observa, el p-value con un valor menor a 0.05 nos indica que la diferencia de medias sí es estadísticamente significativa, por lo que se puede inferir que en las zonas rurales, a comparación de la cabecera municipal, presentan un mayor rezago educativo y un mayor índice de carencias en la vivienda.


Con todos los resultados presentados, se puede concluir que los niveles de rezago educativo en todo el municipio de Mier y Noriega son alarmantes, pues es notoria la diferencia con las medias nacionales, con promedios de escolaridad que apenas alcanzan el nivel básico.

Asimismo, las carencias básicas (consideradas en este reporte) en calidad de vivienda se presentan en todas las localidades del municipio,, por lo que el proyecto de instalar internet en la zona es necesario.