Introducción
Mier y Noriega es un municipio localizado en la zona sur del estado de Nuevo León. Aunque la entidad se distingue por su alto nivel de industrialización y desarrollo económico, este municipio presenta condiciones de marginación significativamente superiores si se comparan con las que predominan en la Zona Metropolitana de Monterrey.
El análisis se basa en la información del Censo de Población y Vivienda 2020 elaborado por el INEGI, particularmente en el archivo ITER (Indicadores de Resultados por Localidad). A partir de estos datos, se busca examinar con mayor detalle las condiciones sociales, educativas y habitacionales de sus distintas localidades, con el fin de identificar y visibilizar las desigualdades que persisten en el territorio.
Como primer paso, se instalaron y cargaron las bibliotecas necesarias para llevar a cabo el análisis de datos. Se utilizó tidyverse para la limpieza, transformación y visualización de la información; DT para la elaboración de tablas interactivas en formato HTML; knitr y kableExtra para la generación de tablas con un diseño más formal y profesional; y finalmente, scales, que permitió dar formato adecuado a cifras y porcentajes dentro de las representaciones gráficas.
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.2.0 ✔ readr 2.2.0
## ✔ forcats 1.0.1 ✔ stringr 1.5.2
## ✔ 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)
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
library(scales)
##
## Attaching package: 'scales'
## The following object is masked from 'package:purrr':
##
## discard
## The following object is masked from 'package:readr':
##
## col_factor
El primer paso consistió en obtener el archivo en formato CSV correspondiente al ITER del estado de Nuevo León. Una vez descargado, se importó al entorno de trabajo en RStudio para proceder con su revisión. Posteriormente, se verificó que la carga del archivo se hubiera realizado de manera correcta, comprobando su estructura y contenido inicial.
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
En el archivo ITER, * se emplea como mecanismo de confidencialidad estadística. Este recurso se utiliza cuando la información corresponde a localidades con muy poca población, donde la publicación del dato podría permitir la identificación de personas específicas.
Para el tratamiento de estos casos, se decidió reemplazar los asteriscos por valores NA, que en R representan datos no disponibles. Esta decisión es metodológicamente más adecuada que asignar un valor de cero, ya que un cero implicaría la inexistencia absoluta del fenómeno, lo cual sería incorrecto. En cambio, el uso de NA reconoce que el dato existe, pero no puede ser divulgado.
#3.1 Definir variables relevantes Se realizó una revisión del catálogo de variables del ITER con el fin de identificar aquellas más pertinentes para el análisis del municipio. A partir de esta exploración, se agruparon variables clave en distintas dimensiones temáticas: características de la localidad, dinámica demográfica, educación, población indígena, fecundidad, discapacidad, actividad económica, migración interestatal, salud, vivienda y acceso a servicios básicos.
Esta clasificación permitió estructurar el análisis de manera más ordenada y facilitar la interpretación de los resultados.
# 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é el conteo arroja el valor 6 en todas estas variables? La explicación radica en que existen seis localidades que presentan el símbolo de confidencialidad (*) en la totalidad de sus variables registradas. Estas localidades son: San Diego, Falfurrias (San Carlos), La Tortuga, La Puerta de Guadalupe, Tanque Roto y Los García.
La razón de esta omisión sistemática es que se trata de asentamientos con una población extremadamente reducida (entre 1 y 5 habitantes). En estos casos, la publicación de datos específicos podría facilitar la identificación de personas, lo que contraviene los principios de confidencialidad estadística.
En conjunto, estas seis localidades concentran únicamente 19 personas dentro de un municipio que cuenta con 5,652 habitantes. Esto representa menos del 0.3% de la población total, por lo que la ausencia de estos registros no genera una distorsión significativa en los análisis posteriores.
# 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 la tabla anterior se identifican las tres localidades con mayor nivel de rezago educativo, tomando como referencia el porcentaje de población analfabeta. Los valores más altos corresponden a La Cardona (23.84%), San Isidro (22.45%) y La Presita de Cerros Blancos (20.45%), lo que evidencia una concentración importante de este problema en determinadas zonas del municipio.
A partir de estos resultados surge una interrogante relevante para profundizar el análisis: ¿el analfabetismo afecta de la misma manera a hombres y mujeres, o existen brechas de género en su distribución? Explorar esta diferencia permitiría comprender si el rezago educativo presenta un componente estructural asociado al género y, en su caso, dimensionar su magnitud.
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)
| Municipio | % Analf. Mujeres | % Analf. Hombres | Brecha (M - H) |
|---|---|---|---|
| Total del Municipio | 11.33 | 11.93 | -0.6 |
El análisis muestra que el porcentaje de analfabetismo es ligeramente mayor en hombres (11.93%) que en mujeres (11.33%). En un primer momento podría suponerse que las mujeres presentarían niveles más altos debido a factores estructurales asociados a desigualdades históricas; sin embargo, los datos no respaldan esa hipótesis, ya que la diferencia observada es mínima y no confirma una brecha significativa en perjuicio de ellas.
Con el objetivo de profundizar en el comportamiento de esta variable a nivel local, se procedió a filtrar la base de datos para identificar el porcentaje de analfabetismo por sexo específicamente en la localidad de Cerros Blancos. Esto permite analizar si el patrón municipal se replica en un contexto más focalizado o si existen variaciones relevantes a nivel territorial.
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)
| 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%).
# 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, cuya escala va de 0 a 300, las localidades que presentan los niveles más altos de rezago en el municipio de Mier y Noriega son Las Mesas de San Juan (300), San José de Medina (233) y Lagunita de Taberna (220). Estos valores reflejan condiciones acumuladas de vulnerabilidad en distintos ámbitos sociales y de infraestructura.
En el caso de Cerros Blancos, el índice alcanza 183.6 puntos, lo que también indica un nivel considerable de rezago. Resulta particularmente llamativo que únicamente el 4.1% de las viviendas carezca de acceso a agua, mientras que el 80% no dispone de drenaje. Esta diferencia sugiere que, aunque el acceso al agua presenta una cobertura relativamente amplia, el déficit en infraestructura sanitaria constituye una de las principales carencias en la localidad.
# 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)
| 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.1 En este apartado se examinó la cantidad de personas que hablan alguna lengua indígena dentro del municipio. Para ello, se elaboró una tabla que presenta las cinco localidades con mayor número de habitantes que reportan hablar una lengua indígena, lo que permite identificar la concentración territorial de esta característica demográfica.
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)
| 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)
| 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)
| 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 El análisis de los datos del Censo 2020 permitió identificar que Mier y Noriega enfrenta importantes retos en materia educativa y de acceso a servicios básicos. Aunque forma parte de un estado altamente desarrollado como Nuevo León, varias de sus localidades presentan altos niveles de rezago y carencias, especialmente en infraestructura como el drenaje y en indicadores como el analfabetismo.
Los resultados muestran que las desigualdades no solo existen a nivel estatal, sino también dentro del propio municipio, donde algunas localidades concentran mayores condiciones de vulnerabilidad. Esto evidencia la necesidad de diseñar políticas públicas más focalizadas que atiendan las necesidades específicas de cada comunidad.