Para el desarrollo y analisis de este trabajo tuvimos en cuenta la base de datos open source suministrada por la profesora, que se encuentra en el sitio datos.gov.co, sobre los resultados obtenidos en las pruebas saber 11 - 2019 en Colombia. El desarollo del trabajo tiene como fin construir un modelo de regresión lineal múltiple para lograr predecir el puntaje global de los estudiantes en función de sus puntajes en las areas de: Lectura Crítica, Matemáticas, Ciencias Naturales, Ciencias Sociales y Ciudadanas e Inglés. Ahora se presenta el analisis de dichos datos, la construcción del modelo de regresión y la evaluación de su desempeño.
Con el fin de sintetizar la información de dicha base de datos, filtramos para tomar solo los datos de Bogotá, capital de Colombia.
knitr::opts_chunk$set(echo = TRUE)
library(readxl)
Datos_Regresion_Multiple_Bogota <- read_excel("Datos Regresion Multiple Bogota.xlsx",
col_types = c("text", "date", "text",
"text", "numeric", "text", "text",
"text", "numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "text", "numeric",
"numeric"))
head(Datos_Regresion_Multiple_Bogota)
## # A tibble: 6 × 25
## ESTU_GENERO PERIODO ESTU_TIENEETNIA ESTU_DEPTO_RESIDE
## <chr> <dttm> <chr> <chr>
## 1 M 1955-04-15 00:00:00 No "BOGOTÃ\u0081"
## 2 M 1955-04-15 00:00:00 Si "BOGOTÃ\u0081"
## 3 M 1955-04-15 00:00:00 No "BOGOTÃ\u0081"
## 4 M 1955-04-15 00:00:00 No "BOGOTÃ\u0081"
## 5 M 1955-04-15 00:00:00 No "BOGOTÃ\u0081"
## 6 M 1955-04-15 00:00:00 No "BOGOTÃ\u0081"
## # ℹ 21 more variables: ESTU_COD_RESIDE_DEPTO <dbl>, FAMI_ESTRATOVIVIENDA <chr>,
## # COLE_NATURALEZA <chr>, COLE_CALENDARIO <chr>, PUNT_LECTURA_CRITICA <dbl>,
## # PERCENTIL_LECTURA_CRITICA <dbl>, DESEMP_LECTURA_CRITICA <dbl>,
## # PUNT_MATEMATICAS <dbl>, PERCENTIL_MATEMATICAS <dbl>,
## # DESEMP_MATEMATICAS <dbl>, PUNT_C_NATURALES <dbl>,
## # PERCENTIL_C_NATURALES <dbl>, DESEMP_C_NATURALES <dbl>,
## # PUNT_SOCIALES_CIUDADANAS <dbl>, PERCENTIL_SOCIALES_CIUDADANAS <dbl>, …
Para la realización de este estudio, denominamos como variable dependiente el puntaje globlal de los estudiantes y como variables independientes los puntajes en las áreas de:
Lectura Crítica (PUNT_LECTURA_CRITICA) Matemáticas (PUNT_MATEMÁTICAS) Ciencias Naturales (PUNT_C_NATURALES) Ciencias Sociales y Ciudadanas (PUNT_SOCIALES_CIUDADANAS) Inglés (PUNT_INGLÉS)
En lo que sigue, presentamos el código realizado en R studio Code para ajustar el Módelo de Regresión Lineal Múltiple y analizar su desempeño.
library(dplyr)
datos_numericos <- Datos_Regresion_Multiple_Bogota %>% select_if(is.numeric)
matriz_correlacion <- cor(datos_numericos, use = "complete.obs")
library(corrplot)
corrplot(matriz_correlacion, metodo = "circle", tipo = "full",
col=colorRampPalette(c("pink", "white", "purple"))(200),
tl.col = "black", tl.cex = 0.5,
addCoef.col = "black",
number.cex = 0.2)
regresión <- lm(PUNT_GLOBAL ~ PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS + PUNT_C_NATURALES + PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES, data = Datos_Regresion_Multiple_Bogota)
summary(regresión)
##
## Call:
## lm(formula = PUNT_GLOBAL ~ PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS +
## PUNT_C_NATURALES + PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES,
## data = Datos_Regresion_Multiple_Bogota)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.53663 -0.21900 0.00371 0.20022 0.49946
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.133823 0.129904 1.03 0.305
## PUNT_LECTURA_CRITICA 1.150057 0.003910 294.15 <2e-16 ***
## PUNT_MATEMATICAS 1.156045 0.003688 313.47 <2e-16 ***
## PUNT_C_NATURALES 1.153027 0.004577 251.93 <2e-16 ***
## PUNT_SOCIALES_CIUDADANAS 1.153317 0.003272 352.53 <2e-16 ***
## PUNT_INGLES 0.385254 0.002477 155.51 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2821 on 158 degrees of freedom
## Multiple R-squared: 1, Adjusted R-squared: 1
## F-statistic: 1.06e+06 on 5 and 158 DF, p-value: < 2.2e-16
Este modelo de regresión múltiple muestra que todas las variables independientes (PUNT_LECTURA_CRITICA, PUNT_MATEMATICAS, PUNT_C_NATURALES, PUNT_SOCIALES_CIUDADANAS, PUNT_INGLES) tienen un efecto positivo y significativo sobre PUNT_GLOBAL (p-valor < 2e-16). El modelo es estadísticamente significativo (𝑝<2.2e-16), con un 𝑅^2 de 1, lo que indica que explica toda la variabilidad de la variable dependiente.
El análisis muestra los resultados del procedimiento stepwise para optimizar el modelo de regresión mediante la adición o eliminación de variables, utilizando el AIC como criterio de selección. El modelo inicial incluye todas las variables independientes (PUNT_LECTURA_CRITICA, PUNT_MATEMATICAS, PUNT_C_NATURALES, PUNT_SOCIALES_CIUDADANAS, PUNT_INGLES) y presenta el menor AIC (-409.21), lo que indica un excelente ajuste.
datos_numericos = step(regresión, direction="both", trace=2)
## Start: AIC=-409.21
## PUNT_GLOBAL ~ PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS + PUNT_C_NATURALES +
## PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES
##
## Df Sum of Sq RSS AIC
## <none> 12.6 -409.21
## - PUNT_INGLES 1 1924.4 1937.0 414.92
## - PUNT_C_NATURALES 1 5050.5 5063.0 572.50
## - PUNT_LECTURA_CRITICA 1 6885.1 6897.7 623.21
## - PUNT_MATEMATICAS 1 7819.2 7831.7 644.04
## - PUNT_SOCIALES_CIUDADANAS 1 9889.0 9901.6 682.50
Al evaluar la exclusión de cada variable, se observa que eliminar cualquiera de ellas incrementa el AIC significativamente, deteriorando el modelo. Por ejemplo, la exclusión de PUNT_INGLES aumenta el AIC a 414.92, mientras que eliminar PUNT_C_NATURALES lo eleva aún más a 572.50. Lo que nos confirma que cada una de las variables contribuye de manera significativa al modelo.
plot(regresión$fitted.values, datos_numericos$PUNT_GLOBAL,
main = "Gráfico de dispersión: Predicciones vs Valores Reales",
xlab = "Predicciones del Modelo",
ylab = "Valores Reales de PUNT_GLOBAL",
col = "pink", pch = 19)
abline(0, 1, col = "purple", lwd = 2) # Línea de igualdad
##Conclusión
El gráfico de dispersión compara las predicciones del modelo con los valores reales de PUNT_GLOBAL. Se observa una discrepancia significativa, ya que las predicciones del modelo se agrupan en un rango reducido y no capturan adecuadamente la variabilidad de los valores reales, que están más dispersos.
qqnorm(resid(regresión),
main = "QQ-Plot: Residuos del Modelo",
col = "pink", pch = 19)
qqline(resid(regresión), col = "purple", lwd = 2)
El QQ-Plot muestra que los residuos se alinean con la línea teórica en el centro, indicando cierta normalidad en esa región. Sin embargo, las desviaciones en los extremos sugieren que los residuos no siguen completamente una distribución normal, especialmente en las colas. Esto podría afectar algunos supuestos del modelo.