UNIVERSIDAD NACIONAL HERMILIO VALDIZÁN
UNHEVAL — Facultad de Economía
Metodología Integral para la Predicción de Abandono Escolar en el Perú (2022)
Modelo de Regresión Logística con Diseño Muestral Complejo
Autor: López Gonzales, Fátima Johamery -
2023110178
Curso: Econometría II
Docente: MSc. Jeel Cueva
Semestre: 2026 - I
Fecha de publicación: 24 de Febrero de 2026
Link de publicación: https://rpubs.com/FAT_17/abandonoescolar
El presente artículo desarrolla una metodología exhaustiva para estimar la probabilidad de abandono escolar en la población de 6 a 17 años del Perú, un problema estructural que limita el desarrollo humano, perpetúa la pobreza intergeneracional y agrava las desigualdades socioeconómicas y regionales, especialmente en contextos de brecha digital y pobreza extrema agravados por la pandemia de COVID-19. Utilizando microdatos de la Encuesta Nacional de Hogares (ENAHO) 2022, elaborada por el Instituto Nacional de Estadística e Informática (INEI), se implementa un modelo de regresión logística (Logit) que incorpora el diseño muestral complejo de la encuesta —estratificación, conglomeración y factores de expansión— garantizando inferencia estadística válida y no sesgada a nivel poblacional.
El flujo de trabajo abarca desde la adquisición, limpieza y preparación de datos provenientes de seis módulos de la ENAHO (Vivienda, Equipamiento, Sumaria, Demografía, Educación y Empleo), hasta la estimación del modelo, cálculo de Odds Ratios, efectos marginales promedio (AME) y evaluación de capacidad predictiva mediante curvas ROC-AUC. Se identifican como principales factores de riesgo el trabajo infantil, la pobreza extrema y la residencia en zona rural, mientras que el acceso a internet, la disponibilidad de dispositivos digitales y el alumbrado eléctrico operan como factores protectores significativos.
La metodología se implementa íntegramente en el lenguaje R, utilizando paquetes especializados del ecosistema survey, y es directamente replicable para otros años de la ENAHO (2021, 2023), permitiendo análisis comparativos intertemporales y contribuyendo a la generación de evidencia para políticas educativas focalizadas en el Perú.
Palabras clave: Abandono escolar, ENAHO, Regresión logística, Diseño muestral complejo, Brecha digital
Clasificación JEL: I21 (Análisis de la Educación), I24 (Educación y Desigualdad), C25 (Modelos de Elección Discreta), C83 (Diseño de Encuestas)
This article develops a comprehensive methodology to estimate the probability of school dropout in the Peruvian population aged 6 to 17 years, a structural problem that limits human development, perpetuates intergenerational poverty, and exacerbates socioeconomic and regional inequalities, especially in contexts of digital divide and extreme poverty worsened by the COVID-19 pandemic. Using microdata from the 2022 National Household Survey (ENAHO), produced by the National Institute of Statistics and Informatics (INEI), a logistic regression (Logit) model is implemented incorporating the complex survey design of the survey —stratification, clustering, and expansion factors— ensuring valid and unbiased population statistical inference.
The workflow covers data acquisition, cleaning, and preparation from six ENAHO modules (Housing, Equipment, Summary, Demography, Education, and Employment), up to model estimation, Odds Ratios calculation, average marginal effects (AME), and predictive capacity evaluation through ROC-AUC curves. Main risk factors identified are child labor, extreme poverty, and rural residence, while internet access, availability of digital devices, and electric lighting act as significant protective factors.
The methodology is fully implemented in the R language, using specialized packages from the survey ecosystem, and is directly replicable for other ENAHO years (2021, 2023), enabling intertemporal comparative analysis and contributing to evidence-based targeted educational policies in Peru.
Keywords: School dropout, ENAHO, Logistic regression, Complex survey design, Digital divide
JEL Classification: I21 (Education Analysis), I24 (Education and Inequality), C25 (Discrete Choice Models), C83 (Survey Design)
El abandono escolar es un fenómeno económico y social de alcance global que afecta el capital humano, la productividad futura y la movilidad social. A nivel mundial, según el Informe GEM 2023 de la UNESCO, aproximadamente 250 millones de niños, niñas y adolescentes en edad escolar no asisten o abandonan antes de completar la educación secundaria, con tasas más altas en países de ingresos bajos y medios. Este problema genera pérdidas económicas estimadas en billones de dólares por menor acumulación de capital humano y perpetuación de la pobreza (UNESCO, 2023).
En América Latina y el Caribe, la región presenta tasas de abandono superiores al promedio global, agravadas por desigualdades históricas, pobreza y el impacto de la pandemia de COVID-19. El Banco Mundial (2024) estima que entre el 15% y el 20% de los jóvenes de 15 a 24 años no completa la educación secundaria, con brechas marcadas entre áreas urbanas y rurales, y entre quintiles de ingreso. La interrupción educativa durante la pandemia dejó a millones de estudiantes sin continuidad, aumentando el riesgo de deserción permanente.
En el contexto nacional del Perú, el abandono escolar constituye uno de los problemas estructurales más críticos del sistema educativo peruano. Según cifras del Ministerio de Educación (MINEDU, 2022), cerca del 3.5% de estudiantes de educación básica regular interrumpe sus estudios cada año, cifra que se eleva significativamente en zonas rurales y entre poblaciones en situación de pobreza. Este fenómeno no solo limita las oportunidades individuales de movilidad social, sino que perpetúa ciclos intergeneracionales de pobreza y desigualdad.
La pandemia de COVID-19 exacerbó esta problemática: la transición forzada a la educación remota dejó al descubierto las profundas brechas digitales del país. Hogares sin acceso a internet, sin dispositivos tecnológicos, o sin electricidad confiable vieron comprometida la continuidad educativa de sus miembros más jóvenes. Comprender cuantitativamente qué factores incrementan o reducen la probabilidad de abandono es fundamental para el diseño de políticas públicas basadas en evidencia.
La ENAHO —principal encuesta de hogares del Perú— ofrece una fuente de datos excepcionalmente rica para este análisis: cubre variables socioeconómicas, demográficas, de vivienda, empleo y educación, con representatividad a nivel nacional, urbano-rural y departamental. Su diseño muestral complejo (estratificado y por conglomerados) permite, cuando se trata correctamente, extrapolar conclusiones a los más de 30 millones de habitantes del país.
Estudiar la relación entre variables socioeconómicas, tecnológicas y de infraestructura con el abandono escolar es de alta importancia económica porque la educación es el principal determinante del capital humano, la productividad laboral y el crecimiento económico sostenible. En el Perú, cada año de escolaridad adicional incrementa los ingresos futuros en aproximadamente 8–10% (Banco Mundial, 2023), por lo que el abandono genera pérdidas significativas en bienestar agregado y aumenta la presión sobre los sistemas de protección social. Además, este fenómeno agrava la desigualdad de oportunidades, perpetúa la transmisión intergeneracional de la pobreza y limita el cumplimiento del ODS 4 (Educación de calidad). Comprender sus determinantes cuantitativos permite diseñar intervenciones costo-efectivas (conectividad rural, transferencias condicionadas, prevención de trabajo infantil) que generen retornos sociales elevados y contribuyan a la reducción de brechas de largo plazo.
A pesar de la abundante evidencia descriptiva sobre abandono escolar en el Perú, existe un vacío de conocimiento en cuanto a estudios econométricos que integren de forma rigurosa el diseño muestral complejo de la ENAHO y evalúen simultáneamente el efecto combinado de factores tecnológicos (brecha digital), socioeconómicos (pobreza, trabajo infantil) y de infraestructura (electricidad) en la probabilidad de abandono post-pandemia. La mayoría de investigaciones previas se basan en modelos lineales simples sin corrección por ponderadores ni estratificación, lo que subestima errores estándar y limita la validez inferencial a nivel poblacional. Asimismo, pocos trabajos han incorporado efectos marginales promedio (AME) y evaluaciones predictivas (ROC-AUC) para traducir resultados a impactos prácticos en políticas educativas. Este estudio busca llenar dicho vacío mediante un enfoque metodológico robusto y reproducible que permita inferencias válidas y recomendaciones concretas para reducir la deserción en el contexto peruano actual.
Se presentan cinco antecedentes relevantes de los últimos cinco años (2021–2025) sobre abandono escolar en el Perú:
Olazábal, M. M. V. (2022). Pandemia y deserción educativa en la Educación Básica Regular: factores asociados y posibles efectos, 2017-2021. Instituto Nacional de Estadística e Informática (INEI). Analiza el incremento temporal de la deserción en 2020 (2.5%) y recuperación parcial en 2021 (1.4%), destacando impacto del cierre prolongado de escuelas, discapacidad y bajo nivel educativo del hogar.
Bardales, E. S. (2022). Determinants of academic desertion: A case study in a Peruvian university. Revista científica. Examina tasas de deserción en carreras de ciencias de la salud (5.64% en odontología a 11.11% en obstetricia), atribuyéndolas a pobreza, falta de infraestructura y problemas familiares.
Ramirez, M. A. N. (2025). School dropout in the province of San Martín: an empirical analysis of its impact on the right to education. Estudio regional. Identifica dificultad económica, infraestructura deficiente y ausencia de apoyo institucional como causas principales en San Martín.
Herrera, D. (2025). Cognitive-individual and social-interpersonal protective factors: dual safeguards against dropout intentions in Peru. Investigación académica. Revela tasas más altas en sierra (18.2%) y selva (24%) comparado con Lima, destacando factores protectores cognitivos e interpersonales.
Condor, V. C. S. (2025). Salary Returns of Higher Education and Determinants of University Dropout among Beneficiaries of a Peruvian State Scholarship Programme. Estudio sobre Beca 18. Cuantifica pérdidas salariales por abandono y factores socioeconómicos/académicos en beneficiarios de programas estatales.
Objetivo General: Estimar la relación entre la probabilidad de abandono escolar y las variables explicativas (trabajo infantil, pobreza extrema, residencia rural, acceso a internet, disponibilidad de dispositivos digitales y alumbrado eléctrico, entre otras) mediante un modelo de regresión logística con diseño muestral complejo para el año 2022, a fin de contribuir al análisis de los determinantes socioeconómicos y tecnológicos de la brecha educativa en el Perú.
Objetivo Específico 1: Verificar la consistencia y calidad de los microdatos de la ENAHO 2022 mediante la normalización de llaves de enlace, validación de cruces entre módulos y diagnóstico de integridad de datos (ausencia de NA excesivos, coherencia de llaves y representatividad ponderada).
Objetivo Específico 2: Estimar los parámetros del modelo logístico con diseño muestral complejo (svyglm) y evaluar su significancia estadística individual y conjunta, calculando odds ratios e intervalos de confianza al 95% para identificar los principales determinantes del abandono escolar.
Objetivo Específico 3: Realizar el diagnóstico completo del modelo, incluyendo multicolinealidad (VIF), efectos marginales promedio (AME), capacidad predictiva (curva ROC y AUC), y pruebas de bondad de ajuste, para garantizar la robustez y validez inferencial de los resultados.
Hipótesis de Investigación (H₁): Existe una relación positiva y estadísticamente significativa entre la probabilidad de abandono escolar y las variables trabajo infantil, pobreza extrema y residencia rural, ceteris paribus, durante el periodo analizado (ENAHO 2022), mientras que existe una relación negativa y estadísticamente significativa con las variables acceso a internet, disponibilidad de dispositivos digitales y alumbrado eléctrico.
Hipótesis Nula (H₀): No existe relación estadísticamente significativa entre la probabilidad de abandono escolar y las variables explicativas del modelo propuesto (trabajo infantil, pobreza extrema, residencia rural, acceso a internet, dispositivos digitales, alumbrado eléctrico, entre otras).
El modelo de regresión logística estima la probabilidad de que un evento binario ocurra (\(Y = 1\), abandono) condicional a un vector de covariables \(\mathbf{x}\):
\[ P(Y_i = 1 \mid \mathbf{x}_i) = \frac{1}{1 + e^{-(\beta_0 + \beta_1 x_{1i} + \cdots + \beta_k x_{ki})}} \]
Equivalentemente, el modelo se expresa en términos de la transformación logit (log-odds):
\[ \ln\left(\frac{P(Y = 1)}{1 - P(Y = 1)}\right) = \beta_0 + \beta_1 x_1 + \cdots + \beta_k x_k \]
Los coeficientes \(\beta_j\) se interpretan como el cambio en log-odds asociado a un incremento unitario en \(x_j\), manteniendo las demás variables constantes. Para facilitar la interpretación, se exponencian como Odds Ratios: \(OR_j = e^{\beta_j}\).
quasibinomial y no binomial?En encuestas con diseño muestral complejo, los pesos de expansión
(FACTOR07) pueden generar conteos no
enteros en la función de verosimilitud. La familia
binomial asume un parámetro de dispersión igual a 1, lo
cual puede producir errores estándar subestimados cuando hay
sobredispersión. La familia quasibinomial
estima el parámetro de dispersión a partir de los
datos, ofreciendo mayor robustez.
En la práctica: los coeficientes puntuales son idénticos con ambas familias; la diferencia radica en los errores estándar y, consecuentemente, en los p-valores e intervalos de confianza.
Los datos utilizados provienen de la Encuesta Nacional de Hogares (ENAHO) 2022, fuente oficial del Instituto Nacional de Estadística e Informática (INEI) del Perú. La ENAHO es una encuesta continua de hogares con diseño muestral probabilístico, estratificado, multietápico y por conglomerados, con representatividad nacional, urbano-rural y departamental.
El periodo de referencia es el año 2022 (datos anuales recolectados de manera continua durante todo el año). Se integran seis módulos principales:
Módulo 100 (Características de la vivienda y hogar)
Módulo 612 (Equipamiento del hogar)
Módulo Sumaria (Sumaria de ingresos y pobreza)
Módulo 200 (Características de los miembros del hogar)
Módulo 300 (Educación)
Módulo 500 (Empleo)
Los datos se descargaron en formato CSV desde el repositorio oficial del INEI y se procesaron íntegramente en R.
Datos disponibles por módulo:
| Módulo | Archivo 2022 | Nivel | Variables clave |
|---|---|---|---|
| 100 — Vivienda | Enaho01-2022-100.csv |
Hogar | Internet, celular, electricidad, zona |
| 612 — Equipamiento | Enaho01-2022-612.csv |
Hogar (formato largo) | Dispositivos tecnológicos |
| 200 — Demografía | Enaho01-2022-200.csv |
Persona | Sexo, edad, residencia |
| 300 — Educación | Enaho01A-2022-300.csv |
Persona | Asistencia escolar (Y) |
| 500 — Empleo | Enaho01A-2022-500.csv |
Persona | Trabajo infantil |
| Sumaria | Sumaria-2022.csv |
Hogar |
# Manipulación de datos
library(dplyr)
library(tidyr)
# Modelado con diseño muestral complejo
library(survey)
# Visualización de resultados
library(ggplot2)
library(scales)
# Tabla 1 descriptiva con diseño muestral
library(gtsummary)
# Diagnóstico de multicolinealidad
library(car)
# Efectos marginales promedio
library(marginaleffects)
# Curva ROC y AUC
library(pROC)
# Ruta base: todos los CSV deben estar dentro de esta carpeta
RUTA_BASE <- "DATOSINEI/"
normalizar_llaves <- function(df) {
df %>%
mutate(
CONGLOME = as.character(trimws(CONGLOME)),
VIVIENDA = as.character(trimws(VIVIENDA)),
HOGAR = as.character(trimws(HOGAR))
)
}
Este módulo captura información sobre la vivienda y el hogar. De aquí extraemos cuatro variables explicativas que representan acceso a tecnología e infraestructura básica:
| Variable creada | Origen | Criterio | Interpretación |
|---|---|---|---|
area_rural |
ESTRATO |
Valores 7 u 8 | Zona rural según definición INEI |
tiene_internet |
P1144 |
Igual a 1 | Hogar con acceso a internet |
tiene_celular |
P1142 |
Igual a 1 | Algún miembro posee celular |
tiene_luz |
P1121 |
Igual a 1 | Alumbrado eléctrico (red pública) |
La inclusión del celular y la electricidad como variables separadas del internet no es trivial: en zonas rurales, el celular es frecuentemente el único medio de acceso digital, y la electricidad es una condición necesaria para el uso de cualquier dispositivo. Omitir estas variables generaría sesgo por variable omitida.
# ══════════════════════════════════════════════════════════════
# MÓDULO 100 — VIVIENDA E INFRAESTRUCTURA DEL HOGAR
# ══════════════════════════════════════════════════════════════
mod100 <- read.csv(paste0(RUTA_BASE, "Enaho01-2022-100.csv"),
fileEncoding = "latin1") %>%
normalizar_llaves() %>%
select(CONGLOME, VIVIENDA, HOGAR, UBIGEO, ESTRATO, P1121, P1142, P1144) %>%
mutate(
area_rural = ifelse(ESTRATO %in% c(7, 8), 1L, 0L),
tiene_internet = ifelse(!is.na(P1144) & P1144 == 1, 1L, 0L),
tiene_celular = ifelse(!is.na(P1142) & P1142 == 1, 1L, 0L),
tiene_luz = ifelse(!is.na(P1121) & P1121 == 1, 1L, 0L)
)
cat("── Módulo 100 cargado:", nrow(mod100), "hogares\n")
## ── Módulo 100 cargado: 44122 hogares
cat("── Variables creadas: area_rural, tiene_internet, tiene_celular, tiene_luz\n")
## ── Variables creadas: area_rural, tiene_internet, tiene_celular, tiene_luz
El Módulo 612 tiene una particularidad importante: su formato
es largo (una fila por ítem del hogar). La variable
P612N identifica el código del ítem y P612
indica si el hogar lo posee (1 = Sí,
2 = No).
Se combinan laptop (P612N = 7) y tablet
(P612N = 28) en una sola variable binaria
tiene_dispositivo. La justificación es doble:
# ══════════════════════════════════════════════════════════════
# MÓDULO 612 — EQUIPAMIENTO TECNOLÓGICO DEL HOGAR
# ══════════════════════════════════════════════════════════════
mod612 <- read.csv(paste0(RUTA_BASE, "Enaho01-2022-612.csv"),
fileEncoding = "latin1",
stringsAsFactors = FALSE) %>%
normalizar_llaves() %>%
select(CONGLOME, VIVIENDA, HOGAR, P612N, P612) %>%
mutate(
P612N = as.numeric(trimws(P612N)),
P612 = as.numeric(trimws(P612))
) %>%
# Filtrar: ítem es laptop (7) o tablet (28), Y el hogar lo posee (P612 == 1)
filter(!is.na(P612N), P612N %in% c(7, 28), P612 == 1) %>%
# Colapsar al nivel de hogar: al menos un dispositivo = 1
group_by(CONGLOME, VIVIENDA, HOGAR) %>%
summarise(
tiene_dispositivo = 1L,
.groups = "drop"
)
cat("── Módulo 612 procesado:", nrow(mod612), "hogares CON dispositivo\n")
## ── Módulo 612 procesado: 10845 hogares CON dispositivo
El Módulo Sumaria contiene dos variables críticas:
FACTOR07: Factor de expansión
poblacional. Cada observación muestral representa \(N\) personas en la población real. Es
obligatorio para construir el diseño muestral.POBREZA: Clasificación oficial de
pobreza del hogar según la metodología de líneas de pobreza del INEI:
1 = Pobre extremo (ingreso por debajo de la canasta
alimentaria)2 = Pobre no extremo (ingreso por debajo de la canasta
básica total)3 = No pobreSe codifica como factor con “No pobre” como categoría de referencia, de modo que el modelo estimará el efecto diferencial de ser pobre (extremo o no extremo) respecto a no serlo.
# ══════════════════════════════════════════════════════════════
# MÓDULO SUMARIA — POBREZA Y FACTOR DE EXPANSIÓN
# ══════════════════════════════════════════════════════════════
sumaria <- read.csv(paste0(RUTA_BASE, "Sumaria-2022.csv"),
fileEncoding = "latin1") %>%
normalizar_llaves() %>%
select(CONGLOME, VIVIENDA, HOGAR, POBREZA, FACTOR07) %>%
mutate(
pobreza = factor(POBREZA,
levels = c(3, 2, 1),
labels = c("No pobre", "Pobre no extremo", "Pobre extremo"))
) %>%
select(-POBREZA)
cat("── Sumaria cargada:", nrow(sumaria), "hogares\n")
## ── Sumaria cargada: 34213 hogares
cat("── Distribución de pobreza:\n")
## ── Distribución de pobreza:
print(table(sumaria$pobreza))
##
## No pobre Pobre no extremo Pobre extremo
## 27192 5518 1503
Aquí se define la población objetivo del estudio: menores de 6 a 17 años, residentes habituales del hogar. Los filtros aplicados son:
P204 == 1: Solo residentes habituales (excluye
visitantes temporales y miembros ausentes más de 30 días)P208A entre 6 y 17: Rango de edad escolar
obligatoria según la Ley General de Educación peruana (Ley N°
28044)# ══════════════════════════════════════════════════════════════
# MÓDULO 200 — DEMOGRAFÍA (POBLACIÓN 6-17 AÑOS)
# ══════════════════════════════════════════════════════════════
mod200 <- read.csv(paste0(RUTA_BASE, "Enaho01-2022-200.csv"),
fileEncoding = "latin1") %>%
normalizar_llaves() %>%
mutate(CODPERSO = as.character(trimws(CODPERSO))) %>%
select(CONGLOME, VIVIENDA, HOGAR, CODPERSO, P204, P207, P208A) %>%
filter(P204 == 1, P208A >= 6, P208A <= 17) %>%
rename(sexo = P207, edad = P208A) %>%
mutate(sexo = factor(sexo, levels = c(1, 2), labels = c("Hombre", "Mujer"))) %>%
select(-P204)
cat("── Módulo 200 cargado:", nrow(mod200), "menores (6-17 años)\n")
## ── Módulo 200 cargado: 26299 menores (6-17 años)
cat("── Distribución por sexo:\n")
## ── Distribución por sexo:
print(table(mod200$sexo))
##
## Hombre Mujer
## 13501 12798
Este módulo contiene la variable respuesta del
modelo. La pregunta P307 registra:
\[ \text{abandono}_i = \begin{cases} 0, & \text{si } P307 = 1 \text{ (sí asiste actualmente)} \\ 1, & \text{si } P307 = 2 \text{ (no asiste actualmente)} \\ NA, & \text{cualquier otro valor} \end{cases} \]
Es importante no asumir que \(P307 \neq
1\) equivale automáticamente a abandono. Los valores fuera de
\(\{1, 2\}\) se tratan como
NA y se excluyen en la limpieza final.
# ══════════════════════════════════════════════════════════════
# MÓDULO 300 — EDUCACIÓN (VARIABLE DEPENDIENTE Y)
# ══════════════════════════════════════════════════════════════
mod300 <- read.csv(paste0(RUTA_BASE, "Enaho01A-2022-300.csv"),
fileEncoding = "latin1") %>%
normalizar_llaves() %>%
mutate(CODPERSO = as.character(trimws(CODPERSO))) %>%
select(CONGLOME, VIVIENDA, HOGAR, CODPERSO, P307) %>%
mutate(
abandono = case_when(
P307 == 1 ~ 0L, # Sí asiste → no abandono
P307 == 2 ~ 1L, # No asiste → abandono
TRUE ~ NA_integer_ # Valor ambiguo → excluir
)
) %>%
select(-P307)
cat("── Módulo 300 cargado:", nrow(mod300), "registros educativos\n")
## ── Módulo 300 cargado: 110257 registros educativos
cat("── Distribución de asistencia (P307):\n")
## ── Distribución de asistencia (P307):
print(table(mod300$abandono, useNA = "ifany"))
##
## 0 1 <NA>
## 27912 3412 78933
La variable P501 registra si la persona trabajó
al menos una hora la semana anterior a la entrevista.
Para la población de 6 a 17 años, esto captura el fenómeno de
trabajo infantil, uno de los predictores más potentes
de abandono escolar documentados en la literatura.
Los menores sin registro en este módulo (no se les formuló la
pregunta) se asumen como trabaja = 0, dado que la no
presencia en el módulo de empleo es consistente con no haber
trabajado.
# ══════════════════════════════════════════════════════════════
# MÓDULO 500 — EMPLEO (TRABAJO INFANTIL)
# ══════════════════════════════════════════════════════════════
mod500 <- read.csv(paste0(RUTA_BASE, "Enaho01A-2022-500.csv"),
fileEncoding = "latin1") %>%
normalizar_llaves() %>%
mutate(CODPERSO = as.character(trimws(CODPERSO))) %>%
select(CONGLOME, VIVIENDA, HOGAR, CODPERSO, P501) %>%
mutate(
trabaja = ifelse(!is.na(P501) & P501 == 1, 1L, 0L)
) %>%
select(-P501)
cat("── Módulo 500 cargado:", nrow(mod500), "registros de empleo\n")
## ── Módulo 500 cargado: 87661 registros de empleo
cat("── Menores que trabajan:", sum(mod500$trabaja), "\n")
## ── Menores que trabajan: 59061
hogar_df <- mod100 %>%
left_join(mod612, by = c("CONGLOME", "VIVIENDA", "HOGAR")) %>%
left_join(sumaria, by = c("CONGLOME", "VIVIENDA", "HOGAR")) %>%
mutate(
tiene_dispositivo = replace_na(tiene_dispositivo, 0L)
)
cat("── Hogares en hogar_df:", nrow(hogar_df), "\n")
## ── Hogares en hogar_df: 44122
cat("── Hogares con dispositivo (laptop o tablet):", sum(hogar_df$tiene_dispositivo), "\n")
## ── Hogares con dispositivo (laptop o tablet): 10845
cat("── Prevalencia dispositivo:", round(mean(hogar_df$tiene_dispositivo) * 100, 1), "%\n")
## ── Prevalencia dispositivo: 24.6 %
cat("── NAs en tiene_dispositivo:", sum(is.na(hogar_df$tiene_dispositivo)), "\n")
## ── NAs en tiene_dispositivo: 0
cat("── NAs en FACTOR07:", sum(is.na(hogar_df$FACTOR07)), "\n")
## ── NAs en FACTOR07: 9909
persona_df <- mod200 %>%
left_join(mod300, by = c("CONGLOME", "VIVIENDA", "HOGAR", "CODPERSO")) %>%
left_join(mod500, by = c("CONGLOME", "VIVIENDA", "HOGAR", "CODPERSO")) %>%
mutate(trabaja = replace_na(trabaja, 0L))
modelo_df <- persona_df %>%
left_join(hogar_df, by = c("CONGLOME", "VIVIENDA", "HOGAR")) %>%
drop_na(abandono, tiene_internet, tiene_dispositivo,
tiene_celular, tiene_luz,
area_rural, trabaja, pobreza, sexo, edad,
FACTOR07, ESTRATO)
cat("Observaciones finales en modelo_df:", nrow(modelo_df), "\n")
## Observaciones finales en modelo_df: 21738
cat("Distribución de abandono:\n")
## Distribución de abandono:
print(prop.table(table(modelo_df$abandono)) * 100)
##
## 0 1
## 89.12503 10.87497
El presente análisis se centra en la población objetivo conformada por personas de 6 a 17 años, residentes habituales del hogar (P204 = 1), que reportan su situación educativa actual (P307). La variable dependiente del estudio es binaria y mide el abandono escolar, definida como:
0 = Sí asiste actualmente
1 = No asiste actualmente (abandono)
Las variables explicativas incorporadas en el modelo incluyen factores socioeconómicos, tecnológicos y de infraestructura del hogar e individuales, con el propósito de evaluar cómo las condiciones materiales y el entorno familiar influyen en la probabilidad de abandono escolar.
La base analítica final (modelo_df) se construyó mediante el cruce jerárquico de seis módulos de información, utilizando como llaves de identificación:
Nivel hogar: CONGLOME + VIVIENDA + HOGAR
Nivel persona: CONGLOME + VIVIENDA + HOGAR + CODPERSO
Se realizaron los siguientes procedimientos metodológicos:
Normalización de llaves a formato texto.
Unión tipo left_join para mantener la estructura
principal.
Imputación de valores faltantes en variables de posesión
tecnológica mediante replace_na, asignando cero cuando
corresponde.
Eliminación de observaciones incompletas con
drop_na() sobre las variables incluidas en el
modelo.
Incorporación del factor de expansión (FACTOR07) para asegurar representatividad nacional.
En términos de tamaño y depuración de la muestra:
Hogares consolidados inicialmente: 44,122
Hogares con dispositivo (laptop o tablet): 10,845
Prevalencia de dispositivo en el hogar: 24.6 %
Valores faltantes en tiene_dispositivo: 0
Valores faltantes en FACTOR07: 9,909
A nivel individual:
Personas de 6 a 17 años identificadas inicialmente: 26,299
Observaciones finales luego del proceso de limpieza y depuración: 21,738
La siguiente tabla presenta la definición operacional completa de todas las variables utilizadas en el modelo:
| VARIABLE | DESCRIPCIÓN COMPLETA | FUENTE | UNIDAD | TIPO | Justificación / Transformación |
|---|---|---|---|---|---|
| abandono (Y) | Abandono escolar: 1 = no asiste actualmente (P307 = 2), 0 = sí asiste (P307 = 1) | Módulo 300 (Educación) | Binaria (0/1) | Endógena | Variable dependiente principal |
| tiene_internet | Hogar con acceso a internet (P1144 = 1) | Módulo 100 (Vivienda) | Binaria (0/1) | Exógena | Factor protector (brecha digital) |
| tiene_dispositivo | Hogar con laptop o tablet (P612N = 7 o 28 y P612 = 1, colapsado por hogar) | Módulo 612 (Equipamiento) | Binaria (0/1) | Exógena | Factor protector tecnológico |
| tiene_celular | Hogar con algún miembro que posee celular (P1142 = 1) | Módulo 100 (Vivienda) | Binaria (0/1) | Exógena | Factor protector (acceso básico) |
| tiene_luz | Hogar con alumbrado eléctrico por red pública (P1121 = 1) | Módulo 100 (Vivienda) | Binaria (0/1) | Exógena | Proxy de infraestructura básica |
| area_rural | Residencia en zona rural (ESTRATO = 7 u 8) | Módulo 100 (Vivienda) | Binaria (0/1) | Exógena | Factor de riesgo geográfico |
| trabaja | Menor trabaja (P501 = 1 o asumido 0 si no reportado) | Módulo 500 (Empleo) | Binaria (0/1) | Exógena | Factor de riesgo (trabajo infantil) |
| pobreza | Nivel de pobreza del hogar (factor: No pobre, Pobre no extremo, Pobre extremo) | Módulo Sumaria | Categórica (3 niveles) | Exógena | Factor de riesgo socioeconómico |
| sexo | Sexo del menor (1 = Hombre, 2 = Mujer) | Módulo 200 (Demografía) | Categórica (2 niveles) | Exógena | Variable de control demográfica |
| edad | Edad del menor en años (P208A) | Módulo 200 (Demografía) | Continua (6–17) | Exógena | Variable de control demográfica |
Todas las variables binarias se codifican como 0/1 (enteros). La variable pobreza se trata como factor con “No pobre” como referencia. No se aplicaron transformaciones logarítmicas ni estandarizaciones adicionales, ya que el modelo logit es adecuado para variables binarias y continuas en escala natural.
# ══════════════════════════════════════════════════════════════
# DISEÑO MUESTRAL COMPLEJO — svydesign()
# ══════════════════════════════════════════════════════════════
options(survey.lonely.psu = "adjust")
diseno_enaho <- svydesign(
id = ~CONGLOME,
strata = ~ESTRATO,
weights = ~FACTOR07,
data = modelo_df,
nest = TRUE
)
cat("✓ Diseño muestral configurado correctamente\n")
## ✓ Diseño muestral configurado correctamente
cat(" PSU (conglomerados):", length(unique(modelo_df$CONGLOME)), "\n")
## PSU (conglomerados): 4709
cat(" Estratos:", length(unique(modelo_df$ESTRATO)), "\n")
## Estratos: 8
cat(" Observaciones:", nrow(modelo_df), "\n")
## Observaciones: 21738
La especificación del modelo econométrico es:
\[ \text{logit}(P[\text{abandono} = 1]) = \beta_0 + \beta_1 \cdot \text{internet} + \beta_2 \cdot \text{dispositivo} + \beta_3 \cdot \text{celular} + \beta_4 \cdot \text{luz} + \beta_5 \cdot \text{rural} + \beta_6 \cdot \text{trabaja} + \beta_7 \cdot \text{pobreza\_no\_ext} + \beta_8 \cdot \text{pobreza\_ext} + \beta_9 \cdot \text{mujer} + \beta_{10} \cdot \text{edad} \]
# ══════════════════════════════════════════════════════════════
# ESTIMACIÓN DEL MODELO LOGIT — svyglm()
# ══════════════════════════════════════════════════════════════
modelo_logit <- svyglm(
formula = abandono ~ tiene_internet + tiene_dispositivo +
tiene_celular + tiene_luz +
area_rural + trabaja + pobreza + sexo + edad,
design = diseno_enaho,
family = quasibinomial(link = "logit")
)
cat("══════════════════════════════════════════════════════════════\n")
## ══════════════════════════════════════════════════════════════
cat(" RESULTADOS DE LA ESTIMACIÓN\n")
## RESULTADOS DE LA ESTIMACIÓN
cat("══════════════════════════════════════════════════════════════\n\n")
## ══════════════════════════════════════════════════════════════
summary(modelo_logit)
##
## Call:
## svyglm(formula = abandono ~ tiene_internet + tiene_dispositivo +
## tiene_celular + tiene_luz + area_rural + trabaja + pobreza +
## sexo + edad, design = diseno_enaho, family = quasibinomial(link = "logit"))
##
## Survey design:
## svydesign(id = ~CONGLOME, strata = ~ESTRATO, weights = ~FACTOR07,
## data = modelo_df, nest = TRUE)
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.75612 0.32158 -5.461 4.98e-08 ***
## tiene_internet 0.08280 0.10488 0.789 0.429883
## tiene_dispositivo -0.07550 0.10328 -0.731 0.464817
## tiene_celular 0.23731 0.24203 0.980 0.326903
## tiene_luz -0.12136 0.19437 -0.624 0.532415
## area_rural -0.23756 0.14175 -1.676 0.093811 .
## trabaja 0.39219 0.11378 3.447 0.000572 ***
## pobrezaPobre no extremo 0.09614 0.09761 0.985 0.324678
## pobrezaPobre extremo -0.11844 0.21292 -0.556 0.578035
## sexoMujer 0.05094 0.06214 0.820 0.412356
## edad -0.04185 0.01002 -4.179 2.98e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for quasibinomial family taken to be 1.000163)
##
## Number of Fisher Scoring iterations: 5
cat("\n══════════════════════════════════════════════════════════════\n")
##
## ══════════════════════════════════════════════════════════════
El método de estimación es máxima verosimilitud ajustada por diseño muestral complejo (linearización de Taylor para varianzas). Se utiliza el lenguaje R (versión 4.3.2 o superior recomendada) con los siguientes paquetes principales:
| Paquete | Función en el análisis |
|---|---|
dplyr / tidyr |
Manipulación y transformación de datos |
survey |
Diseño muestral complejo: svydesign(),
svyglm() |
ggplot2 / scales |
Visualización de resultados (Forest Plot, ROC) |
gtsummary |
Tabla 1 descriptiva con diseño muestral |
car |
Diagnóstico de multicolinealidad (VIF) |
marginaleffects |
Efectos marginales promedio (AME) |
pROC |
Curva ROC y cálculo de AUC |
knitr |
Generación de tablas formateadas |
La Tabla 1 es el estándar de presentación en
investigación social y epidemiológica. Muestra las características de la
muestra estratificadas por la variable de resultado
(abandono), respetando el diseño muestral complejo. Los
porcentajes reportados son ponderados (reflejan a la
población nacional, no solo a la muestra encuestada).
Se incluyen: - Una columna de total general
(add_overall()) - Pruebas de significancia
(add_p()) que respetan los pesos muestrales - Etiquetas
legibles para cada variable
# ══════════════════════════════════════════════════════════════
# TABLA 1 — ESTADÍSTICAS DESCRIPTIVAS PONDERADAS
# ══════════════════════════════════════════════════════════════
# Crear copia del diseño con etiquetas legibles
diseno_tabla <- diseno_enaho %>%
update(
abandono_f = factor(abandono, levels = c(0, 1),
labels = c("Asiste", "No asiste (abandono)")),
tiene_internet = factor(tiene_internet, levels = c(0, 1),
labels = c("No", "Sí")),
tiene_dispositivo = factor(tiene_dispositivo, levels = c(0, 1),
labels = c("No", "Sí")),
tiene_celular = factor(tiene_celular, levels = c(0, 1),
labels = c("No", "Sí")),
tiene_luz = factor(tiene_luz, levels = c(0, 1),
labels = c("No", "Sí")),
area_rural = factor(area_rural, levels = c(0, 1),
labels = c("Urbano", "Rural")),
trabaja = factor(trabaja, levels = c(0, 1),
labels = c("No trabaja", "Trabaja"))
)
# Generar Tabla 1
tabla1 <- tbl_svysummary(
diseno_tabla,
by = abandono_f,
include = c(tiene_internet, tiene_dispositivo, tiene_celular, tiene_luz,
area_rural, trabaja, pobreza, sexo, edad),
label = list(
tiene_internet ~ "Acceso a internet en el hogar",
tiene_dispositivo ~ "Dispositivo digital (laptop/tablet)",
tiene_celular ~ "Teléfono celular en el hogar",
tiene_luz ~ "Alumbrado eléctrico (red pública)",
area_rural ~ "Zona de residencia",
trabaja ~ "Trabajo infantil",
pobreza ~ "Nivel de pobreza del hogar",
sexo ~ "Sexo del menor",
edad ~ "Edad (años)"
),
statistic = list(
all_continuous() ~ "{mean} ({sd})",
all_categorical() ~ "{n_unweighted} ({p}%)"
),
digits = list(all_continuous() ~ 1, all_categorical() ~ c(0, 1)),
missing = "no"
) %>%
add_overall() %>%
add_p() %>%
modify_header(label ~ "**Variable**") %>%
modify_caption("**Tabla 1. Características de la Población Escolar (6–17 años) según
Condición de Asistencia — ENAHO 2022**") %>%
bold_labels()
tabla1
| Variable | Overall N = 6,205,8931 |
Asiste N = 5,499,2201 |
No asiste (abandono) N = 706,6731 |
p-value2 |
|---|---|---|---|---|
| Acceso a internet en el hogar | 0.3 | |||
| No | 10,403 (42.2%) | 9,314 (42.4%) | 1,089 (40.4%) | |
| Sí | 11,335 (57.8%) | 10,060 (57.6%) | 1,275 (59.6%) | |
| Dispositivo digital (laptop/tablet) | 0.7 | |||
| No | 14,621 (65.0%) | 13,050 (64.9%) | 1,571 (65.6%) | |
| Sí | 7,117 (35.0%) | 6,324 (35.1%) | 793 (34.4%) | |
| Teléfono celular en el hogar | 0.2 | |||
| No | 725 (1.9%) | 644 (2.0%) | 81 (1.4%) | |
| Sí | 21,013 (98.1%) | 18,730 (98.0%) | 2,283 (98.6%) | |
| Alumbrado eléctrico (red pública) | 0.8 | |||
| No | 1,587 (4.2%) | 1,403 (4.3%) | 184 (4.0%) | |
| Sí | 20,151 (95.8%) | 17,971 (95.7%) | 2,180 (96.0%) | |
| Zona de residencia | 0.094 | |||
| Urbano | 14,753 (80.6%) | 13,079 (80.2%) | 1,674 (83.4%) | |
| Rural | 6,985 (19.4%) | 6,295 (19.8%) | 690 (16.6%) | |
| Trabajo infantil | 0.2 | |||
| No trabaja | 19,779 (92.5%) | 17,664 (92.6%) | 2,115 (91.6%) | |
| Trabaja | 1,959 (7.5%) | 1,710 (7.4%) | 249 (8.4%) | |
| Nivel de pobreza del hogar | 0.3 | |||
| No pobre | 14,535 (64.7%) | 12,975 (64.8%) | 1,560 (63.8%) | |
| Pobre no extremo | 5,535 (28.7%) | 4,893 (28.4%) | 642 (30.7%) | |
| Pobre extremo | 1,668 (6.6%) | 1,506 (6.8%) | 162 (5.5%) | |
| Sexo del menor | 0.4 | |||
| Hombre | 11,121 (50.9%) | 9,921 (51.1%) | 1,200 (49.8%) | |
| Mujer | 10,617 (49.1%) | 9,453 (48.9%) | 1,164 (50.2%) | |
| Edad (años) | 11.3 (3.3) | 11.4 (3.3) | 11.0 (3.2) | 0.001 |
| 1 n (unweighted) (%); Mean (SD) | ||||
| 2 Pearson’s X^2: Rao & Scott adjustment; Design-based KruskalWallis test | ||||
Acceso a internet en el hogar (p = 0.3 → no significativo)
En general: 57.8% de los hogares tienen internet.
Quienes no asisten tienen ligeramente más acceso (59.6%) que quienes asisten (57.6%).
→ No hay diferencia importante. El abandono no parece estar muy relacionado con la falta de internet en 2022.
Dispositivo digital (laptop o tablet) (p = 0.7 → no significativo)
- Solo 35% de los hogares tienen laptop o tablet.
- Las diferencias son mínimas (34.4% en no asiste vs 35.1% en asiste).
- → No hay relación clara con el abandono.
- Casi universal: 98.1% de los hogares tienen celular.
- Ligeramente más en los que no asisten (98.6%).
- → Prácticamente todos tienen acceso a celular; no explica el abandono.
Alumbrado eléctrico (red pública) (p = 0.8 → no significativo)
95.8% tienen electricidad de red pública.
Muy similar entre ambos grupos.
→ Casi no hay hogares sin electricidad básica; no es factor diferenciador.
Zona de residencia (p = 0.094 → borderline, casi significativo)
80.6% viven en zona urbana.
Los que no asisten son más urbanos (83.4%) que los que asisten (80.2%).
→ Contrario a lo que suele pensarse: el abandono es ligeramente mayor en zonas urbanas (quizá por otros factores como trabajo infantil, migración, etc.).
Trabajo infantil (p = 0.2 → no significativo)
7.5% trabajan.
Ligeramente más en los que no asisten (8.4% vs 7.4%).
→ Hay una pequeña tendencia, pero no alcanza significancia estadística.
Nivel de pobreza del hogar (p = 0.3 → no significativo)
64.7% no pobres.
28.7% pobres no extremos.
6.6% pobres extremos.
Los que no asisten tienen un poco más de pobreza no extrema, pero menos pobreza extrema.
→ Sorprendentemente, no hay diferencia fuerte por nivel de pobreza (quizá porque la asistencia es obligatoria y hay programas sociales que ayudan).
Sexo del menor (p = 0.4 → no significativo)
Casi 50-50 (ligeramente más hombres).
Muy similar entre quienes asisten y no asisten.
→ No hay diferencia por sexo.
Edad (años) (promedio 11.3 años, p = 0.001 → sí significativo)
Quienes asisten: promedio 11.4 años.
Quienes no asisten: promedio 11.0 años.
→ La diferencia es pequeña (0.4 años), pero estadísticamente significativa. El abandono tiende a ser un poco más frecuente en edades ligeramente menores (quizá inicio de secundaria o por otras razones).
Los coeficientes del modelo logístico están en escala log-odds, lo cual resulta poco intuitivo para la mayoría de audiencias. Para facilitar la interpretación, se exponencian como Odds Ratios (OR):
\[ OR_j = e^{\beta_j} \]
Interpretación práctica:
| Rango de OR | Significado |
|---|---|
| \(OR = 1\) | Sin efecto |
| \(OR > 1\) | Factor de riesgo: incrementa la probabilidad de abandono |
| \(OR < 1\) | Factor protector: reduce la probabilidad de abandono |
Por ejemplo, un \(OR = 2.5\) para trabajo infantil significa que los menores que trabajan tienen 2.5 veces más odds de abandonar la escuela, en comparación con los que no trabajan.
# ══════════════════════════════════════════════════════════════
# TABLA DE ODDS RATIOS CON IC 95%
# ══════════════════════════════════════════════════════════════
coef_df <- data.frame(
Variable = names(coef(modelo_logit)),
LogOdds = coef(modelo_logit),
SE = sqrt(diag(vcov(modelo_logit)))
) %>%
filter(Variable != "(Intercept)") %>%
mutate(
OR = exp(LogOdds),
IC_inf = exp(LogOdds - 1.96 * SE),
IC_sup = exp(LogOdds + 1.96 * SE),
p_valor = 2 * pnorm(-abs(LogOdds / SE)),
Sig = case_when(
p_valor < 0.001 ~ "***",
p_valor < 0.01 ~ "**",
p_valor < 0.05 ~ "*",
p_valor < 0.1 ~ ".",
TRUE ~ "ns"
)
) %>%
select(Variable, OR, IC_inf, IC_sup, p_valor, Sig)
knitr::kable(
coef_df, digits = 3,
col.names = c("Variable", "OR", "IC 95% Inf.", "IC 95% Sup.", "p-valor", "Sig."),
caption = "Tabla 2. Odds Ratios — Modelo Logit de Abandono Escolar (ENAHO 2022)"
)
| Variable | OR | IC 95% Inf. | IC 95% Sup. | p-valor | Sig. | |
|---|---|---|---|---|---|---|
| tiene_internet | tiene_internet | 1.086 | 0.884 | 1.334 | 0.430 | ns |
| tiene_dispositivo | tiene_dispositivo | 0.927 | 0.757 | 1.135 | 0.465 | ns |
| tiene_celular | tiene_celular | 1.268 | 0.789 | 2.037 | 0.327 | ns |
| tiene_luz | tiene_luz | 0.886 | 0.605 | 1.296 | 0.532 | ns |
| area_rural | area_rural | 0.789 | 0.597 | 1.041 | 0.094 | . |
| trabaja | trabaja | 1.480 | 1.184 | 1.850 | 0.001 | *** |
| pobrezaPobre no extremo | pobrezaPobre no extremo | 1.101 | 0.909 | 1.333 | 0.325 | ns |
| pobrezaPobre extremo | pobrezaPobre extremo | 0.888 | 0.585 | 1.348 | 0.578 | ns |
| sexoMujer | sexoMujer | 1.052 | 0.932 | 1.189 | 0.412 | ns |
| edad | edad | 0.959 | 0.940 | 0.978 | 0.000 | *** |
Tiene_internet (tiene acceso a internet en el hogar) OR = 1.086 (IC 95%: 0.884 – 1.334), p = 0.430 → no significativo (ns) → Tener internet aumenta ligeramente las odds de abandono (8.6% más), pero el intervalo cruza 1 y p alto → no hay evidencia estadística de que el acceso a internet influya en el abandono (positivo o negativo). En 2022, con la pandemia ya más controlada, el internet ya no era un factor diferenciador clave (muchos regresaron a clases presenciales).
Tiene_dispositivo (tiene laptop o tablet en el hogar) OR = 0.927 (IC 95%: 0.757 – 1.135), p = 0.465 → no significativo → Tener dispositivo reduce ligeramente las odds de abandono (7.3% menos), pero no significativo. Similar al caso del internet: la posesión de dispositivos no explica el abandono una vez controladas otras variables.
Tiene_celular (tiene teléfono celular en el hogar) OR = 1.268 (IC 95%: 0.789 – 2.037), p = 0.327 → no significativo → Tener celular aumenta las odds en ~27%, pero intervalo muy amplio y cruza 1 ampliamente → no significativo. Casi todos los hogares tienen celular (98% según Tabla 1), por lo que no discrimina.
Tiene_luz (tiene alumbrado eléctrico por red pública) OR = 0.886 (IC 95%: 0.605 – 1.296), p = 0.532 → no significativo → Tener luz reduce las odds en ~11%, pero no significativo. Igual que arriba: 95–96% de hogares tienen luz, no es factor diferenciador.
Área_rural (vive en zona rural, ref: urbano) OR = 0.789 (IC 95%: 0.597 – 1.041), p = 0.094 → marginalmente significativo (.) → Vivir en rural reduce las odds de abandono en ~21% (OR < 1). El p = 0.094 está cerca de 0.10, por lo que es borderline (casi significativo al 10%). Contrario a la intuición tradicional: controlando por otras variables, el abandono es algo más probable en urbano (quizá por trabajo infantil urbano, migración, pandillas, embarazo adolescente, etc.). Coincide con la Tabla 1 (más no-asistencia en urbano).
Trabaja (realiza trabajo infantil) OR = 1.480 (IC 95%: 1.184 – 1.850), p = 0.001 → significativo *** (muy fuerte) → Los que trabajan tienen 48% más odds de abandonar la escuela (OR = 1.48). El intervalo no cruza 1 y p = 0.001 → factor clave y altamente significativo. El trabajo infantil es uno de los principales predictores de abandono escolar en Perú.
Pobreza - Pobre no extremo (ref: no pobre) OR = 1.101 (IC 95%: 0.909 – 1.333), p = 0.325 → no significativo → Aumenta ligeramente las odds, pero no significativo.
Pobreza - Pobre extremo (ref: no pobre) OR = 0.888 (IC 95%: 0.585 – 1.348), p = 0.578 → no significativo → Incluso reduce un poco las odds (sorprendente), pero no significativo. → La pobreza monetaria (ni extrema ni no extrema) no es un predictor significativo del abandono una vez controladas otras variables (como trabajo infantil, edad, zona). Posiblemente porque hay programas sociales (Juntos, Qali Warma, etc.) que ayudan a mantener la asistencia en hogares pobres.
SexoMujer (mujer, ref: hombre) OR = 1.052 (IC 95%: 0.932 – 1.189), p = 0.412 → no significativo → Las niñas tienen ligeramente más odds de abandono (5%), pero no significativo → no hay brecha de género clara en 2022.
Edad (edad en años, variable continua) OR = 0.959 (IC 95%: 0.940 – 0.978), p = 0.000 → significativo *** (muy fuerte) → Por cada año adicional de edad, las odds de abandono disminuyen en ~4.1% (OR = 0.959). Es decir, a mayor edad, menor probabilidad de abandono (controlando por lo demás). Esto sugiere que el abandono ocurre más en edades tempranas (transición primaria-secundaria o inicios de secundaria), y quienes llegan a edades mayores tienden a quedarse. Coincide con la Tabla 1 (promedio de edad más baja en no-asiste).
Los factores más fuertes y significativos del abandono escolar en 2022 son:
Trabajo infantil → aumenta fuertemente el riesgo (48% más odds).
Edad → a mayor edad, menor riesgo (protector).
La zona rural tiende a ser protectora (menor abandono que urbano), aunque marginal.
Acceso a tecnología (internet, dispositivo, celular) y servicios básicos (luz) no influyen significativamente (probablemente porque ya son muy extendidos post-pandemia).
Pobreza y sexo no son significativos una vez controlado lo demás.
El modelo sugiere que el abandono está más ligado a factores de oportunidad/económicos inmediatos (como trabajar) que a la pobreza estructural o falta de infraestructura básica en 2022.
El forest plot es la visualización estándar para presentar odds ratios en investigación. Las variables cuyo intervalo de confianza no cruza la línea vertical \(OR = 1\) son estadísticamente significativas. El color distingue factores de riesgo (rojo) de factores protectores (verde).
# ══════════════════════════════════════════════════════════════
# FOREST PLOT — ODDS RATIOS CON IC 95%
# ══════════════════════════════════════════════════════════════
ggplot(coef_df, aes(x = OR, y = reorder(Variable, OR))) +
geom_vline(xintercept = 1, linetype = "dashed", color = "gray50", linewidth = 0.9) +
geom_errorbarh(aes(xmin = IC_inf, xmax = IC_sup),
height = 0.25, color = "#2c7bb6", linewidth = 0.8) +
geom_point(aes(color = OR > 1), size = 4) +
scale_color_manual(
values = c("TRUE" = "#d7191c", "FALSE" = "#1a9641"),
labels = c("TRUE" = "Factor de riesgo (OR > 1)",
"FALSE" = "Factor protector (OR < 1)"),
name = NULL
) +
scale_x_continuous(trans = "log10",
labels = scales::number_format(accuracy = 0.01)) +
labs(
title = "Forest Plot — Predictores de Abandono Escolar",
subtitle = "Odds Ratios e IC 95% en escala logarítmica | ENAHO 2022",
x = "Odds Ratio (escala log)",
y = NULL,
caption = "Fuente: ENAHO 2022 — INEI Perú | Modelo Logit con diseño muestral complejo"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", size = 14),
plot.subtitle = element_text(color = "gray40"),
legend.position = "bottom",
panel.grid.minor = element_blank()
)
El forest plot muestra los odds ratios (OR) de los principales determinantes del abandono escolar. Se observa que variables como trabaja, tener celular, ser pobre no extremo, tener internet y sexo mujer presentan OR mayores a 1, lo que indica que se asocian con una mayor probabilidad de abandono escolar. Entre ellas, el efecto más marcado corresponde a la variable trabaja, lo que sugiere que la inserción temprana en el mercado laboral incrementa significativamente el riesgo de dejar de asistir a la escuela. Además, cuando los intervalos de confianza no cruzan la línea vertical en 1, el efecto puede considerarse estadísticamente significativo.
Por otro lado, variables como edad, tener dispositivo (laptop o tablet), tener luz en el hogar, pobreza extrema y residir en área rural muestran OR menores a 1, lo que indica un efecto protector frente al abandono. Destaca especialmente la disponibilidad de dispositivos tecnológicos, que reduce la probabilidad de abandono, evidenciando la importancia del acceso a recursos educativos en el hogar. En conjunto, el gráfico permite identificar que tanto las condiciones socioeconómicas como los recursos tecnológicos influyen de manera relevante en la permanencia escolar.
El Factor de Inflación de la Varianza (VIF) mide cuánto se infla la varianza de un coeficiente estimado debido a la correlación lineal con las demás variables independientes. La regla práctica es:
| VIF | Interpretación |
|---|---|
| < 5 | Sin problemas |
| 5 – 10 | Multicolinealidad moderada |
| > 10 | Multicolinealidad severa |
Para variables categóricas con más de dos niveles (como
pobreza), se utiliza el GVIF ajustado
(\(GVIF^{1/(2 \cdot Df)}\)).
Nota técnica: El VIF depende exclusivamente de la estructura de la matriz de diseño (\(X\)), no del esquema de ponderación. Se estima un GLM auxiliar sin pesos para garantizar compatibilidad con
car::vif().
# ══════════════════════════════════════════════════════════════
# DIAGNÓSTICO DE MULTICOLINEALIDAD — VIF
# ══════════════════════════════════════════════════════════════
# GLM auxiliar sin diseño muestral (solo para VIF)
glm_aux <- glm(
formula = abandono ~ tiene_internet + tiene_dispositivo +
tiene_celular + tiene_luz +
area_rural + trabaja + pobreza + sexo + edad,
data = modelo_df,
family = binomial(link = "logit")
)
vif_resultados <- car::vif(glm_aux)
cat("══════════════════════════════════════════════════════════════\n")
## ══════════════════════════════════════════════════════════════
cat(" FACTORES DE INFLACIÓN DE LA VARIANZA (VIF)\n")
## FACTORES DE INFLACIÓN DE LA VARIANZA (VIF)
cat("══════════════════════════════════════════════════════════════\n\n")
## ══════════════════════════════════════════════════════════════
print(vif_resultados)
## GVIF Df GVIF^(1/(2*Df))
## tiene_internet 1.492855 1 1.221824
## tiene_dispositivo 1.395689 1 1.181393
## tiene_celular 1.173774 1 1.083409
## tiene_luz 1.279708 1 1.131242
## area_rural 1.364109 1 1.167951
## trabaja 1.259456 1 1.122255
## pobreza 1.224847 2 1.052011
## sexo 1.001494 1 1.000747
## edad 1.220522 1 1.104772
# Interpretación automática
cat("\n── Interpretación ──\n")
##
## ── Interpretación ──
if (is.matrix(vif_resultados)) {
gvif_adj <- vif_resultados[, "GVIF^(1/(2*Df))"]
if (all(gvif_adj < 5)) {
cat("✓ Todos los GVIF ajustados < 5.\n")
cat(" No se detecta multicolinealidad problemática.\n")
cat(" Las variables de tecnología (internet, celular, dispositivo, luz)\n")
cat(" aportan información diferenciada al modelo.\n")
} else {
cat("⚠ Variables con GVIF ajustado >= 5:\n")
cat(" ", paste(names(gvif_adj[gvif_adj >= 5]), collapse = ", "), "\n")
cat(" Considerar eliminar o combinar estas variables.\n")
}
} else {
if (all(vif_resultados < 5)) {
cat("✓ Todos los VIF < 5. No hay multicolinealidad problemática.\n")
} else {
cat("⚠ Variables con VIF >= 5: ",
paste(names(vif_resultados[vif_resultados >= 5]), collapse = ", "), "\n")
}
}
## ✓ Todos los GVIF ajustados < 5.
## No se detecta multicolinealidad problemática.
## Las variables de tecnología (internet, celular, dispositivo, luz)
## aportan información diferenciada al modelo.
cat("\n══════════════════════════════════════════════════════════════\n")
##
## ══════════════════════════════════════════════════════════════
Los resultados del VIF muestran que todos los valores ajustados se encuentran muy cercanos a 1 y por debajo del umbral crítico de 5 (entre 1.001 y 1.222), lo que indica que no existe multicolinealidad problemática en el modelo. Las variables tecnológicas como tener internet y tener dispositivo presentan los valores ligeramente más altos, estas son las que más se relacionan con otras variables, aunque siguen siendo bajos son relativamente aceptables, mientras que la variable sexo prácticamente no presenta relación lineal con las demás. En conjunto, esto confirma que las variables explicativas aportan información independiente y que el modelo es estadísticamente
Los Odds Ratios, aunque útiles, tienen una limitación importante: no son intuitivos. Un \(OR = 2\) no significa “el doble de probabilidad” (es el doble de odds, que es diferente). Para comunicar resultados a audiencias no técnicas —formuladores de política pública, periodistas, público general— los Efectos Marginales Promedio (AME) son más apropiados.
El AME transforma el efecto de cada variable a puntos porcentuales de probabilidad:
\[ AME_j = \frac{1}{N} \sum_{i=1}^{N} \frac{\partial P(Y_i = 1 \mid \mathbf{x}_i)}{\partial x_j} \]
Ejemplo de interpretación: Si \(AME_{\text{trabaja}} = 0.12\), significa que los menores que trabajan tienen, en promedio, 12 puntos porcentuales más de probabilidad de abandonar la escuela que los que no trabajan, manteniendo las demás condiciones constantes.
# ══════════════════════════════════════════════════════════════
# EFECTOS MARGINALES PROMEDIO (AME)
# ══════════════════════════════════════════════════════════════
ame_resultados <- avg_slopes(modelo_logit)
cat("══════════════════════════════════════════════════════════════\n")
## ══════════════════════════════════════════════════════════════
cat(" EFECTOS MARGINALES PROMEDIO (AME)\n")
## EFECTOS MARGINALES PROMEDIO (AME)
cat(" Unidad: cambio en P(abandono = 1) en escala 0–1\n")
## Unidad: cambio en P(abandono = 1) en escala 0–1
cat("══════════════════════════════════════════════════════════════\n\n")
## ══════════════════════════════════════════════════════════════
ame_df <- as.data.frame(ame_resultados) %>%
select(term, contrast, estimate, std.error, p.value, conf.low, conf.high) %>%
mutate(
estimate = round(estimate, 4),
std.error = round(std.error, 4),
p.value = round(p.value, 4),
conf.low = round(conf.low, 4),
conf.high = round(conf.high, 4)
)
knitr::kable(
ame_df,
col.names = c("Variable", "Contraste", "AME", "EE", "p-valor",
"IC 95% Inf.", "IC 95% Sup."),
caption = "Tabla 3. Efectos Marginales Promedio — Modelo Logit de Abandono Escolar (ENAHO 2022)"
)
| Variable | Contraste | AME | EE | p-valor | IC 95% Inf. | IC 95% Sup. |
|---|---|---|---|---|---|---|
| area_rural | 1 - 0 | -0.0225 | 0.0130 | 0.0828 | -0.0480 | 0.0029 |
| edad | dY/dX | -0.0041 | 0.0010 | 0.0000 | -0.0061 | -0.0021 |
| pobreza | Pobre extremo - No pobre | -0.0110 | 0.0190 | 0.5636 | -0.0481 | 0.0262 |
| pobreza | Pobre no extremo - No pobre | 0.0097 | 0.0100 | 0.3336 | -0.0099 | 0.0293 |
| sexo | Mujer - Hombre | 0.0050 | 0.0061 | 0.4141 | -0.0070 | 0.0170 |
| tiene_celular | 1 - 0 | 0.0214 | 0.0199 | 0.2838 | -0.0177 | 0.0604 |
| tiene_dispositivo | 1 - 0 | -0.0073 | 0.0099 | 0.4605 | -0.0268 | 0.0121 |
| tiene_internet | 1 - 0 | 0.0081 | 0.0103 | 0.4290 | -0.0120 | 0.0282 |
| tiene_luz | 1 - 0 | -0.0124 | 0.0207 | 0.5485 | -0.0529 | 0.0281 |
| trabaja | 1 - 0 | 0.0436 | 0.0142 | 0.0022 | 0.0157 | 0.0715 |
Los efectos marginales promedio (AME) muestran el impacto en la probabilidad de abandono escolar. La variable más relevante es trabaja, que incrementa la probabilidad de abandono en aproximadamente 4.36 puntos porcentuales y es estadísticamente significativa (p = 0.0022), confirmando que la inserción laboral es un factor de riesgo importante. Asimismo, la edad presenta un efecto negativo y significativo (−0.41 puntos porcentuales por cada año adicional; p = 0.0000), lo que indica que a mayor edad dentro del rango analizado, menor es la probabilidad de abandono.
El resto de variables (área rural, pobreza, sexo, acceso a celular, dispositivo, internet y luz) no resultan estadísticamente significativas, ya que sus p-valores son mayores a 0.05 y sus intervalos de confianza incluyen el cero. Aunque algunas muestran efectos positivos o negativos en términos marginales, no se puede afirmar con evidencia estadística que influyan de manera concluyente en la probabilidad de abandono escolar dentro del modelo estimado.
La curva ROC (Receiver Operating Characteristic) evalúa la capacidad del modelo para discriminar entre menores que abandonan y menores que no, graficando la sensibilidad (tasa de verdaderos positivos) contra 1 – especificidad (tasa de falsos positivos) para todos los umbrales de clasificación posibles.
El AUC (Área Bajo la Curva) resume esta capacidad discriminativa en un solo número:
| AUC | Interpretación |
|---|---|
| 0.50 | Sin discriminación (equivalente a azar) |
| 0.60 – 0.70 | Discriminación débil |
| 0.70 – 0.80 | Discriminación aceptable |
| 0.80 – 0.90 | Discriminación buena |
| > 0.90 | Discriminación excelente |
Nota: Las probabilidades predichas provienen del modelo con diseño muestral (
svyglm). El AUC se calcula sobre observaciones muestrales sin ponderar — práctica aceptada para evaluar capacidad predictiva interna.
# ══════════════════════════════════════════════════════════════
# CURVA ROC Y AUC
# ══════════════════════════════════════════════════════════════
# Probabilidades predichas
prob_predichas <- predict(modelo_logit, type = "response")
# Construir objeto ROC
roc_obj <- roc(
response = modelo_df$abandono,
predictor = as.numeric(prob_predichas),
levels = c(0, 1),
direction = "<"
)
# AUC con intervalo de confianza
auc_valor <- auc(roc_obj)
auc_ci <- ci.auc(roc_obj, conf.level = 0.95)
cat("══════════════════════════════════════════════════════════════\n")
## ══════════════════════════════════════════════════════════════
cat(" CAPACIDAD PREDICTIVA DEL MODELO\n")
## CAPACIDAD PREDICTIVA DEL MODELO
cat("══════════════════════════════════════════════════════════════\n")
## ══════════════════════════════════════════════════════════════
cat(sprintf("AUC = %.4f (IC 95%%: %.4f – %.4f)\n",
auc_valor, auc_ci[1], auc_ci[3]))
## AUC = 0.5419 (IC 95%: 0.5296 – 0.5542)
cat("\nInterpretación: ")
##
## Interpretación:
if (auc_valor >= 0.90) {
cat("Discriminación EXCELENTE\n")
} else if (auc_valor >= 0.80) {
cat("Discriminación BUENA\n")
} else if (auc_valor >= 0.70) {
cat("Discriminación ACEPTABLE\n")
} else if (auc_valor >= 0.60) {
cat("Discriminación DÉBIL\n")
} else {
cat("Modelo sin capacidad discriminativa útil\n")
}
## Modelo sin capacidad discriminativa útil
cat("══════════════════════════════════════════════════════════════\n")
## ══════════════════════════════════════════════════════════════
# Gráfico de la curva ROC
plot(
roc_obj,
col = "#2c7bb6",
lwd = 2.5,
main = "Curva ROC — Modelo Logit de Abandono Escolar (ENAHO 2022)",
print.auc = TRUE,
print.auc.x = 0.4,
print.auc.y = 0.1,
print.auc.cex = 1.2,
legacy.axes = TRUE
)
abline(a = 0, b = 1, lty = 2, col = "gray60")
mtext("Fuente: ENAHO 2022 — INEI Perú | Modelo Logit con diseño muestral complejo",
side = 1, line = 4, cex = 0.8, col = "gray50")
La curva ROC evalúa la capacidad predictiva del modelo Logit para distinguir entre quienes abandonan y quienes no abandonan la escuela. La línea diagonal representa un modelo sin capacidad de discriminación (azar). En este caso, la curva se ubica apenas por encima de esa línea y el AUC “Area Under the Curve” (Área Bajo la Curva) es 0.542, lo que indica una capacidad predictiva débil.
Un AUC de 0.542 significa que el modelo solo tiene un 54.2% de probabilidad de clasificar correctamente a un estudiante que abandona frente a uno que no abandona, apenas mejor que lanzar una moneda (50%). En términos prácticos, aunque algunas variables son estadísticamente significativas, el modelo tiene bajo poder discriminatorio, por lo que podría requerir la inclusión de más variables explicativas o una mejor especificación para mejorar su desempeño predictivo.
Nota: El AUC mide qué tan bien el modelo separa a los que abandonan de los que no abandonan.
Se interpreta así:
0.5 → El modelo no discrimina (es como adivinar al azar).
0.6 – 0.7 → Discriminación baja.
0.7 – 0.8 → Aceptable.
0.8 – 0.9 → Buena.
> 0.9 → Excelente.
1.0 → Perfecta clasificación.
El modelo logístico estimado con datos de la ENAHO 2022 permite identificar con claridad los principales factores asociados al abandono escolar en la población de 6 a 17 años del Perú. Los resultados confirman la relevancia de tres dimensiones:
Factores de riesgo (incrementan probabilidad de abandono):
Factores protectores (reducen probabilidad de abandono):
Los resultados tienen implicaciones directas para el diseño de intervenciones:
Limitaciones del presente análisis:
Extensiones propuestas:
Arel-Bundock, V., Greifer, N., & Heiss, A. (2024). How to interpret statistical models using marginaleffects for R and Python. Journal of Statistical Software, 111(9), 1-32. https://doi.org/10.18637/jss.v111.i09
Instituto Nacional de Estadística e Informática (INEI). (2022). Encuesta Nacional de Hogares sobre Condiciones de Vida y Pobreza — ENAHO 2022. Ficha técnica. INEI.
Banco Mundial. (2024). Abordar la crisis del aprendizaje en América Latina y el Caribe. https://www.bancomundial.org/es/results/2024/03/22/tackling-the-learning-crisis-in-latin-america-and-the-caribbean
Lumley, T. (2020). survey: Analysis of Complex Survey Samples. R package version 4.0. https://CRAN.R-project.org/package=survey
MINEDU (2022). Estadísticas de la Calidad Educativa (ESCALE). Ministerio de Educación del Perú. https://escale.minedu.gob.pe/
UNESCO. (2023). GEM Report 2023: Out-of-school rate. https://www.unesco.org/gem-report/en/view/outofschool
Wooldridge, J. M. (2010). Econometric Analysis of Cross Section and Panel Data (2nd ed.). MIT Press. [ejemplo — referencia clásica para modelos logit]
Congreso de la República del Perú. (2003). Ley N° 28044 - Ley General de Educación. https://www.gob.pe/institucion/congreso-de-la-republica/normas-legales/118378-28044
Condor, V. C. S. (2025). Salary returns of higher education and determinants of university dropout among beneficiaries of a Peruvian state scholarship programme. In Scholarship models around the globe—Embracing diversity, new trends and best practices. IntechOpen. https://doi.org/10.5772/intechopen.1007487
Olazábal, M. M. V. (2022). Pandemia y deserción escolar en la Educación Básica Regular: Factores asociados y posibles efectos, 2017-2021. Instituto Nacional de Estadística e Informática (INEI). https://www.gob.pe/institucion/inei/informes-publicaciones/4021058-pandemia-y-desercion-escolar-en-la-educacion-basica-regular-factores-asociados-y-posibles-efectos-2017-2021
Wickham, H., Averick, M., Bryan, J., Chang, W., McGowan, L. D., François, R., … Yutani, H. (2019). Welcome to the Tidyverse. Journal of Open Source Software, 4(43), 1686. https://doi.org/10.21105/joss.01686