Introducción

Mier y Noriega es un municipio ubicado al sur de Nuevo León y a pesar de ser uno de los estados más industrializados del país, este municipio cuenta con indicadores de marginación muy altos comparados con la realidad de la Zona Metropolitana de Monterrey.

Este reporte analiza los datos del Censo de Población y Vivienda 2020 del INEGI, usando el archivo ITER (Indicadores de Resultados por Localidad), con el objetivo de tener una visión más amplia de la situación social, educativa y de vivienda de sus localidades y así evidenciar las brechas de desigualdad existentes.

1. Preparación del entorno

Descargamos las librerías necesarias para nuestro análisis: - tidyverse: para manipulación y visualización de datos - DT: para crear tablas interactivas en HTML - knitr / kableExtra: para tablas con formato profesional - scales: para dar formato a números y porcentajes en gráficas

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.2.0     ✔ readr     2.1.6
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.2     ✔ tibble    3.3.1
## ✔ lubridate 1.9.5     ✔ tidyr     1.3.2
## ✔ purrr     1.2.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(DT)
library(knitr)
library(kableExtra)
## 
## Adjuntando el paquete: 'kableExtra'
## 
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(scales)
## 
## Adjuntando el paquete: 'scales'
## 
## The following object is masked from 'package:purrr':
## 
##     discard
## 
## The following object is masked from 'package:readr':
## 
##     col_factor

2. Descarga y Filtrado de Información

2.1 Descarga del Dataset

Lo primero que debemos hacer es descargar el archivo CSV del ITER de Nuevo León. Esto lo cargamos en RStudio y verificamos que se haya descargado correctamente.

iter_nl <- read_csv("ITER_19CSV20.csv",
  # Usamos locale para manejar correctamente caracteres especiales (acentos, ñ)
  locale = locale(encoding = "UTF-8"),
  # Suprimimos los mensajes de tipo de columna para no saturar el reporte
  show_col_types = FALSE
)

# Verificamos que el archivo se cargó correctamente
cat("Dimensiones del dataset completo:", nrow(iter_nl), "filas y", ncol(iter_nl), "columnas\n")
## Dimensiones del dataset completo: 4974 filas y 286 columnas
cat("Municipios disponibles (muestra):", paste(unique(iter_nl$NOM_MUN)[1:5], collapse = ", "), "...\n")
## Municipios disponibles (muestra): Total de la entidad Nuevo León, Abasolo, Agualeguas, Los Aldamas, Allende ...

#2.2 Filtrado para Mier y Noriega Ahora filtramos para que solo nos aparezcan las filas que pertenezcan a Mier y Noriega

mier_raw <- iter_nl %>%
  filter(NOM_MUN == "Mier y Noriega")
head(mier_raw)
## # A tibble: 6 × 286
##   ENTIDAD NOM_ENT    MUN   NOM_MUN LOC   NOM_LOC LONGITUD LATITUD ALTITUD POBTOT
##     <dbl> <chr>      <chr> <chr>   <chr> <chr>   <chr>    <chr>   <chr>    <dbl>
## 1      19 Nuevo León 036   Mier y… 0000  Total …  <NA>     <NA>   <NA>      7652
## 2      19 Nuevo León 036   Mier y… 0001  Mier y… "100°07… "23°25… 1669      1180
## 3      19 Nuevo León 036   Mier y… 0003  La Car… "99°58'… "23°24… 1916       479
## 4      19 Nuevo León 036   Mier y… 0004  Cerros… "100°11… "23°20… 1336       586
## 5      19 Nuevo León 036   Mier y… 0005  Dolores "100°13… "23°30… 1532       549
## 6      19 Nuevo León 036   Mier y… 0007  El Gal… "100°02… "23°27… 1958       206
## # ℹ 276 more variables: POBFEM <chr>, POBMAS <chr>, P_0A2 <chr>, P_0A2_F <chr>,
## #   P_0A2_M <chr>, P_3YMAS <chr>, P_3YMAS_F <chr>, P_3YMAS_M <chr>,
## #   P_5YMAS <chr>, P_5YMAS_F <chr>, P_5YMAS_M <chr>, P_12YMAS <chr>,
## #   P_12YMAS_F <chr>, P_12YMAS_M <chr>, P_15YMAS <chr>, P_15YMAS_F <chr>,
## #   P_15YMAS_M <chr>, P_18YMAS <chr>, P_18YMAS_F <chr>, P_18YMAS_M <chr>,
## #   P_3A5 <chr>, P_3A5_F <chr>, P_3A5_M <chr>, P_6A11 <chr>, P_6A11_F <chr>,
## #   P_6A11_M <chr>, P_8A14 <chr>, P_8A14_F <chr>, P_8A14_M <chr>, …

¿Cuántas localidades tenemos?

cat("Registros totales del municipio (incluyendo especiales):", nrow(mier_raw), "\n")
## Registros totales del municipio (incluyendo especiales): 28

##3. Exploración y Limpieza de Datos

El ITER utiliza el símbolo * (asterisco) para proteger datos de localidades pequeñas donde publicar un valor permitiría identificar a personas concretas (confidencialidad estadística). Nuestra estrategia es convertir estos valores a NA, lo que en R significa “dato no disponible”. Usamos NA y no cero porque cero implicaría que el valor es literalmente ninguno, lo cual sería información falsa; NA en cambio nos dice honestamente que el dato existe pero no podemos conocerlo.

#3.1 Definir variables relevantes Tras analizar el índice de variables del ITER, se identificaron algunas que resultan clave para entender a mayor profundidad cómo se compone el municipio, estas se separan en categorías.: de localidad, eje demográfico, educación, población indígena, fecundidad, discapacidad, actividad económica, migración interestatal, salud, vivienda y servicios básicos.

# Seleccionamos las variables necesarias para todos los ejes del análisis.
# Se eligió el conjunto mínimo suficiente para responder las preguntas planteadas,
# evitando incluir las más de 200 columnas del ITER que añadirían ruido innecesario.

variables_clave <- c(
  # Identificadores de localidad
  "LOC", "NOM_LOC",

  # Población general (eje demográfico)
  "POBTOT",       # Población total
  "POBFEM",       # Población femenina
  "POBMAS",       # Población masculina

  # Educación
  "P_15YMAS",     # Población de 15 años y más (denominador para % analfabetismo)
  "P_15YMAS_F",   # Ídem, mujeres
  "P_15YMAS_M",   # Ídem, hombres
  "P15YM_AN",     # Analfabetas de 15 años y más (total)
  "P15YM_AN_F",   # Analfabetas de 15 años y más (mujeres)
  "P15YM_AN_M",   # Analfabetas de 15 años y más (hombres)
  "GRAPROES",     # Grado promedio de escolaridad (total)
  "GRAPROES_F",   # Grado promedio de escolaridad (mujeres)
  "GRAPROES_M",   # Grado promedio de escolaridad (hombres)

  # Población indígena
  "P3YM_HLI",     # Personas de 3+ años que hablan lengua indígena
  "P3HLINHE",     # Hablantes de lengua indígena que NO hablan español

  # Discapacidad
  "PCON_DISC",    # Personas con alguna discapacidad

  # Actividad económica
  "PEA",          # Población Económicamente Activa
  "PEA_F",        # PEA femenina
  "PEA_M",        # PEA masculina
  "PE_INAC",      # Población No Económicamente Activa
  "PE_INAC_F",    # PE_INAC femenina
  "PE_INAC_M",    # PE_INAC masculina

  # Salud
  "PSINDER",      # Personas sin afiliación a servicios de salud
  "PDER_SS",      # Personas afiliada a servicios de salud

  # Migración interestatal
  "PNACOE",       # Personas nacidas en otra entidad federativa

  # Vivienda y servicios básicos
  "TVIVPARHAB",   # Total de viviendas particulares habitadas (denominador)
  "VPH_AGUAFV",   # Viviendas sin agua entubada dentro de la vivienda
  "VPH_NODREN",   # Viviendas sin drenaje
  "VPH_INTER"     # Viviendas con internet
)

#3.2 Tratamiento de Datos 1. Seleccionamos solo nuestras variables de interés 2. Convertimos TODO a character para poder reemplazar “*” y “N/D” por NA 3. Convertimos a numérico las columnas que lo requieren (todo menos NOM_LOC)

mier_clean <- mier_raw %>%
  select(all_of(variables_clave)) %>%
  mutate(across(everything(), ~na_if(as.character(.), "*"))) %>%
  mutate(across(everything(), ~na_if(., "N/D"))) %>%
  mutate(across(-NOM_LOC, ~as.numeric(.)))

# Revisamos cuántos valores NA quedaron por columna
cat("Valores NA por columna después de la limpieza:\n")
## Valores NA por columna después de la limpieza:
colSums(is.na(mier_clean)) %>%
  .[. > 0] %>%
  print()
##     POBFEM     POBMAS   P_15YMAS P_15YMAS_F P_15YMAS_M   P15YM_AN P15YM_AN_F 
##          6          6          6          6          6          6          6 
## P15YM_AN_M   GRAPROES GRAPROES_F GRAPROES_M   P3YM_HLI   P3HLINHE  PCON_DISC 
##          6          6          6          6          6          6          6 
##        PEA      PEA_F      PEA_M    PE_INAC  PE_INAC_F  PE_INAC_M    PSINDER 
##          6          6          6          6          6          6          6 
##    PDER_SS     PNACOE TVIVPARHAB VPH_AGUAFV VPH_NODREN  VPH_INTER 
##          6          6          6          6          6          6

¿Por qué en todas estas variables el resultado es 6? Esto se explica porque hay 6 localidades que tienen asterisco en absolutamente todas las variables: San Diego, Falfurrias (San Carlos), La Tortuga, La Puerta de Guadalupe, Tanque Roto y Los García. Se hace porque son localidades de 1-5 habitantes y revelar esta información puede vulnerar su confidencialidad. Estas localidades suman un total de 19 personas en un municipio de 5652 personas, menos del 0.3% de la población total, por lo que su ausencia no distorsionará en gran medida los análisis posteriores.

4. Análisis de la Estructura Poblacional y Demográfica

4.1 Resumen Poblacional del Municipio

# Extraemos los totales municipales ANTES de filtrar los registros especiales
# LOC = 0000 es el resumen oficial que el INEGI ya calculó para todo el municipio
total_mun <- mier_clean %>%
  filter(LOC == 0) %>%
  mutate(across(-NOM_LOC, ~as.numeric(na_if(as.character(.), "*"))))

cat("Población total del municipio:", total_mun$POBTOT, "\n")
## Población total del municipio: 7652
cat("Mujeres:", total_mun$POBFEM, "\n")
## Mujeres: 3857
cat("Hombres:", total_mun$POBMAS, "\n")
## Hombres: 3795

4.2 Filtramos localidades de Mier y Noriega

Para entender cada una de las localidades que componen al municipio, tenemos que eliminar cuatro tipos de registros:

-LOC= 0000 → “Total del Municipio”: resumen agregado de todas las localidades. Si lo incluimos, duplicaríamos la población y distorsionaríamos cualquier cálculo de promedios o totales.

-LOC = 9998 → “Localidades de una vivienda”: el INEGI agrupa aquí todas las localidades con una sola vivienda por confidencialidad estadística. No representan una comunidad real con identidad propia.

-LOC = 9999 → “Localidades de dos viviendas”: mismo criterio que el anterior.

-Los municipios cuyas variables solo son NAs (San Diego, Falfurrias (San Carlos), La Tortuga, La Puerta de Guadalupe, Tanque Roto y Los García). Estimar sus particularidades es imposible, así que dejaremos de tomarlos en cuenta en el análisis.

mier_localidades <- mier_clean %>%
  filter(!LOC %in% c(0, 9998, 9999)) %>%
  filter(!NOM_LOC %in% c(
    "San Diego",
    "Falfurrias (San Carlos)",
    "La Tortuga",
    "La Puerta de Guadalupe (Los Mireles)",
    "Tanque Roto",
    "Los García"
  ))

cat("Localidades reales con datos propios:", nrow(mier_localidades), "\n")
## Localidades reales con datos propios: 19

4.3 Resumen Poblacional por Localidad

Aquí se presenta la población total, población femenina y masculina de cada una de las localidades que estamos analizando.

print(mier_localidades %>%
  select(NOM_LOC, POBTOT, POBFEM, POBMAS))
## # A tibble: 19 × 4
##    NOM_LOC                                   POBTOT POBFEM POBMAS
##    <chr>                                      <dbl>  <dbl>  <dbl>
##  1 Mier y Noriega                              1180    604    576
##  2 La Cardona                                   479    232    247
##  3 Cerros Blancos                               586    297    289
##  4 Dolores                                      549    277    272
##  5 El Gallito                                   206     91    115
##  6 Jesús María del Terrero (El Lindero)         215    108    107
##  7 La Joya del Zacate                            45     21     24
##  8 Lagunita de Taberna                          208     93    115
##  9 Las Mesas de San Juan                        124     57     67
## 10 Las Palomas (Lajillas)                       865    447    418
## 11 La Presita de Cerros Blancos (La Presita)    515    243    272
## 12 El Refugio de Cerros Blancos                 531    290    241
## 13 San Antonio de Alamitos                      412    212    200
## 14 San Elías                                     30     14     16
## 15 San Isidro                                   414    214    200
## 16 San José de Cuatro Caminos                    84     39     45
## 17 San José de Medina (Rancho de Abajo)          14      9      5
## 18 San Rafael de los Martínez                   657    345    312
## 19 Tapona Moreña                                519    256    263

4.4 Indicadores de educación (para cada localidad)

# Calculamos los indicadores educativos por localidad.
# % Analfabetismo = (Población analfabeta 15+ / Población total 15+) * 100
# GRAPROES ya viene calculado por el INEGI como promedio de años de escolaridad aprobados.

mier_educacion <- mier_localidades %>%
  mutate(
    pct_analfabetismo = round((P15YM_AN / P_15YMAS) * 100, 2)
  ) %>%
  select(NOM_LOC, POBTOT, P_15YMAS, P15YM_AN, pct_analfabetismo, GRAPROES) %>%
  arrange(desc(pct_analfabetismo))

datatable(
  mier_educacion %>%
    rename(
      "Localidad"               = NOM_LOC,
      "Pob. Total"              = POBTOT,
      "Pob. 15+ años"           = P_15YMAS,
      "Analfabetas 15+"         = P15YM_AN,
      "% Analfabetismo"         = pct_analfabetismo,
      "Grado Prom. Escolaridad" = GRAPROES
    ),
  caption  = "Rezago educativo por localidad — Mayor analfabetismo primero",
  options  = list(
    pageLength     = 10,
    scrollX        = TRUE,
    scrollY        = "300px",
    scrollCollapse = TRUE
  ),
  rownames = FALSE
) %>%
  formatStyle("% Analfabetismo",
    backgroundColor = styleInterval(c(20, 40), c("#d4edda", "#fff3cd", "#f8d7da"))
  ) %>%
  formatStyle("% Analfabetismo",
    fontWeight = styleInterval(20, c("normal", "bold"))
  )

En esta tabla podemos observar que las 3 localidades con mayor rezago educativo de acuerdo con el porcentaje de analfabetismo son: La Cardona (23.84%), San Isidro (22.45%) y La Presita de Cerros Blancos (20.45%).

Ahora surge la pregunta: ¿Existirá una diferencia en el porcentaje de analfabetismo entre hombres y mujeres?

mier_clean %>%
  filter(LOC == 0) %>%
  mutate(
    pct_analf_f = round((P15YM_AN_F / P_15YMAS_F) * 100, 2),
    pct_analf_m = round((P15YM_AN_M / P_15YMAS_M) * 100, 2),
    brecha      = round(pct_analf_f - pct_analf_m, 2)
  ) %>%
  select(NOM_LOC, pct_analf_f, pct_analf_m, brecha) %>%
  rename(
    "Municipio"        = NOM_LOC,
    "% Analf. Mujeres" = pct_analf_f,
    "% Analf. Hombres" = pct_analf_m,
    "Brecha (M - H)"   = brecha
  ) %>%
  kable(caption = "Analfabetismo por sexo — Total del municipio") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
Analfabetismo por sexo — Total del municipio
Municipio % Analf. Mujeres % Analf. Hombres Brecha (M - H)
Total del Municipio 11.33 11.93 -0.6

Observamos que los hombres tienen un mayor porcentaje de analfabetismo (11.93%) comparado con las mujeres (11.33%). Pensaríamos que las mujeres presentarían un mayor porcentaje de analfabetismo debido a condiciones estructurales. Sin embargo, los resultados no arrojan evidencias que apoyen esta teoría.

Ahora filtramos para obtener el porcentaje de analfabetismo por sexo en la localidad de Cerros Blancos.

mier_localidades %>%
  filter(LOC == 4) %>%
  mutate(
    pct_analf_f = round((P15YM_AN_F / P_15YMAS_F) * 100, 2),
    pct_analf_m = round((P15YM_AN_M / P_15YMAS_M) * 100, 2),
    brecha      = round(pct_analf_f - pct_analf_m, 2)
  ) %>%
  select(NOM_LOC, pct_analf_f, pct_analf_m, brecha) %>%
  rename(
    "Municipio"        = NOM_LOC,
    "% Analf. Mujeres" = pct_analf_f,
    "% Analf. Hombres" = pct_analf_m,
    "Brecha (M - H)"   = brecha
  ) %>%
  kable(caption = "Analfabetismo por sexo — Total de la localidad de Cerros Blancos") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
Analfabetismo por sexo — Total de la localidad de Cerros Blancos
Municipio % Analf. Mujeres % Analf. Hombres Brecha (M - H)
Cerros Blancos 8.65 10.99 -2.34

Observamos que en la localidad de Cerros Blancos, el porcentaje de mujeres con analfabetismo sigue siendo menor (8.65%) que el de los hombres (10.99%).

5. Análisis de Vivienda y Servicios

Se calcula el % de viviendas SIN cada servicio VPH_AGUAFV y VPH_NODREN ya miden directamente las viviendas SIN el servicio,por lo que no es necesario restar. Solo VPH_INTER requiere resta porque el ITER no tiene una variable directa de viviendas sin internet.TVIVPARHAB es el denominador: total de viviendas particulares habitadas.

# Calculamos el % de viviendas SIN cada servicio.
# VPH_AGUAFV y VPH_NODREN ya miden directamente las viviendas SIN el servicio,
# por lo que no es necesario restar. Solo VPH_INTER requiere resta porque
# el ITER no tiene una variable directa de viviendas sin internet.
# TVIVPARHAB es el denominador: total de viviendas particulares habitadas.

mier_vivienda <- mier_localidades %>%
  mutate(
    sin_agua     = round((VPH_AGUAFV / TVIVPARHAB) * 100, 2),
    sin_drenaje  = round((VPH_NODREN / TVIVPARHAB) * 100, 2),
    sin_internet = round(((TVIVPARHAB - VPH_INTER)  / TVIVPARHAB) * 100, 2),
    # Índice de Carencia: suma de los tres porcentajes.
    # Máximo teórico: 300 (sin ninguno de los tres servicios).
    indice_carencia = round(sin_agua + sin_drenaje + sin_internet, 1)
  ) %>%
  select(NOM_LOC, TVIVPARHAB, sin_agua, sin_drenaje, sin_internet, indice_carencia) %>%
  arrange(desc(indice_carencia))

datatable(
  mier_vivienda %>%
    rename(
      "Localidad"          = NOM_LOC,
      "Viv. Habitadas"     = TVIVPARHAB,
      "% Sin Agua"         = sin_agua,
      "% Sin Drenaje"      = sin_drenaje,
      "% Sin Internet"     = sin_internet,
      "Índice de Carencia" = indice_carencia
    ),
  caption  = "Carencias de servicios en vivienda — Mayor carencia primero",
  options  = list(pageLength = 10, scrollX = TRUE, scrollY = "300px", scrollCollapse = TRUE),
  rownames = FALSE
) %>%
  formatStyle("Índice de Carencia",
    backgroundColor = styleInterval(c(150, 250), c("#d4edda", "#fff3cd", "#f8d7da"))
  )

De acuerdo con el “Índice de Carencias” que va de 0-300, las localidades más rezagadas de Mier y Noriega son: Las Mesas de San Juan (300), San José de Medina (233) y Lagunita de Taberna (220).

Para la localidad de Cerros Blancos, el índice de carencias llega a 183.6, lo cual sigue siendo bastante elevado. Es interesante observar que solo el 4.1% de las viviendas no tiene agua, mientras que 80% de ellas no cuenta con drenaje.

6. Análisis Comparativo: Cabecera vs. Localidades Rurales

Realizamos un análisis comparativo entre la cabecera municipal (LOC== 1) y las localidades rurales (>1) para evaluar si existen brechas significativas en cuanto a temas de servicios y educación.

# Creamos la variable categórica que distingue la cabecera del resto.
# LOC == 1 corresponde a la cabecera municipal (misma localidad que el municipio).

mier_localidades <- mier_localidades %>%
  mutate(
    tipo = if_else(LOC == 1, "Cabecera Municipal", "Localidad Rural")
  )

# Calculamos los indicadores necesarios para la comparación
mier_comparativo <- mier_localidades %>%
  mutate(
    pct_analfabetismo = round((P15YM_AN   / P_15YMAS)   * 100, 2),
    pct_sin_agua      = round((VPH_AGUAFV / TVIVPARHAB) * 100, 2),
    pct_sin_drenaje   = round((VPH_NODREN / TVIVPARHAB) * 100, 2),
    pct_sin_internet  = round(((TVIVPARHAB - VPH_INTER) / TVIVPARHAB) * 100, 2)
  ) %>%
  group_by(tipo) %>%
  summarise(
    `N° Localidades`    = n(),
    `% Analfabetismo`   = round(mean(pct_analfabetismo, na.rm = TRUE), 2),
    `Escolaridad Prom.` = round(mean(GRAPROES,          na.rm = TRUE), 2),
    `% Sin Agua`        = round(mean(pct_sin_agua,      na.rm = TRUE), 2),
    `% Sin Drenaje`     = round(mean(pct_sin_drenaje,   na.rm = TRUE), 2),
    `% Sin Internet`    = round(mean(pct_sin_internet,  na.rm = TRUE), 2)
  ) %>%
  rename(Tipo = tipo)

mier_comparativo %>%
  kable(caption = "Comparación de indicadores: Cabecera Municipal vs. Localidades Rurales") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = TRUE) %>%
  column_spec(1, bold = TRUE)
Comparación de indicadores: Cabecera Municipal vs. Localidades Rurales
Tipo N° Localidades % Analfabetismo Escolaridad Prom. % Sin Agua % Sin Drenaje % Sin Internet
Cabecera Municipal 1 9.88 7.27 3.88 14.63 63.28
Localidad Rural 18 11.38 6.31 33.32 60.72 96.89

Observamos que la cabecera municipal presenta un porcentaje de analfabetismo menor (9.88%) a comparación de las localidades rurales (11.38%). Asimismo, la cabecera tiene más años de escolaridad promedio (7.27) a comparación del resto de localidades (6.31).

En el tema de servicios, la cabecera también presenta mejores condiciones: solo el 3.88% de las viviendas no tienen agua mientas que el resto de localidades esta cifra alcanza un 33.32%. En la cabecera el porcentaje de hogares sin drenaje es del 14.63% mientras que en las localidades rurales alcanzan el 60.72%. Por último, en la cabecera el 63.28% de las viviendas no tienen internet, mientras que en el resto de localidades la cifra sube al 96.89%.

6. Análisis de variables extra

Se procede a analizar algunas variables que durante el análisis resultaron interesantes y se quiere conocer más sobre ellas, para tener un contexto más completo del municipio

###6.1 Cantidad de personas que hablan alguna lengua indígena en el municipio Realizamos una tabla con el top 5 de localidades con mayor cantidad de personas que hablen alguna lengua indígena.

mier_localidades %>%
  select(NOM_LOC, POBTOT, P3YM_HLI) %>%
  mutate(
    pct_hli = round((P3YM_HLI / POBTOT) * 100, 2)
  ) %>%
  arrange(desc(P3YM_HLI)) %>%
  head(5) %>%
  rename(
    "Localidad"           = NOM_LOC,
    "Pob. Total"          = POBTOT,
    "Hablan Lengua Ind."  = P3YM_HLI,
    "% Hablan Lengua Ind."= pct_hli
  ) %>%
  kable(caption = "Top 5 localidades con mayor población hablante de lengua indígena") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
Top 5 localidades con mayor población hablante de lengua indígena
Localidad Pob. Total Hablan Lengua Ind. % Hablan Lengua Ind.
Mier y Noriega 1180 4 0.34
Dolores 549 1 0.18
La Cardona 479 0 0.00
Cerros Blancos 586 0 0.00
El Gallito 206 0 0.00

De acuerdo a los resultados obtenidos, solo hay 5 personas que hablan alguna lengua indígena en todo el municipio.

###6.2 Cantidad de personas con discapacidad en las localidades

# PCON_DISC = Personas con algún tipo de discapacidad reconocida.
# En zonas rurales marginadas la discapacidad tiende a estar subatendida
# por la ausencia de servicios de rehabilitación y atención especializada cercanos.
# Un porcentaje alto también puede reflejar envejecimiento poblacional acelerado.

mier_localidades %>%
  mutate(
    pct_disc = round((PCON_DISC / POBTOT) * 100, 2)
  ) %>%
  select(NOM_LOC, POBTOT, PCON_DISC, pct_disc) %>%
  filter(!is.na(PCON_DISC)) %>%
  arrange(desc(pct_disc)) %>%
  rename(
    "Localidad"         = NOM_LOC,
    "Pob. Total"        = POBTOT,
    "Con Discapacidad"  = PCON_DISC,
    "% Discapacidad"    = pct_disc
  ) %>%
  kable(caption = "Tabla 4. Población con discapacidad por localidad") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Tabla 4. Población con discapacidad por localidad
Localidad Pob. Total Con Discapacidad % Discapacidad
San Elías 30 4 13.33
Dolores 549 56 10.20
La Presita de Cerros Blancos (La Presita) 515 50 9.71
Las Mesas de San Juan 124 11 8.87
El Refugio de Cerros Blancos 531 46 8.66
San Antonio de Alamitos 412 34 8.25
San Rafael de los Martínez 657 48 7.31
San Isidro 414 30 7.25
San José de Medina (Rancho de Abajo) 14 1 7.14
La Joya del Zacate 45 3 6.67
Jesús María del Terrero (El Lindero) 215 13 6.05
Las Palomas (Lajillas) 865 44 5.09
Mier y Noriega 1180 59 5.00
Lagunita de Taberna 208 9 4.33
Cerros Blancos 586 25 4.27
La Cardona 479 20 4.18
San José de Cuatro Caminos 84 3 3.57
El Gallito 206 5 2.43
Tapona Moreña 519 6 1.16

Las 3 localidades con mayor porcentaje de personas con discapacidad son: San Elías(13.33%), Dolores (10.2%) y La Presita de Cerros Blancos (9.71%). La localidad de Cerros Blancos solo presenta un 4.27% de población con alguna discapacidad.

###6.3 Cantidad de personas nacidas en otra entidad federativa

# PNACOE = Personas nacidas en otra entidad federativa.
# En Mier y Noriega, un número bajo de migrantes llegados de otros estados
# confirma que no existe actividad económica que atraiga población externa.
# Es un reflejo del aislamiento y la falta de dinamismo económico del municipio.

mier_localidades %>%
  mutate(
    pct_nacoe = round((PNACOE / POBTOT) * 100, 2)
  ) %>%
  select(NOM_LOC, POBTOT, PNACOE, pct_nacoe) %>%
  filter(!is.na(PNACOE)) %>%
  arrange(desc(pct_nacoe)) %>%
  rename(
    "Localidad"           = NOM_LOC,
    "Pob. Total"          = POBTOT,
    "Nacidos fuera de NL" = PNACOE,
    "% Nacidos fuera NL"  = pct_nacoe
  ) %>%
  kable(caption = "Tabla 5. Población nacida en otra entidad federativa") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), full_width = FALSE)
Tabla 5. Población nacida en otra entidad federativa
Localidad Pob. Total Nacidos fuera de NL % Nacidos fuera NL
La Joya del Zacate 45 11 24.44
San José de Medina (Rancho de Abajo) 14 2 14.29
Mier y Noriega 1180 140 11.86
La Cardona 479 36 7.52
La Presita de Cerros Blancos (La Presita) 515 31 6.02
El Gallito 206 12 5.83
El Refugio de Cerros Blancos 531 23 4.33
Jesús María del Terrero (El Lindero) 215 9 4.19
San Isidro 414 16 3.86
Dolores 549 21 3.83
Las Palomas (Lajillas) 865 33 3.82
San José de Cuatro Caminos 84 3 3.57
San Rafael de los Martínez 657 22 3.35
San Elías 30 1 3.33
Las Mesas de San Juan 124 3 2.42
Cerros Blancos 586 13 2.22
San Antonio de Alamitos 412 5 1.21
Lagunita de Taberna 208 2 0.96
Tapona Moreña 519 1 0.19

De acuerdo con los resultados: las 3 localidades que tienen mayor porcentaje de personas nacidas fueras del estado son: La Joya del Zacate (24.44%), Rancho de Abajo (14.29%) y Mier y Noriega (11.86%). La localidad de Cerros Blancos presenta un porcentaje de personas que nacieron fuera del estado del 2.22%.

###6.4 Cantidad de personas afiliadas a servicios de salud

# PSINDER = Personas sin ninguna afiliación a servicios de salud.
#           En 2020 esto significaba no tener IMSS, ISSSTE, Seguro Popular
#           ni ningún otro esquema. Son las personas más vulnerables ante
#           cualquier evento de salud.
# PDER_SS = Personas con algún tipo de derechohabiencia (complementario a PSINDER).
#
# El % sin servicios de salud es uno de los indicadores más directos de exclusión.

mier_salud <- mier_localidades %>%
  mutate(
    pct_sin_salud  = round((PSINDER / POBTOT) * 100, 2),
    pct_con_salud  = round((PDER_SS  / POBTOT) * 100, 2)
  ) %>%
  select(NOM_LOC, POBTOT, PSINDER, pct_sin_salud, PDER_SS, pct_con_salud) %>%
  filter(!is.na(PSINDER)) %>%
  arrange(desc(pct_sin_salud))

datatable(
  mier_salud %>%
    rename(
      "Localidad"         = NOM_LOC,
      "Pob. Total"        = POBTOT,
      "Sin Servicios"     = PSINDER,
      "% Sin Servicios"   = pct_sin_salud,
      "Con Servicios"     = PDER_SS,
      "% Con Servicios"   = pct_con_salud
    ),
  caption  = "Tabla 10. Acceso a servicios de salud por localidad",
  options  = list(pageLength = 10, scrollX = TRUE),
  rownames = FALSE
) %>%
  formatStyle("% Sin Servicios",
    backgroundColor = styleInterval(c(20, 40), c("#d4edda", "#fff3cd", "#f8d7da"))
  )

Las 3 localidades con mayor porcentaje de personas NO afiliadas a servicios de salud son: La Presita (25.24%), La Joya del Zacate (13.33%) y Dolores (12.93%)

##7. CONCLUSIÓN Tras realizar un análisis general de diferentes variables en el municipio de Mier y Noriega, concluimos que es un municipio bastante rezagado comparado con la realidad de la Zona Metropolitana de Monterrey. Claro que es fundamental trabajar el tema de educación, sin embargo, esto es MUY difícil cuando no se cumplen con las necesidades básicas de la población. Este es un problema sistémico de marginación que se ha mantenido a través del tiempo. ¿Cómo se espera que los niños quieran vivir en su localidad cuando muchos de ellos no tienen drenaje ni agua en sus casas? ¿Será relevante la afiliación a servicios de salud cuando no hay infraestructura necesaria?

Lo que me parece bastante preocupante es la diferencia de analfabetismo y carencias entre la cabecera municipal y las localidades rurales. Parece ser que no está habiendo una distribución justa de los recursos municipales. Sin duda este análisis me deja pensando cómo vamos a incidir en esta comunidad cuando las necesidades básicas están por los suelos. ¿Cómo fomentamos la educación sin infraestructura adecuada? Gracias.