# Librerias para el diagnostico del Municipio de Mier y Noriega, Nuevo León
library(readr)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(knitr)
library(tidyr)
library(ggplot2)
# Base de Datos
setwd("C:/Users/miris/OneDrive/Documentos/analisisdedecisiones")
list.files()
## [1] "Diagnostico-Mier-y-Noriega.docx" "Diagnostico-Mier-y-Noriega.Rmd"
## [3] "Diagnostico Mier y Noriega.Rmd" "ITER_19CSV20.csv"
base <- read_csv("ITER_19CSV20.csv")
## Rows: 4974 Columns: 286
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (282): NOM_ENT, MUN, NOM_MUN, LOC, NOM_LOC, LONGITUD, LATITUD, ALTITUD, ...
## dbl (4): ENTIDAD, POBTOT, VIVTOT, TVIVHAB
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
base_mienor <- base[base$NOM_MUN == "Mier y Noriega", ]
# Variables de Interés
vars_key <- c(
"NOM_LOC", # Nombre de localidad
"POBTOT", # Población total
"P15YM_AN", # Analfabetismo (15+)
"POCUPADA", # Ocupación (puede variar según versión)
"VPH_AGUADV", # Viviendas con agua entubada
"VPH_DRENAJ", # Viviendas con drenaje
"VPH_INTER", # Viviendas con internet
"GRAPROES", # Grado promedio de escolaridad
"PCLIM_PMEN", # Condición mental
"PDER_SS", # Derechohabiencia / seguridad social
"PCON_DISC" # Discapacidad
)
# Reemplazar "*" por NA
base_mienor[base_mienor == "*"] <- NA
# Conversión a numéricas
base_mienor$POBTOT <- as.numeric(base_mienor$POBTOT)
base_mienor$P15YM_AN <- as.numeric(base_mienor$P15YM_AN)
base_mienor$POCUPADA <- as.numeric(base_mienor$POCUPADA)
base_mienor$VPH_AGUADV <- as.numeric(base_mienor$VPH_AGUADV)
base_mienor$VPH_DRENAJ <- as.numeric(base_mienor$VPH_DRENAJ)
base_mienor$VPH_INTER <- as.numeric(base_mienor$VPH_INTER)
base_mienor$GRAPROES <- as.numeric(base_mienor$GRAPROES)
base_mienor$PCLIM_PMEN <- as.numeric(base_mienor$PCLIM_PMEN)
base_mienor$PDER_SS <- as.numeric(base_mienor$PDER_SS)
base_mienor$PCON_DISC <- as.numeric(base_mienor$PCON_DISC)
# 1) Las localidades
mienor_loc <- base_mienor %>%
filter(
!NOM_LOC %in% c(
"Total del Municipio",
"Localidades de una vivienda",
"Localidades de dos viviendas",
"Mier y Noriega"
)
) %>%
filter(!is.na(NOM_LOC) & NOM_LOC != "")
# 2) Población total municipal (sumatoria por localidades)
resumen_municipal <- mienor_loc %>%
summarise(poblacion_total = sum(POBTOT, na.rm = TRUE))
resumen_municipal$poblacion_total
## [1] 6472
# Indicadores educativos por localidad
mienor_loc_comp <- base_mienor %>%
filter(
!NOM_LOC %in% c(
"Total del Municipio",
"Localidades de una vivienda",
"Localidades de dos viviendas"
)
) %>%
filter(!is.na(NOM_LOC) & NOM_LOC != "")
tabla_rezago_edu_comp <- mienor_loc_comp %>%
transmute(
NOM_LOC,
analf_pct = ifelse(!is.na(POBTOT) & POBTOT > 0 & !is.na(P15YM_AN),
(P15YM_AN / POBTOT) * 100,
NA_real_),
escolaridad_prom = GRAPROES
) %>%
filter(!is.na(analf_pct) | !is.na(escolaridad_prom)) %>%
mutate(
analf_pct = round(analf_pct, 2),
escolaridad_prom = round(escolaridad_prom, 2)
)
# Ranking (mayor analfabetismo y menor escolaridad)
ranking_rezago <- tabla_rezago_edu_comp %>%
arrange(desc(analf_pct), escolaridad_prom)
ranking_rezago
# variables
cols_serv <- c("TVIVPARHAB", "VPH_AGUADV", "VPH_DRENAJ", "VPH_INTER")
mienor_loc[cols_serv] <- lapply(mienor_loc[cols_serv], as.numeric)
# Cálculo de carencias por localidad
carencias_servicios <- mienor_loc %>%
mutate(
carencia_agua = ifelse(!is.na(TVIVPARHAB) & TVIVPARHAB > 0,
((TVIVPARHAB - VPH_AGUADV) / TVIVPARHAB) * 100,
NA_real_),
carencia_drenaje = ifelse(!is.na(TVIVPARHAB) & TVIVPARHAB > 0,
((TVIVPARHAB - VPH_DRENAJ) / TVIVPARHAB) * 100,
NA_real_),
carencia_internet = ifelse(!is.na(TVIVPARHAB) & TVIVPARHAB > 0,
((TVIVPARHAB - VPH_INTER) / TVIVPARHAB) * 100,
NA_real_)
) %>%
mutate(
carencia_agua = round(carencia_agua, 1),
carencia_drenaje = round(carencia_drenaje, 1),
carencia_internet = round(carencia_internet, 1)
) %>%
select(NOM_LOC, carencia_agua, carencia_drenaje, carencia_internet)
carencias_servicios
indice_carencia_servicios <- carencias_servicios %>%
mutate(
indice_carencia = ifelse(
is.na(carencia_agua) | is.na(carencia_drenaje) | is.na(carencia_internet),
NA_real_,
(carencia_agua + carencia_drenaje + carencia_internet) / 3
),
indice_carencia = round(indice_carencia, 1)
) %>%
arrange(desc(indice_carencia)) %>%
select(NOM_LOC, carencia_agua, carencia_drenaje, carencia_internet, indice_carencia)
indice_carencia_servicios
indice_discapacidad <- mienor_loc %>%
mutate(
tasa_discapacidad = ifelse(
!is.na(POBTOT) & POBTOT > 0 & !is.na(PCON_DISC),
(PCON_DISC / POBTOT) * 100,
NA_real_
),
tasa_discapacidad = round(tasa_discapacidad, 2)
) %>%
select(NOM_LOC, tasa_discapacidad) %>%
arrange(desc(tasa_discapacidad))
indice_discapacidad
indice_discapacidad_comp <- mienor_loc %>%
mutate(
tasa_discapacidad = ifelse(
!is.na(POBTOT) & POBTOT > 0 & !is.na(PCON_DISC),
(PCON_DISC / POBTOT) * 100,
NA_real_
),
tasa_condicion_mental = ifelse(
!is.na(POBTOT) & POBTOT > 0 & !is.na(PCLIM_PMEN),
(PCLIM_PMEN / POBTOT) * 100,
NA_real_
),
indice_discapacidad = ifelse(
is.na(tasa_discapacidad) | is.na(tasa_condicion_mental),
NA_real_,
(tasa_discapacidad + tasa_condicion_mental) / 2
),
indice_discapacidad = round(indice_discapacidad, 2)
) %>%
select(NOM_LOC, tasa_discapacidad, tasa_condicion_mental, indice_discapacidad) %>%
arrange(desc(indice_discapacidad))
indice_discapacidad_comp
# Análisis comparativo: Cabecera vs. Localidades Rurales
## Base "comparativa": incluye cabecera
mienor_loc_comp <- base_mienor %>%
filter(
!NOM_LOC %in% c(
"Total del Municipio",
"Localidades de una vivienda",
"Localidades de dos viviendas"
)
) %>%
filter(!is.na(NOM_LOC) & NOM_LOC != "")
# 1) Educación por localidad
edu_loc <- mienor_loc_comp %>%
transmute(
NOM_LOC,
analf_pct = ifelse(!is.na(POBTOT) & POBTOT > 0 & !is.na(P15YM_AN),
(P15YM_AN / POBTOT) * 100,
NA_real_),
escolaridad_prom = GRAPROES
)
# 2) Índice de carencia de servicios (
cols_serv <- c("TVIVPARHAB", "VPH_AGUADV", "VPH_DRENAJ", "VPH_INTER")
mienor_loc_comp[cols_serv] <- lapply(mienor_loc_comp[cols_serv], as.numeric)
carencias_servicios_comp <- mienor_loc_comp %>%
mutate(
carencia_agua = ifelse(!is.na(TVIVPARHAB) & TVIVPARHAB > 0,
((TVIVPARHAB - VPH_AGUADV) / TVIVPARHAB) * 100,
NA_real_),
carencia_drenaje = ifelse(!is.na(TVIVPARHAB) & TVIVPARHAB > 0,
((TVIVPARHAB - VPH_DRENAJ) / TVIVPARHAB) * 100,
NA_real_),
carencia_internet = ifelse(!is.na(TVIVPARHAB) & TVIVPARHAB > 0,
((TVIVPARHAB - VPH_INTER) / TVIVPARHAB) * 100,
NA_real_)
) %>%
mutate(
carencia_agua = round(carencia_agua, 1),
carencia_drenaje = round(carencia_drenaje, 1),
carencia_internet = round(carencia_internet, 1)
) %>%
select(NOM_LOC, carencia_agua, carencia_drenaje, carencia_internet)
indice_carencia_servicios_comp <- carencias_servicios_comp %>%
mutate(
indice_carencia = ifelse(
is.na(carencia_agua) | is.na(carencia_drenaje) | is.na(carencia_internet),
NA_real_,
(carencia_agua + carencia_drenaje + carencia_internet) / 3
),
indice_carencia = round(indice_carencia, 1)
) %>%
select(NOM_LOC, indice_carencia)
base_comp <- mienor_loc_comp %>%
select(NOM_LOC) %>%
left_join(edu_loc, by = "NOM_LOC") %>%
left_join(indice_carencia_servicios_comp, by = "NOM_LOC") %>%
mutate(tipo_localidad = ifelse(NOM_LOC == "Mier y Noriega", "Cabecera", "Rural"))
comparacion_medias <- base_comp %>%
group_by(tipo_localidad) %>%
summarise(
promedio_analfabetismo = mean(analf_pct, na.rm = TRUE),
promedio_escolaridad = mean(escolaridad_prom, na.rm = TRUE),
promedio_indice_serv = mean(indice_carencia, na.rm = TRUE),
n_localidades = n(),
.groups = "drop"
)
comparacion_medias
ggplot(tabla_rezago_edu_comp,
aes(x = reorder(NOM_LOC, escolaridad_prom),
y = escolaridad_prom)) +
geom_col() +
coord_flip() +
labs(
title = "Grado Promedio de Escolaridad por Localidad",
x = "Localidad",
y = "Escolaridad Promedio (años)"
) +
theme_minimal()
# TOP 10 por índice
top10 <- indice_carencia_servicios %>%
filter(!is.na(indice_carencia)) %>%
slice_max(indice_carencia, n = 10)
top10_long <- top10 %>%
pivot_longer(
cols = c(carencia_agua, carencia_drenaje, carencia_internet),
names_to = "servicio",
values_to = "pct"
) %>%
mutate(
servicio = recode(servicio,
carencia_agua = "Sin agua entubada",
carencia_drenaje = "Sin drenaje",
carencia_internet = "Sin internet"),
NOM_LOC = reorder(NOM_LOC, indice_carencia)
)
ggplot(top10_long, aes(x = pct, y = NOM_LOC, fill = servicio)) +
geom_col(position = "dodge") +
labs(
title = "Top 10 localidades con mayor rezago en servicios",
x = "Porcentaje de viviendas con carencia",
y = "Localidad",
fill = "Servicio"
) +
theme_minimal()
indice_discapacidad_simple <- mienor_loc %>%
mutate(
tasa_discapacidad = ifelse(
!is.na(POBTOT) & POBTOT > 0 & !is.na(PCON_DISC),
(PCON_DISC / POBTOT) * 100,
NA_real_
),
tasa_discapacidad = round(tasa_discapacidad, 2)
) %>%
select(NOM_LOC, tasa_discapacidad) %>%
filter(!is.na(tasa_discapacidad)) %>%
arrange(desc(tasa_discapacidad))
top_disc <- indice_discapacidad_simple %>%
slice_max(order_by = tasa_discapacidad, n = 10)
ggplot(top_disc,
aes(x = tasa_discapacidad,
y = reorder(NOM_LOC, tasa_discapacidad),
fill = tasa_discapacidad)) +
geom_col() +
scale_fill_gradient(low = "#6BAED6", high = "#CB181D") +
labs(
title = "Top 10 Localidades con Mayor Tasa de Discapacidad",
x = "Tasa de discapacidad (%)",
y = "Localidad",
fill = "%"
) +
theme_minimal()
# Cabecera vs Rural.
comparacion_medias_clean <- base_comp %>%
group_by(tipo_localidad) %>%
summarise(
analfabetismo_pct = mean(analf_pct, na.rm = TRUE),
escolaridad_anios = mean(escolaridad_prom, na.rm = TRUE),
indice_carencias_pct = mean(indice_carencia, na.rm = TRUE),
.groups = "drop"
)
comparacion_long_clean <- comparacion_medias_clean %>%
pivot_longer(
cols = c(analfabetismo_pct, escolaridad_anios, indice_carencias_pct),
names_to = "Indicador",
values_to = "Media"
) %>%
mutate(
Indicador = factor(
Indicador,
levels = c("analfabetismo_pct", "escolaridad_anios", "indice_carencias_pct"),
labels = c("Analfabetismo (%)", "Escolaridad (años)", "Carencias (promedio, %)")
)
)
ggplot(comparacion_long_clean,
aes(x = tipo_localidad, y = Media, fill = tipo_localidad)) +
geom_col() +
facet_wrap(~ Indicador, scales = "free_y") +
scale_fill_manual(values = c("Cabecera" = "#F8766D", "Rural" = "#00BFC4")) +
labs(
title = "Brechas en Educación y Servicios: Cabecera vs Rural",
x = "",
y = "Promedio",
fill = "Zona"
) +
theme_minimal() +
theme(legend.position = "none")