library(tidyverse) # manipulación, limpieza, transformación y visualización de datos y dplyr
## Warning: package 'dplyr' was built under R version 4.5.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.1 ✔ stringr 1.5.2
## ✔ ggplot2 4.0.0 ✔ tibble 3.3.0
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.1.0
## ── 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(readxl) # permite importar archivos Excel (.xls y .xlsx)
library(janitor) # ayuda a limpiar nombres de columnas, detectar columnas vacías, eliminar espacios y formatear datos.
##
## Adjuntando el paquete: 'janitor'
##
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
library(caret) # limpia, transforma, entrena y valida modelos de forma estandarizada.
## Warning: package 'caret' was built under R version 4.5.2
## Cargando paquete requerido: lattice
##
## Adjuntando el paquete: 'caret'
##
## The following object is masked from 'package:purrr':
##
## lift
library(dplyr) #Manipulación de datos
# Cargar el archivo CSV
datos <- read.csv("ITER_19CSV20.csv")
# Filtrar registros por Mier y Noriega
mier_noriega <- datos %>%
filter(NOM_MUN == "Mier y Noriega")
Comprensión de variables clave:
POBTOT: Población total
POBFEM: Población femenina
POBMAS: Población masculina
P_15YMAS: Población de 15 años y más
P_18YMAS: Población de 18 años y más
P_18YMAS_F: Población femenina de 18 años y más
P_18YMAS_M: Población masculina de 18 años y más
PNACENT: Población nacida en la entidad
PNACOE: Población nacida en otra entidad
PCON_DISC: Población con discapacidad
P15YM_AN: Población de 15 años y más analfabeta
P15SEC_IN: Población de 15 años y más con secundaria incompleta
P18YM_PB: Población de 18 años y más con educación posbásica
GRAPROES: Grado promedio de escolaridad
PEA: Población de 12 años y más económicamente activa
PSINDER: Población sin afiliación a servicios de salud
PAFIL_IPRIV: Población afiliada a servicios de salud en una institución privada
VIVTOT: Total de viviendas
VPH_PISODT: Viviendas particulares habitadas con piso de material diferente de tierra
VPH_PISOTI: Viviendas particulares habitadas con piso de tierra
VPH_C_SERV: Viviendas particulares habitadas que disponen de energía eléctrica, agua entubada de la red pública y drenaje
VPH_DSADMA: Viviendas particulares que disponen de drenaje y sanitario con admisión de agua
VPH_SINLTC: Viviendas particulares habitadas sin línea telefónica fija ni teléfono celular
VPH_SINCINT: Viviendas particulares habitadas sin computadora ni Internet
_Fuente:INEGI (2021) Principales Resultados por Localidad (ITER) https://www.inegi.org.mx/app/scitel/doc/descriptor/fd_iter_cpv2020.pdf_
Tratamiento de datos:
# Convertir * en missing values y hacer variables numéricas donde corresponden
mier_noriega_2 <- mier_noriega %>%
# Paso 1: convertir todo a character
mutate(across(everything(), as.character)) %>%
# Paso 2: reemplazar "*" por NA real
mutate(across(everything(), ~na_if(.x, "*"))) %>%
# Paso 3: reconvertir automáticamente tipos de variables
mutate(across(everything(), ~type.convert(.x, as.is = TRUE)))
Resumen municipal
# Suma de la población municipal por localidad
pob_municipal <- mier_noriega_2 %>%
filter(!LOC %in% c(0, 9998, 9999)) %>%
# Se excluyeron los registros correspondientes a LOC = 0 (Total del Municipio), 9998 (localidades agrupadas con menos de dos habitantes) y 9999 (no especificado), con el fin de evitar doble contabilización y distorsiones en el análisis territorial.
summarise(total = sum(POBTOT, na.rm = TRUE)) %>%
#crea total como la suma de POBTOT
pull(total)
cat("Población municipal total de Mier y Noriega:" , pob_municipal, "personas")
## Población municipal total de Mier y Noriega: 7652 personas
Con 7,652 habitantes en 2020, Mier y Noriega representa apenas el 0.1% de la población total de Nuevo León (Data México, s.f.). Su baja densidad demográfica subraya su carácter rural y una tendencia a la despoblación, situación acentuada por su ubicación geográfica en el extremo sur del estado, colindando con Tamaulipas.
Indicadores de educación:
# Analfabetismo por localidad
mier_noriega_2 <- mier_noriega_2 %>%
mutate(
pct_analfabetismo = ifelse(
# Se crea una nueva variable para saber el porcentaje de analfabetismo por localidad
is.na(P_15YMAS) | P_15YMAS == 0, NA_real_,
# Evitar NAs
(P15YM_AN / P_15YMAS) * 100
# Hacer la operación
)
)
# Grado promedio de escolaridad
#Ya existe en la base de datos el grado promedio de escolaridad, separado por localidad. La variable se llama GRAPROES
alf_grapoe <- mier_noriega_2 |>
dplyr::select(
NOM_LOC,
pct_analfabetismo,
GRAPROES
)
alf_grapoe
## NOM_LOC pct_analfabetismo GRAPROES
## 1 Total del Municipio 11.623364 6.59
## 2 Mier y Noriega 9.880952 7.27
## 3 La Cardona 23.839009 5.30
## 4 Cerros Blancos 9.809264 6.65
## 5 Dolores 5.497382 7.46
## 6 El Gallito 12.080537 5.44
## 7 Jesús María del Terrero (El Lindero) 7.432432 6.51
## 8 La Joya del Zacate 3.333333 6.13
## 9 Lagunita de Taberna 8.888889 5.87
## 10 Las Mesas de San Juan 6.849315 6.58
## 11 Las Palomas (Lajillas) 8.600000 6.71
## 12 La Presita de Cerros Blancos (La Presita) 20.454545 5.83
## 13 El Refugio de Cerros Blancos 11.173184 6.64
## 14 San Antonio de Alamitos 6.115108 6.80
## 15 San Elías 11.111111 6.11
## 16 San Isidro 22.448980 5.69
## 17 San José de Cuatro Caminos 13.636364 5.98
## 18 San José de Medina (Rancho de Abajo) 12.500000 6.13
## 19 San Rafael de los Martínez 6.511628 7.47
## 20 Tapona Moreña 14.571429 6.27
## 21 San Diego NA NA
## 22 Falfurrias (San Carlos) NA NA
## 23 La Tortuga NA NA
## 24 La Puerta de Guadalupe (Los Mireles) NA NA
## 25 Tanque Roto NA NA
## 26 Los García NA NA
## 27 Localidades de una vivienda 0.000000 5.17
## 28 Localidades de dos viviendas 16.666667 4.42
A nivel agregado, el porcentaje municipal de analfabetismo es de 11.62%, con un grado promedio de escolaridad de 6.59 años, lo que indica que, en promedio, la población ha concluido la educación primaria pero no alcanza plenamente el nivel de secundaria. Naturalmente, a mayor porcentaje de analfabetismo, menor grado promedio de escolaridad.
Visualización del rezago educativo De acuerdo con la Secretaria de Educación Pública (2023), se calcula el total de la población en rezago educativo de 15 años y más como:
Fórmula:
𝑹𝑬𝟏𝟓+ = 𝑨𝟏𝟓+ (+) 𝑺𝑷𝟏𝟓+ (+) 𝑺𝑺𝟏𝟓+
Donde: 𝑹𝑬𝟏𝟓+ = Población en rezago educativo de 15 años y más
𝑨𝟏𝟓+ = Población analfabeta de 15 años y más
𝑺𝑷𝟏𝟓+ = Población sin primaria terminada de 15 años y más
𝑺𝑺𝟏𝟓+ = Población sin secundaria terminada de 15 años y más
_Fuente: SEP(2023) METODOLOGÍA PARA EL CÁLCULO DEL REZAGO EDUCATIVO DE LA POBLACIÓN DE 15 AÑOS Y MÁS DEL CENSO DE POBLACIÓN Y VIVIENDA 2020 https://www.gob.mx/cms/uploads/attachment/file/889757/Metodologia_Rez_Edu_Censo_2020_vf__1_.pdf_
# Crear variable de rezago educativo
mier_noriega_2 <- mier_noriega_2 %>%
mutate(
rez_ed = rowSums(
select(., P15YM_AN, P15PRI_IN, P15SEC_IN), # Suma las variables
na.rm = TRUE # Evita los NA
)
)
# Crear tabla que muestra qué localidades tienen mayor rezago educativo en Mier y Noriega
tabla_rezago <- mier_noriega_2 %>%
select(LOC, NOM_LOC, rez_ed) %>%
arrange(desc(rez_ed))
knitr::kable(
tabla_rezago,
digits = 2,
col.names = c("#", "Localidad", "Rezago educativo (15+)")
)
| # | Localidad | Rezago educativo (15+) |
|---|---|---|
| 0 | Total del Municipio | 1895 |
| 1 | Mier y Noriega | 242 |
| 13 | Las Palomas (Lajillas) | 184 |
| 3 | La Cardona | 180 |
| 15 | La Presita de Cerros Blancos (La Presita) | 160 |
| 4 | Cerros Blancos | 147 |
| 20 | San Isidro | 143 |
| 17 | El Refugio de Cerros Blancos | 140 |
| 25 | Tapona Moreña | 137 |
| 24 | San Rafael de los Martínez | 118 |
| 5 | Dolores | 100 |
| 18 | San Antonio de Alamitos | 93 |
| 7 | El Gallito | 64 |
| 8 | Jesús María del Terrero (El Lindero) | 58 |
| 10 | Lagunita de Taberna | 43 |
| 21 | San José de Cuatro Caminos | 31 |
| 12 | Las Mesas de San Juan | 24 |
| 9 | La Joya del Zacate | 11 |
| 19 | San Elías | 8 |
| 9999 | Localidades de dos viviendas | 7 |
| 22 | San José de Medina (Rancho de Abajo) | 3 |
| 9998 | Localidades de una vivienda | 2 |
| 38 | San Diego | 0 |
| 46 | Falfurrias (San Carlos) | 0 |
| 48 | La Tortuga | 0 |
| 49 | La Puerta de Guadalupe (Los Mireles) | 0 |
| 53 | Tanque Roto | 0 |
| 55 | Los García | 0 |
La cabecera municipal, Mier y Noriega, concentra 242 personas en rezago, siendo la localidad con mayor número absoluto. Sin embargo, esto se explica en parte por su mayor tamaño poblacional.
Cálculo de carencias e índice de “Carencia de Servicios”:
# Análisis de Vivienda y Servicios: carencias e índice simple
carencias_servicios <- mier_noriega_2 %>%
mutate(
# Porcentajes de carencia (sobre total de viviendas VIVTOT)
pct_no_agua = ifelse(is.na(VIVTOT) | VIVTOT == 0, NA_real_, (VPH_AGUAFV / VIVTOT) * 100),
pct_no_dren = ifelse(is.na(VIVTOT) | VIVTOT == 0, NA_real_, (VPH_NODREN / VIVTOT) * 100),
pct_no_int = ifelse(is.na(VIVTOT) | VIVTOT == 0, NA_real_, (VPH_SINCINT / VIVTOT) * 100),
# Índice simple aditivo de carencia (0–300)
indice_carencia_serv = pct_no_agua + pct_no_dren + pct_no_int
) %>%
select(NOM_LOC, VIVTOT, pct_no_agua, pct_no_dren, pct_no_int, indice_carencia_serv) %>%
arrange(desc(indice_carencia_serv))
# Mostrar tabla (ordenada por mayor vulnerabilidad)
knitr::kable(
carencias_servicios,
digits = 2,
col.names = c("Localidad", "Viviendas totales", "% sin agua entubada", "% sin drenaje", "% sin internet", "Índice carencia (suma %)")
)
| Localidad | Viviendas totales | % sin agua entubada | % sin drenaje | % sin internet | Índice carencia (suma %) |
|---|---|---|---|---|---|
| Las Mesas de San Juan | 27 | 81.48 | 81.48 | 77.78 | 240.74 |
| Localidades de dos viviendas | 8 | 50.00 | 50.00 | 75.00 | 175.00 |
| Lagunita de Taberna | 56 | 16.07 | 76.79 | 73.21 | 166.07 |
| Tapona Moreña | 151 | 40.40 | 43.05 | 78.15 | 161.59 |
| La Presita de Cerros Blancos (La Presita) | 168 | 22.02 | 66.67 | 72.62 | 161.31 |
| Dolores | 170 | 13.53 | 65.88 | 80.00 | 159.41 |
| Las Palomas (Lajillas) | 238 | 29.83 | 55.04 | 73.95 | 158.82 |
| San Elías | 10 | 60.00 | 20.00 | 70.00 | 150.00 |
| Jesús María del Terrero (El Lindero) | 56 | 1.79 | 60.71 | 85.71 | 148.21 |
| El Refugio de Cerros Blancos | 175 | 5.14 | 70.29 | 70.29 | 145.71 |
| Cerros Blancos | 159 | 3.14 | 61.64 | 72.96 | 137.74 |
| San Rafael de los Martínez | 192 | 5.73 | 42.19 | 76.04 | 123.96 |
| Localidades de una vivienda | 5 | 40.00 | 20.00 | 60.00 | 120.00 |
| El Gallito | 84 | 9.52 | 45.24 | 64.29 | 119.05 |
| Total del Municipio | 2662 | 14.61 | 38.43 | 61.95 | 114.99 |
| San Isidro | 182 | 42.31 | 18.68 | 53.85 | 114.84 |
| San Antonio de Alamitos | 117 | 2.56 | 47.01 | 61.54 | 111.11 |
| La Joya del Zacate | 26 | 46.15 | 3.85 | 38.46 | 88.46 |
| San José de Cuatro Caminos | 36 | 2.78 | 0.00 | 72.22 | 75.00 |
| La Cardona | 223 | 5.83 | 6.73 | 58.30 | 70.85 |
| Mier y Noriega | 561 | 2.32 | 8.73 | 34.40 | 45.45 |
| San José de Medina (Rancho de Abajo) | 18 | 5.56 | 16.67 | 16.67 | 38.89 |
| San Diego | 2 | NA | NA | NA | NA |
| Falfurrias (San Carlos) | 1 | NA | NA | NA | NA |
| La Tortuga | 2 | NA | NA | NA | NA |
| La Puerta de Guadalupe (Los Mireles) | 3 | NA | NA | NA | NA |
| Tanque Roto | 2 | NA | NA | NA | NA |
| Los García | 3 | NA | NA | NA | NA |
El índice simple de carencia de servicios, construido a partir de la suma de los porcentajes de viviendas sin agua entubada, sin drenaje y sin acceso a internet, permite identificar las zonas con mayor vulnerabilidad estructural. A nivel agregado, el municipio presenta; 14.61% de viviendas sin agua entubada, 38.43% sin drenaje, 61.95% sin acceso a internet y un índice de carencia promedio: 114.99. Esto evidencia que la principal brecha estructural se encuentra en la conectividad digital y el drenaje sanitario, más que en el acceso al agua.
# Crear una variable categórica que separa la cabecera municipal con las demás localidades rurales
mier_noriega_2 <- mier_noriega_2 %>%
mutate(
tipo_localidad = ifelse(
NOM_LOC == "Mier y Noriega",
"Cabecera Municipal",
"Localidades Rurales"
)
)
Comparación de medias
comparacion_medias <- mier_noriega_2 %>%
group_by(tipo_localidad) %>%
summarise(
media_graproes = mean(GRAPROES, na.rm = TRUE),
media_no_agua = mean((VPH_AGUAFV / VIVTOT) * 100, na.rm = TRUE),
media_no_dren = mean((VPH_NODREN / VIVTOT) * 100, na.rm = TRUE),
media_no_int = mean((VPH_SINCINT / VIVTOT) * 100, na.rm = TRUE),
.groups = "drop"
)
knitr::kable(comparacion_medias, digits = 2)
| tipo_localidad | media_graproes | media_no_agua | media_no_dren | media_no_int |
|---|---|---|---|---|
| Cabecera Municipal | 7.27 | 2.32 | 8.73 | 34.40 |
| Localidades Rurales | 6.18 | 23.74 | 42.40 | 66.33 |
El grado promedio de escolaridad en la cabecera municipal es de 7.27 años, mientras que en las localidades rurales es de 6.18 años. Esto implica una brecha de 1.09 años de escolaridad promedio, lo que sugiere que en las comunidades rurales la población tiende a abandonar el sistema educativo antes de concluir la secundaria. Se puede observar también que, el acceso al agua entubada es prácticamente universal en la cabecera, pero aún constituye una carencia relevante en zonas rurales, así como el drenje y la conectividad digital.
Conclusión:
De por sí carente, Mier y Noriega muestra un municipio con marcadas desigualdades territoriales internas. El promedio municipal refleja una realidad intermedia; sin embargo, al desagregar por localidad se observa que el rezago educativo y las carencias en servicios se concentran principalmente en comunidades todavía más pequeñas y dispersas.