El presente análisis tiene como objetivo construir y evaluar un modelo de regresión lineal múltiple para explicar y predecir el puntaje académico de estudiantes a partir de tres variables: horas de estudio, porcentaje de asistencia y número de ejercicios realizados. Se evalúa el grado en que cada variable contribuye al rendimiento académico y se verifican los supuestos estadísticos necesarios para que el modelo sea válido: linealidad, independencia, normalidad de residuos, homocedasticidad y ausencia de multicolinealidad.
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(broom)
library(ggpubr)
library(readr)
library(nortest)
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(tidyr)
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
Datos
df <- read.csv("puntaje_academico.csv")
head(df)
## ID HorasEstudio AsistenciaPct NumEjercicios Puntaje
## 1 1 6.3 84.4 14 89.5
## 2 2 5.1 78.9 10 74.8
## 3 3 8.2 92.1 17 95.4
## 4 4 4.7 80.2 9 69.7
## 5 5 7.0 87.5 13 88.2
## 6 6 5.8 82.9 11 77.9
summary(df)
## ID HorasEstudio AsistenciaPct NumEjercicios
## Min. : 1.00 Min. :3.500 Min. :72.10 Min. : 6.00
## 1st Qu.: 25.75 1st Qu.:4.975 1st Qu.:79.45 1st Qu.: 9.00
## Median : 50.50 Median :6.300 Median :85.05 Median :13.00
## Mean : 50.50 Mean :6.251 Mean :84.49 Mean :12.27
## 3rd Qu.: 75.25 3rd Qu.:7.525 3rd Qu.:89.33 3rd Qu.:15.00
## Max. :100.00 Max. :9.300 Max. :95.40 Max. :19.00
## Puntaje
## Min. :60.20
## 1st Qu.:71.03
## Median :86.00
## Mean :81.53
## 3rd Qu.:90.70
## Max. :99.00
Los datos constan de 100 observaciones, donde: Variable respuesta: Puntaje Variables explicativas: HorasEstudio,AsistenciaPct,NumEjercicios
Correlación
cor(df)
## ID HorasEstudio AsistenciaPct NumEjercicios Puntaje
## ID 1.00000000 -0.02273064 -0.03605921 -0.04136985 -0.04247921
## HorasEstudio -0.02273064 1.00000000 0.99063919 0.98334090 0.97998441
## AsistenciaPct -0.03605921 0.99063919 1.00000000 0.98060439 0.98462271
## NumEjercicios -0.04136985 0.98334090 0.98060439 1.00000000 0.99078594
## Puntaje -0.04247921 0.97998441 0.98462271 0.99078594 1.00000000
cor(df$Puntaje, df$HorasEstudio)
## [1] 0.9799844
cor(df$Puntaje, df$AsistenciaPct)
## [1] 0.9846227
cor(df$Puntaje, df$NumEjercicios)
## [1] 0.9907859
La correlación entre Puntaje y Horas de Estudio es 0.9799844, La
correlación entre Puntaje y Asistencia es 0.9846227,
La correlación entre Puntaje y Número de Ejercicios es 0.9907859, Estas
correlaciones confirman que todas las variables son adecuadas para ser
incluidas en un modelo de regresión múltiple, ya que cumplen el criterio
de tener relación lineal con la variable respuesta.
Normalidad
hist(df$Puntaje)
El histograma muestra una distribución aproximadamente normal, aunque con una leve asimetría hacia la izquierda. Esta ligera desviación no afecta de manera importante el modelo, por lo que el supuesto de normalidad es aceptable para continuar con la regresión múltiple.
Linealidad
pairs(df)
plot(Puntaje ~ HorasEstudio, data = df)
plot(Puntaje ~ AsistenciaPct, data = df)
plot(Puntaje ~ NumEjercicios, data = df)
Los gráficos de dispersión muestran una relación lineal positiva entre cada variable independiente (horas de estudio, asistencia y número de ejercicios) y el puntaje académico. Las líneas de tendencia confirman que a medida que aumentan estas variables, el puntaje también tiende a aumentar. Esto indica que el supuesto de linealidad se cumple adecuadamente para el modelo de regresión múltiple.
Modelo \[ Y=β0+β1(HorasEstudio)+β2(AsistenciaPct)+β3(NumEjercicios) \] β₁ (HorasEstudio): Manteniendo las demás variables constantes, por cada hora adicional de estudio, el puntaje tiende a disminuir ligeramente. Esto indica que, dentro del modelo, las horas de estudio no son el predictor más fuerte y podrían estar correlacionadas con otras variables.
β₂ (AsistenciaPct): Por cada incremento de un punto porcentual en la asistencia, el puntaje aumenta significativamente. Esto sugiere que asistir a clases es un factor clave en el rendimiento académico.
β₃ (NumEjercicios): Por cada ejercicio adicional realizado, el puntaje aumenta notablemente. Esta es la variable con mayor influencia positiva, lo que indica que la práctica mediante ejercicios es el factor más determinante del desempeño académico.
modelo <- lm(Puntaje ~ HorasEstudio + AsistenciaPct + NumEjercicios,
data = df)
summary(modelo)
##
## Call:
## lm(formula = Puntaje ~ HorasEstudio + AsistenciaPct + NumEjercicios,
## data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.1210 -0.6281 -0.1351 0.7630 4.3002
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -13.9099 10.3371 -1.346 0.1816
## HorasEstudio -1.6138 0.7101 -2.273 0.0253 *
## AsistenciaPct 0.9277 0.1686 5.502 3.12e-07 ***
## NumEjercicios 2.2130 0.2039 10.854 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.407 on 96 degrees of freedom
## Multiple R-squared: 0.9868, Adjusted R-squared: 0.9864
## F-statistic: 2393 on 3 and 96 DF, p-value: < 2.2e-16
El modelo es altamente significativo y explica casi toda la variabilidad del puntaje académico (R² = 0.9868). AsistenciaPct y NumEjercicios tienen un efecto positivo y muy significativo sobre el puntaje, mientras que HorasEstudio muestra un efecto negativo y menos relevante. En conjunto, los predictores permiten estimar el puntaje con un error bajo y un buen ajuste global.
Multicolinealidad
# Multicolinealidad (VIF)
library(car)
vif(modelo)
## HorasEstudio AsistenciaPct NumEjercicios
## 66.94379 57.57818 32.47245
Los valores de VIF obtenidos son muy elevados (VIF > 30 en todas las variables), lo cual indica una fuerte multicolinealidad entre HorasEstudio, AsistenciaPct y NumEjercicios. Esto significa que las variables están fuertemente correlacionadas entre sí, y por tanto aportan información similar al modelo. A causa de esta multicolinealidad, el signo y la magnitud del coeficiente de HorasEstudio cambian cuando se incluyen las demás variables, lo cual explica por qué aparece como negativo en el modelo múltiple aun cuando individualmente es muy significativo. Aun así, el modelo continúa siendo útil para la predicción, pero los coeficientes deben interpretarse con precaución debido a la dependencia entre las variables.
Homocedasticidad
plot(modelo, which = 1) # Residuals vs Fitted
En el gráfico Residuals vs Fitted se observa que los residuos se distribuyen alrededor de cero, sin formar un patrón claro. La línea roja (loess) muestra una ligera curvatura, pero no presenta una tendencia sistemática fuerte (como forma de U o ∩), lo cual indica que no hay evidencia importante de heterocedasticidad. Además, la dispersión de los puntos es relativamente constante a lo largo de los valores ajustados, por lo que el supuesto de varianza constante de los residuos (homocedasticidad) se considera razonablemente cumplido.
Aunque se observa una leve curvatura en la línea loess, esta no representa una violación grave del supuesto. Sin embargo, sugiere que podría existir una ligera relación no lineal no capturada por el modelo. Aun así, debido al pequeño tamaño de los residuos y a que la prueba de Breusch-Pagan no resultó significativa, el modelo se considera adecuado.
Grafico de Modelo
plot(modelo, which = 2) # QQ Plot
El gráfico QQ muestra que los residuos siguen aproximadamente una línea recta, lo que indica que la normalidad se cumple razonablemente. Solo hay pequeñas desviaciones en los extremos, pero no afectan de manera importante al modelo.
Linea de tendencia
# Partial Regression Plots (Regresión múltiple)
library(car)
crPlots(modelo)
Los gráficos muestran que las tres variables explicativas (Horas de Estudio, AsistenciaPct y NumEjercicios) presentan una relación lineal con el puntaje cuando se controla por las demás variables del modelo. Las líneas ajustadas se mantienen estables y sin cambios bruscos, lo cual indica que la suposición de linealidad se cumple adecuadamente. Además, no se observan patrones de no linealidad importantes, por lo que las variables son adecuadas para formar parte del modelo de regresión múltiple.
anova(modelo)
## Analysis of Variance Table
##
## Response: Puntaje
## Df Sum Sq Mean Sq F value Pr(>F)
## HorasEstudio 1 13822.8 13822.8 6985.881 < 2e-16 ***
## AsistenciaPct 1 147.3 147.3 74.469 1.3e-13 ***
## NumEjercicios 1 233.1 233.1 117.810 < 2e-16 ***
## Residuals 96 190.0 2.0
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
El análisis ANOVA muestra que, cuando se evalúan de forma individual, las tres variables (HorasEstudio, AsistenciaPct y NumEjercicios) explican una proporción significativa de la variabilidad del puntaje académico, ya que todas presentan valores F altos y p-valores extremadamente pequeños. Aunque HorasEstudio presenta el valor F más elevado cuando se analiza sola, en el modelo de regresión múltiple su efecto se reduce y cambia de signo debido a la correlación con las otras variables. Esto indica que NumEjercicios y AsistenciaPct son los predictores más influyentes cuando todas las variables actúan simultáneamente. En conjunto, el ANOVA confirma que las tres variables contribuyen significativamente al modelo.
# Prueba de normalidad de residuos
library(nortest)
residuos <- resid(modelo)
lillie.test(residuos)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: residuos
## D = 0.094078, p-value = 0.02932
El resultado de la prueba Lilliefors muestra un valor p = 0.02932, el cual es menor que 0.05. Por lo tanto, se rechaza la hipótesis nula de normalidad, indicando que los residuos no siguen una distribución normal. Aunque la desviación respecto a la normalidad no parece extremadamente fuerte, el resultado sugiere que el modelo presenta una ligera violación del supuesto de normalidad de los errores. Aun así, la regresión múltiple puede seguir siendo válida debido al tamaño de la muestra, pero sería recomendable complementar con gráficos diagnósticos para evaluar el impacto de esta desviación.
prueba de homecedasticidad
bptest(modelo)
##
## studentized Breusch-Pagan test
##
## data: modelo
## BP = 6.3894, df = 3, p-value = 0.09413
El test de Breusch-Pagan arroja un valor p = 0.09413, el cual es mayor que 0.05. Por lo tanto, no se rechaza la hipótesis nula de homocedasticidad, lo que indica que los residuos del modelo presentan varianza constante. En otras palabras, no hay evidencia significativa de heterocedasticidad, por lo que el supuesto de homocedasticidad se cumple adecuadamente para este modelo de regresión múltiple.
Conclusión General
En este proyecto se construyó y evaluó un modelo de regresión múltiple para analizar los factores que influyen en el puntaje académico. El modelo de regresión múltiple permitió identificar cómo las horas de estudio, la asistencia y el número de ejercicios influyen en el puntaje académico de los estudiantes. Los resultados indican que las tres variables son estadísticamente significativas y contribuyen de manera importante a explicar la variabilidad del puntaje. El modelo presenta un excelente ajuste (R² = 0.9868) y cumple razonablemente los supuestos de homocedasticidad y linealidad. Aunque los residuos no siguen perfectamente una distribución normal, esta desviación no afecta gravemente la validez del modelo debido al tamaño de la muestra y al comportamiento general de los residuos. En conclusión, el modelo obtenido es adecuado para predecir el puntaje académico y demuestra que el número de ejercicios y la asistencia son los factores que mayor aporte hacen al rendimiento estudiantil.
Recomendaciones
Fomentar la realización de más ejercicios académicos, ya que es el predictor más fuerte del puntaje.
Promover estrategias para mejorar la asistencia a clases, dado su impacto significativo.
Revisar la forma en que se mide o interpreta el tiempo de estudio, pues su efecto negativo podría deberse a que los estudiantes que más estudian son quienes más dificultades tienen.
Complementar futuros análisis con modelos no lineales si se desea capturar patrones más complejos.