## Loading required package: carData
##
## Attaching package: 'psych'
## The following object is masked from 'package:car':
##
## logit
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
##
## %+%, alpha
##
## Attaching package: 'Hmisc'
## The following object is masked from 'package:psych':
##
## describe
## The following objects are masked from 'package:base':
##
## format.pval, units
## corrplot 0.95 loaded
Se dispone de un conjunto de datos compuesto por 1.000 observaciones que describen la relación entre ciertos hábitos estudiantiles con el rendimiento académico medido a través de calificaciones en exámenes. Este dataset fue obtenido de la plataforma Kaggle, específicamente del siguiente recurso: Student Habits vs Academic Performance.
A continuación, se presenta un resumen general de las variables contenidas en el conjunto de datos:
## study_hours_per_day attendance_percentage sleep_hours exam_score
## Min. :0.00 Min. : 56.00 Min. : 3.20 Min. : 18.40
## 1st Qu.:2.60 1st Qu.: 78.00 1st Qu.: 5.60 1st Qu.: 58.48
## Median :3.50 Median : 84.40 Median : 6.50 Median : 70.50
## Mean :3.55 Mean : 84.13 Mean : 6.47 Mean : 69.60
## 3rd Qu.:4.50 3rd Qu.: 91.03 3rd Qu.: 7.30 3rd Qu.: 81.33
## Max. :8.30 Max. :100.00 Max. :10.00 Max. :100.00
En el presente informe se analiza si existe una correlación lineal entre dichas variables. En caso de identificarse una relación significativa, se propondrá un modelo de regresión lineal múltiple que permita predecir el rendimiento académico en función de estos parámetros.
El dataset original incluía diversas variables, pero dado que este análisis se centra en variables cuantitativas, se realizó una depuración. Finalmente, se seleccionaron las siguientes variables para el estudio:
## study_hours_per_day attendance_percentage sleep_hours exam_score
## 1 0.0 85.0 8.0 56.2
## 2 6.9 97.3 4.6 100.0
## 3 1.4 94.8 8.0 34.3
## 4 1.0 71.0 9.2 26.8
## 5 5.0 90.9 4.9 66.4
## 6 7.2 82.9 7.4 100.0
Como segundo paso debemos asegurarnos de que los datos estén cargados perfectamente, para eso revisamos los tipos de datos y nos aseguramos de que no exista valores nulos.
## ======== Tipo de datos ========
## 'data.frame': 1000 obs. of 4 variables:
## $ study_hours_per_day : num 0 6.9 1.4 1 5 7.2 5.6 4.3 4.4 4.8 ...
## $ attendance_percentage: num 85 97.3 94.8 71 90.9 82.9 85.8 77.7 100 95.4 ...
## $ sleep_hours : num 8 4.6 8 9.2 4.9 7.4 6.5 4.6 7.1 7.5 ...
## $ exam_score : num 56.2 100 34.3 26.8 66.4 100 89.8 72.6 78.9 100 ...
## Existen valores nulos?: FALSE
A continuación, se presentan los histogramas de cada variable cuantitativa con el objetivo de evaluar la forma de su distribución y detectar posibles sesgos.
g1 <- ggplot(Datos, aes(x = study_hours_per_day)) + geom_histogram(bins = 200, fill = "steelblue")
g2 <- ggplot(Datos, aes(x = attendance_percentage)) + geom_histogram(bins = 200, fill = "skyblue")
g3 <- ggplot(Datos, aes(x = sleep_hours)) + geom_histogram(bins = 200, fill = "deepskyblue")
g4 <- ggplot(Datos, aes(x = exam_score)) + geom_histogram(bins = 200, fill = "dodgerblue")
grid.arrange(g1, g2, g3, g4, nrow = 2, ncol = 2)
Estas observaciones permiten asumir, de forma preliminar, que las variables tienen distribuciones razonablemente normales, lo cual favorece la aplicación de técnicas de regresión lineal.
¿Alguna relación parece no lineal?
Parece que no existe una correlación lineal significante entre la variable dependiente y las horas de sueño ni el porcentaje de asistencia, por lo tanto se decide no tomarlos en cuenta para la definición del modelo.
Cómo podemos observar, las horas de estudio tienen una correlación lineal positiva y fuerte, entonces tenerlo en cuenta para un modelo de regresion lineal seria pertinente. * La linealidad se confirma para la variable de horas de estudio con respecto a la calificación.
Como nuestra muestra es muy grande (1000 observaciones) usaremos el test de Anderson-Darling para la normalidad.
Las hipótesis formalmente planteadas son: \[ \begin{cases} H_0: X \sim N(\mu, \sigma^2) \\ H_1: X \not\sim N(\mu, \sigma^2) \end{cases} \]
\(H_0\): \(\text{Los datos siguen una distribución normal}\) \(H_1\): \(\text{Los datos no siguen una distribución normal}\)
A partir del analisis, no encontramos evidencia suficiente para rechazar \(H_0\), no podemos afirmar la no-normalidad.
Se plantea el siguiente contraste para verificar si la media de los residuos es igual a cero:
\[ \begin{aligned} H_0 &: \ \mu_e = 0 \quad \text{(La media de los residuos es igual a cero)} \\ H_1 &: \ \mu_e \neq 0 \quad \text{(La media de los residuos es diferente de cero)} \end{aligned} \]
Donde \(\mu\_e\) representa la media poblacional de los residuos del modelo.
## [1] -2.013949e-17
Este valor es extremadamente cercano a cero, por lo que no hay evidencia para rechazar la hipótesis nula. Es decir, se acepta \(H_0\) : la media de los residuos es igual a cero, lo cual es coherente con los supuestos del modelo lineal.
Para evaluar la homocedasticidad de los residuos utilizamos el test de Breusch-Pagan, con la función bptest().
Los resultados muestran heterocedasticidad estadísticamente significativa y prácticamente relevante en el modelo. Los resultados son interpretables con precauciones técnicas, puede contener errores robustos.
Finalmente para revisar la independencia usaremos el test de Durbin-Watson que proporciona información sobre la independencia de los residuos.
## lag Autocorrelation D-W Statistic p-value
## 1 -0.008466814 2.012364 0.858
## Alternative hypothesis: rho != 0
En nuestro caso el valor del estadístico de D-W es de 2.012 por tanto habria que rechazar la H alternativa de que hay “autocorrelación”.
El anova permite evaluar si el modelo explica una proporción significativa de la variabilidad total en la variable dependiente.
La interpretación es que, aunque existe un patron visible dentro del grafico, este es caracteristico de nuestro estudio porque hay un limite superior de la maxima nota que un estudiante puede sacar y ello limita la variabilidad. Por lo demás, la distribución está bastante dispersa eso indicando que el modelo es lineal aunque no perfectamente.
La mayoría de los puntos siguen la línea, pero hay leves desviaciones en los extremos que podrían ser explicados por la acumulación de notas maximas y minimas, por ende los residuos son aproximadamente normales, aunque hay algunos valores atípicos.
El grafico de scale-location mide la homoscedasticidad y en él podemos observar una leve tendencia creciente que nos dice que puede haber heterocedasticidad (resultado similar al que tuvimos con el otro test) lo cual puede afectar la validez de las pruebas F.
Hay indicios de que existen varios valores atipicos en el modelo pero aun así no hay outliers influyentes preocupantes, el modelo parece estable respecto a los datos observados.
## Df Sum Sq Mean Sq F value Pr(>F)
## study_hours_per_day 1 194133 194133 2134 <2e-16 ***
## Residuals 998 90805 91
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Los resultados del test F muestran que el modelo es altamente significativo (F = 2134, p < 2e-16), lo que indica que las horas de estudio por día explican una proporción muy importante de la variabilidad en las puntuaciones de los exámenes. La diferencia entre la varianza explicada y la residual es contundente. Esto significa que el modelo no solo es estadísticamente válido, sino que también tiene un gran poder explicativo. Podemos confiar en que el tiempo de estudio tiene un impacto real y consistente en el rendimiento académico.