Trabajo Final: Modelo de Regresión Lineal Múltiple

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>, …

Modelo de Regresión

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

Conclusión

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.

Analisis de los Resultados

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

Conclusión del analisis de step

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.

Gráficos

Gráfico de Regresión

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.

Normalidad y Linealidad

qqnorm(resid(regresión),
       main = "QQ-Plot: Residuos del Modelo",
       col = "pink", pch = 19)
qqline(resid(regresión), col = "purple", lwd = 2)

Conclusión

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.