En este informe vamos a construir un modelo de regresión lineal categórico de prueba con un diagrama de cajas y bigotes, y un modelo de regresión lineal múltiple que permitan predecir el puntaje global de las pruebas Saber 11 a partir de diferentes características de 20000 estudiantes reportadas por el Ministerio de Educación. Este análisis se fundamenta en el uso de técnicas de estadística inferencial y busca identificar las variables que más influyen en el desempeño académico de los estudiantes en esta prueba.
Entre las variables consideradas para el modelo se incluyen tanto características demográficas como factores relacionados con el entorno educativo y los resultados en áreas específicas de conocimiento. La selección de las variables más relevantes se realizará bajo criterios estadísticos establecidos, como la significancia de los coeficientes, el ajuste del modelo (R²) y la validación de supuestos básicos de la regresión lineal.
require(readxl)
datos <- read_excel("muestras_icfes.xlsx", sheet = "Hoja1")
datos <- na.omit(datos)
datos$ESTU_GENERO <- as.factor(datos$ESTU_GENERO)
datos$ESTU_TIENEETNIA <- as.factor(datos$ESTU_TIENEETNIA)
datos$ESTU_DEPTO_RESIDE <- as.factor(datos$ESTU_DEPTO_RESIDE)
datos$FAMI_ESTRATOVIVIENDA <- as.factor(datos$FAMI_ESTRATOVIVIENDA)
datos$COLE_NATURALEZA <- as.factor(datos$COLE_NATURALEZA)
datos$COLE_CALENDARIO <- as.factor(datos$COLE_CALENDARIO)
datos$ESTU_DEPTO_RESIDE <- relevel(datos$ESTU_DEPTO_RESIDE, ref = "ATLANTICO")
modelo_dpto <- lm(PUNT_GLOBAL ~ ESTU_DEPTO_RESIDE, data = datos)
El intercepto nos dió el valor de 240.1633, este es el valor del puntaje global predicho cuando todas las demás variables son iguales a 0. Es decir, es el puntaje predicho para un estudiante que vive en el departamento del ATLÁNTICO, y cuya puntuación en otras variables es 0.
Y comparado con los demás departamentos tenemos los siguientes resultados:
DEPARTAMENTO Diferencia con el Atlántico Error estándar | AMAZONAS | -38.0244 | 8.6406 | | ANTIOQUIA | 6.4737 | 1.5999 | | ARAUCA | -0.4519 | 5.3631 | | BOGOTÁ | 30.1787 | 1.6329 | | BOLIVAR | -10.6029 | 1.9730 | | BOYACA | 18.6334 | 2.6591 | | CALDAS | 14.2293 | 2.9402 | | CAQUETA | -7.2563 | 4.1172 | | CASANARE | 10.6658 | 4.2784 | | CAUCA | -11.7877 | 2.6696 | | CESAR | -1.9916 | 2.4606 | | CHOCO | -42.8595 | 4.2784 | | CORDOBA | -5.7964 | 2.1180 | | CUNDINAMARCA | 12.4054 | 2.0808 | | EXTRANJERO | 9.2367 | 22.9600 | | GUAINIA | -39.2744 | 17.1351 | | GUAVIARE | -12.7883 | 10.5429 | | HUILA | 10.5315 | 2.7678 | | LA GUAJIRA | -23.2752 | 2.5810 | | MAGDALENA | -17.6799 | 2.1883 | | META | 8.0361 | 3.1006 | | NARIÑO | -2.0924 | 2.4304 | | NORTE SANTANDER | 15.2704 | 2.6846 | | PUTUMAYO | -8.5325 | 4.6783 | | QUINDIO | 12.6399 | 3.9562 | | RISARALDA | 14.5260 | 3.0163 | | SAN ANDRES | 1.7117 | 9.1533 | | SANTANDER | 22.1353 | 2.3301 | | SUCRE | -7.9868 | 2.6467 | | TOLIMA | -1.3561 | 2.5683 |
Y tenemos el siguiente diagrama de cajas y bigotes:
# Gráfico de dispersión con línea de regresión
plot(factor(datos$ESTU_DEPTO_RESIDE), datos$PUNT_GLOBAL,
xlab = "Por departamento", ylab = "Puntaje Global",
main = "Regresión Lineal Simple",
col = "blue", pch = 19)
A continuación vamos a realizar el modelo de regresión lineal multiple con el que haremos una prediccion de los resultados esperados si un estudiante tiene ciertas características.
modelo <- lm(PUNT_GLOBAL ~ ESTU_GENERO + ESTU_TIENEETNIA + ESTU_DEPTO_RESIDE + FAMI_ESTRATOVIVIENDA + COLE_NATURALEZA + COLE_CALENDARIO + PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS + PUNT_C_NATURALES + PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES, data = datos)
Los atributos de los estudiantes que tienen el mayor impacto (p < 0.05) frente al puntaje global, son si el estudiante reside en antioquia o el norte de santander comparado con el atlántico para las variables cualitativas, y todos los puntajes de las materias para las variables cuantitativas (Coeficiente de correlación múltiple y ajustado = 1).
Un estudiante masculino, sin etnia, del atlantico, de estrato 3, de un colegio oficial, calendario A, que obtuvo 58 puntos en lectura crítica, 70 en matemáticas, 64 en ciencias naturales, 62 en ciencias sociales y 70 en inglés.
# Creación de estudiante
estudiante0 <- data.frame(
ESTU_GENERO = factor("M", levels = levels(datos$ESTU_GENERO)),
ESTU_TIENEETNIA = factor("Si", levels = levels(datos$ESTU_TIENEETNIA)),
ESTU_DEPTO_RESIDE = factor("ATLANTICO", levels = levels(datos$ESTU_DEPTO_RESIDE)),
FAMI_ESTRATOVIVIENDA = factor("Estrato 3", levels = levels(datos$FAMI_ESTRATOVIVIENDA)),
COLE_NATURALEZA = factor("OFICIAL", levels = levels(datos$COLE_NATURALEZA)),
COLE_CALENDARIO = factor("A", levels = levels(datos$COLE_CALENDARIO)),
PUNT_LECTURA_CRITICA = 58,
PUNT_MATEMATICAS = 70,
PUNT_C_NATURALES = 64,
PUNT_SOCIALES_CIUDADANAS = 62,
PUNT_INGLES = 70
)
# Realizar la predicción con el modelo
prediccion <- predict(modelo, estudiante0)
print(prediccion)
## 1
## 320.0094
Este estudiante tendrá un puntaje de 320.0094 esperado.
Supongamos que tenemos un estudiante que reside en antioquia y obtuvo un puntaje de 65 en matemáticas, hagamos la predicción para este con un modelo de regresión lineal múltiple que contenga exclusivamente estas dos categorías.
# Creación del estudiante
estudiante1 <- data.frame(ESTU_DEPTO_RESIDE = factor("ANTIOQUIA", levels = levels(datos$ESTU_DEPTO_RESIDE)), PUNT_MATEMATICAS = 65)
# Creación del modelo de regresión lineal multiple
modelo_mat <- lm(PUNT_GLOBAL ~ factor(ESTU_DEPTO_RESIDE) + PUNT_MATEMATICAS, data = datos)
require(ggplot2)
# Crear el gráfico de dispersión
ggplot(datos, aes(x = PUNT_MATEMATICAS, y = PUNT_GLOBAL)) +
geom_point(color = "blue") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(title = "Gráfico de Dispersión: Puntaje en Matemáticas vs Puntaje Global",
x = "Puntaje en Matemáticas",
y = "Puntaje Global") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
correlacion_mat <- cor(datos$PUNT_MATEMATICAS, datos$PUNT_GLOBAL)
print(correlacion_mat)
## [1] 0.9039424
El valor del coeficiente de correlación es de 0.9039, lo cual significa que los valores del puntaje global son altamente explicados por el puntaje de matemáticas.
# Predicción
prediccion1 <- predict(modelo_mat, estudiante1)
print(prediccion1)
## 1
## 304.0147
Si el estudiante es de antioquia, y obtuvo 65 en el puntaje de matemáticas de la prueba, el puntaje global esperado será de 304.0147 según el modelo de regresión multiple de departamentos y puntajes de matematica vs el puntaje global.
Supongamos que ahora tenemos un estudiante que obtuvo un puntaje de 75 en ciencias naturales y 42 en lectura crítica, hagamos la predicción para este con un modelo de regresión lineal múltiple que contenga exclusivamente estas dos categorías.
# Creación del estudiante
estudiante2 <- data.frame(PUNT_C_NATURALES = 75, PUNT_LECTURA_CRITICA = 42)
# Creación del modelo de regresión lineal multiple
modelo_cnc_lec <- lm(PUNT_GLOBAL ~ PUNT_C_NATURALES + PUNT_LECTURA_CRITICA, data = datos)
require(ggplot2)
# Gráfico de dispersión entre PUNT_GLOBAL y PUNT_C_NATURALES
ggplot(datos, aes(x = PUNT_C_NATURALES, y = PUNT_GLOBAL)) +
geom_point(color = "green") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(title = "Gráfico de Dispersión: Puntaje en Ciencias naturales vs Puntaje Global",
x = "Puntaje en Ciencias naturales",
y = "Puntaje Global") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
# Gráfico de dispersión entre PUNT_GLOBAL y PUNT_LECTURA_CRITICA
ggplot(datos, aes(x = PUNT_LECTURA_CRITICA, y = PUNT_GLOBAL)) +
geom_point(color = "red") +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
labs(title = "Gráfico de Dispersión: Puntaje en Lectura crítica vs Puntaje Global",
x = "Puntaje en Lectura crítica",
y = "Puntaje Global") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
correlacion_cnc_lec <- cor(datos$PUNT_GLOBAL, datos$PUNT_LECTURA_CRITICA + datos$PUNT_C_NATURALES)
print(correlacion_cnc_lec)
## [1] 0.9715072
El valor del coeficiente de correlación es de 0.9039, lo cual significa que los valores del puntaje global son altamente explicados por el puntaje de ciencias naturales y lectura crítica.
# Predicción
prediccion2 <- predict(modelo_cnc_lec, estudiante2)
print(prediccion2)
## 1
## 292.1683
Si el estudiante obtuvo 42 en el puntaje de lectura critica y 75 en el puntaje de ciencias naturales de la prueba, el puntaje global esperado será de 292.1683 según el modelo de regresión multiple de departamentos y puntajes de matematica vs el puntaje global.
El análisis muestra que el puntaje global en las pruebas Saber 11 está fuertemente influenciado por factores demográficos y académicos, como el departamento de residencia, el estrato socioeconómico, la naturaleza del colegio y los puntajes en áreas específicas como Matemáticas y Lectura Crítica, que presentan alta correlación con el desempeño general. Los modelos predictivos desarrollados son efectivos para estimar el puntaje global y destacan disparidades regionales significativas que requieren atención en términos de políticas educativas. Estas disparidades, junto con el impacto de las áreas académicas clave, evidencian la necesidad de enfoques localizados y personalizados para mejorar el rendimiento estudiantil y cerrar brechas educativas.