Introducción

En el siguiente trabajo les mostraremos un análisis de regresión lineal múltiple. Para este análisis, utilizaremos los puntajes del ICFES del año 2019 correspondientes al departamento de Antioquia en Colombia. También encontrarán una matriz de correlación, un gráfico de dispersión y un gráfico de normalidad, donde observaremos de manera gráfica la relación entre las variables evaluadas.

Base de datos

En este fragmento de código encontramos la base de datos que analizaremos más adelante. Para poder cargarla, usamos la librería readxl para leer archivos con extensión .xlsx

knitr::opts_chunk$set(echo = TRUE)
library(readxl)
Datos_Modelo_de_regresion_lienal_multiple_Antioquia <- read_excel("Datos Modelo de regresion lienal multiple Antioquia.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"))

Regresión lineal múltiple

En este fragmento realizamos la matriz de correlación y el análisis de regresión lineal. Para este estudio, tomamos el puntaje global como la variable a analizar y los puntajes de las asignaturas que se evalúan, ya que el desempeño en estas asignaturas afecta directamente el puntaje global de cada estudiante.

# Libreria para transformar todos los datos a numericos
library(dplyr)
library(corrplot)
puntajes <- Datos_Modelo_de_regresion_lienal_multiple_Antioquia %>% select_if(is.numeric)

matriz_correlacion <-cor(puntajes, use = "complete.obs")
corrplot(matriz_correlacion, method = "circle", type = "full",
         col = colorRampPalette(c("purple", "green", "black"))(100),
         tl.col = "black", tl.cex = 0.5,
         addCoef.col = "black", # Agregar coeficientes de correlación
         number.cex = 0.2) # Ajustar el tamaño de los coeficientes

regresionM <- lm(PUNT_GLOBAL ~ PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS + PUNT_C_NATURALES + PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES, data = puntajes)
# Mostramos el resumen del análisis
summary(regresionM)
## 
## Call:
## lm(formula = PUNT_GLOBAL ~ PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS + 
##     PUNT_C_NATURALES + PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES, 
##     data = puntajes)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.54555 -0.25548  0.03417  0.23524  0.54708 
## 
## Coefficients:
##                          Estimate Std. Error t value Pr(>|t|)    
## (Intercept)              0.084896   0.110865   0.766    0.445    
## PUNT_LECTURA_CRITICA     1.156895   0.003566 324.438   <2e-16 ***
## PUNT_MATEMATICAS         1.154426   0.003082 374.628   <2e-16 ***
## PUNT_C_NATURALES         1.154612   0.003618 319.168   <2e-16 ***
## PUNT_SOCIALES_CIUDADANAS 1.151709   0.003297 349.354   <2e-16 ***
## PUNT_INGLES              0.379979   0.002729 139.237   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2957 on 193 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 9.562e+05 on 5 and 193 DF,  p-value: < 2.2e-16

Conclusión

La regresión muestra que todos los puntajes de las materias (Lectura Crítica, Matemáticas, Ciencias Naturales, Sociales y Ciudadanas, e Inglés) tienen una relación positiva y altamente significativa con el puntaje global (PUNT_GLOBAL), con coeficientes de estimación muy elevados y valores p menores a 0.001. El modelo tiene un ajuste perfecto (R-squared = 1), lo que sugiere que las variables independientes explican completamente la variabilidad del puntaje global. Esto indica que las puntuaciones en las diferentes áreas académicas influyen de manera significativa en el puntaje global.

Analisis de regresión usando step

Realizamos un análisis de regresión mediante un enfoque de selección de modelos basado en el criterio de información de Akaike (AIC), usando la función step

puntajes=step(regresionM, direction="both", trace=2)
## Start:  AIC=-479.04
## PUNT_GLOBAL ~ PUNT_LECTURA_CRITICA + PUNT_MATEMATICAS + PUNT_C_NATURALES + 
##     PUNT_SOCIALES_CIUDADANAS + PUNT_INGLES
## 
##                            Df Sum of Sq     RSS     AIC
## <none>                                     16.9 -479.04
## - PUNT_INGLES               1    1695.0  1711.9  438.26
## - PUNT_C_NATURALES          1    8906.3  8923.2  766.82
## - PUNT_LECTURA_CRITICA      1    9202.9  9219.8  773.32
## - PUNT_SOCIALES_CIUDADANAS  1   10670.6 10687.5  802.72
## - PUNT_MATEMATICAS          1   12270.4 12287.3  830.48

Conclusión

El análisis con el método step muestra que todas las variables (Lectura Crítica, Matemáticas, Ciencias Naturales, Sociales y Ciudadanas, e Inglés) son importantes para predecir el puntaje global. La eliminación de cualquiera de ellas incrementa considerablemente el AIC, especialmente al eliminar las variables principales como Lectura Crítica y Matemáticas, lo que indica que el modelo original es el más adecuado.

Grafico de dispersión

Creamos un gráfico de dispersión que muestra la relación entre el desempeño del estudiante y su puntaje global. Los puntos son verdes y de mayor tamaño, con una línea discontinua naranja que representa la relación ideal entre ambas variables.

plot(regresionM$fitted.values, puntajes$PUNT_GLOBAL,
     main = "Puntaje Global vs Desempeño del Estudiante",
     xlab = "Desempeño del Estudiante en asignaturas",
     ylab = "Puntaje Global",
     col = "green", pch = 19, cex = 1.5,
     cex.lab = 1.2, # Amentamos tamaño de las etiquetas
     cex.main = 1.5, # Aumentamos tamaño del título
     cex.axis = 1.2) # Aumentamos tamaño de los ejes

# Línea de referencia
abline(0, 1, col = "orange", lwd = 2, lty = 2) # Línea discontinua en naranja

# Cuadricula de fondo
grid(col = "lightgray", lty = "dotted") 

Conclusión

El gráfico muestra una relación poco definida entre el desempeño en asignaturas y el puntaje global, con una ligera tendencia positiva pero una alta dispersión de los datos. Esto indica que, aunque un mejor desempeño podría estar asociado con un puntaje global más alto, la relación es débil, y otros factores podrían estar influyendo significativamente en el puntaje global.

Gráfico de la normalidad

Generamos un QQ-Plot que muestra cómo se distribuyen los residuos del modelo regresionM en comparación con una distribución normal teórica. Los puntos verdes representan los cuantiles de los residuos, mientras que la línea naranja indica la línea ideal de normalidad. Además, se incluye una cuadrícula ligera para mejorar la legibilidad del gráfico.

qqnorm(resid(regresionM),
       main = "Gráfico de normalidad",
       xlab = "Desempeño del Estudiante en asignaturas",
       ylab = "Puntaje Global",
       col = "green", pch = 19, cex = 1.5, 
       cex.main = 1.5, 
       cex.lab = 1.2, 
       cex.axis = 1.2) 

# Liena de referencia
qqline(resid(regresionM), col = "orange", lwd = 2) 

grid(col = "lightgray", lty = "dotted")

Conclusión

El gráfico muestra que los datos del desempeño de los estudiantes no siguen una distribución normal. Esto significa que los resultados no se distribuyen de manera uniforme alrededor de un valor central, como suele ocurrir en situaciones “normales”. Esta desviación de la normalidad puede indicar la presencia de valores atípicos, subgrupos o simplemente que el proceso que generó estos datos no es “normal”.