1. Comportamiento de los datos

Se observa el comportamiento de los datos

# Cargamos base de datos
library(readxl)
Ejemplo <- read_excel("C:/Users/house/Downloads/Ejemplo.xlsx")
# Grafico de dispersión
pairs(Ejemplo$promedio~Ejemplo$Horas_sueno) 

De acuerdo con la gráfica de dispersión se puede observar que al aumentar las horas de sueño, el promedio tambien aumenta

2. Prueba de normalidad

#Prueba de normalidad para la variable independiente
shapiro.test(Ejemplo$Horas_sueno)
## 
##  Shapiro-Wilk normality test
## 
## data:  Ejemplo$Horas_sueno
## W = 0.8646, p-value = 0.0004204
#Prueba de normalidad para la variable dependiente 
shapiro.test(Ejemplo$promedio)
## 
##  Shapiro-Wilk normality test
## 
## data:  Ejemplo$promedio
## W = 0.92264, p-value = 0.01506

Ambas variables se distribuyen de manera normal, ya que el valor de p según la prueba de Shapiro-Wilk para la variable de horas de sueños es 0.0004 y la variable del promedio es 0.015.

3. Correlación

Se determinara la relación entre ambas variables, de esta manera se aplica la prueba de correlación de Pearson, Spearman y Kendall.

# Correlación de Person

cor.test(Ejemplo$Horas_sueno,Ejemplo$promedio, method="pearson")
## 
##  Pearson's product-moment correlation
## 
## data:  Ejemplo$Horas_sueno and Ejemplo$promedio
## t = 13.273, df = 34, p-value = 5.25e-15
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.8395419 0.9564076
## sample estimates:
##       cor 
## 0.9155509
# Correlación de Spearman

cor.test(Ejemplo$Horas_sueno,Ejemplo$promedio,method="spearman") # Los datos no son ordinales y son normales por ende, no se puede calcular el valor exacto de p-value
## Warning in cor.test.default(Ejemplo$Horas_sueno, Ejemplo$promedio, method =
## "spearman"): Cannot compute exact p-value with ties
## 
##  Spearman's rank correlation rho
## 
## data:  Ejemplo$Horas_sueno and Ejemplo$promedio
## S = 932.86, p-value = 1.568e-12
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.8799402
# Correlación de Kendall

cor.test(Ejemplo$Horas_sueno,Ejemplo$promedio, method="kendall") # Los datos no son ordinales y son normales por ende, no se puede calcular el valor exacto de p-value
## Warning in cor.test.default(Ejemplo$Horas_sueno, Ejemplo$promedio, method =
## "kendall"): Cannot compute exact p-value with ties
## 
##  Kendall's rank correlation tau
## 
## data:  Ejemplo$Horas_sueno and Ejemplo$promedio
## z = 6.0936, p-value = 1.104e-09
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
##       tau 
## 0.7837403

La relación entre las horas de sueño y el promedio es fuerte ya que el coeficiente de pearson arrojo 0.9155.n

4. Modelo Lineal

#Ajustar modelo
modelo<-lm(Ejemplo$promedio ~ Ejemplo$Horas_sueno)

#Resumen del modelo
summary(modelo)
## 
## Call:
## lm(formula = Ejemplo$promedio ~ Ejemplo$Horas_sueno)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.49438 -0.32849 -0.06144  0.25445  0.92268 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.99204    0.20551   4.827 2.87e-05 ***
## Ejemplo$Horas_sueno  0.41706    0.03142  13.273 5.25e-15 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4109 on 34 degrees of freedom
## Multiple R-squared:  0.8382, Adjusted R-squared:  0.8335 
## F-statistic: 176.2 on 1 and 34 DF,  p-value: 5.25e-15

\[R^2=0.8382\] Con un \(83\%\) de la variabilidad del promedio esta relacionada con la Hora de Sueño.

\[R^2(Ajustado)=0.8335\] Al ajustar el modelo, con un \(83\%\) de la variabilidad del promedio esta relacionada con la Hora de Sueño.

\[F-statistic: \quad 176.2 \quad on \quad 1 \quad and \quad 34 DF,\quad p-value:\quad 5.25e-15\] El modelo es altamente significativo, indicando que la variable independiente realmente ayuda a predecir la variable dependiente.

5. Elementos del modelo

\[ y=0.41706x+0.992 \] Donde \(x\) son las Horas de sueño y \(y\) es el Promedio, por otra parte cuando las horas de sueño son 0, el promedio es de 0.99 \(\approx\) 1 y el incremento en el promedio por cada hora extra de sueño es de 0.41706.

6. Predicciones

Se realizaran predicciones:

\[\hat{y_i} = 0.9916 + 0.4179 × (Horas \quad de \quad Sueño)\] El residuo para cualquier individuo:

\[e_i = yi − \hat{y_i}\]

# Ajustar el modelo
modelo <- lm(Ejemplo$promedio ~ Ejemplo$Horas_sueno)
# Predicciones
predicciones <- predict(modelo)
# Residuos
residuos <- residuals(modelo)
# Crear una tabla
resultado <- data.frame(
  "Horas de Sueno" = Ejemplo$Horas_sueno,
  "Promedio Real" = Ejemplo$promedio,
  "Prediccion" = predicciones,
   Residuo = residuos
)
print(resultado)
##    Horas.de.Sueno Promedio.Real Prediccion    Residuo
## 1               3           2.5   2.243210  0.2567901
## 2               2           2.0   1.826153  0.1738467
## 3               1           1.0   1.409097 -0.4090968
## 4               6           3.0   3.494379 -0.4943795
## 5               8           4.0   4.328493 -0.3284925
## 6               8           4.5   4.328493  0.1715075
## 7               9           5.0   4.745549  0.2544509
## 8               5           3.5   3.077323  0.4226771
## 9               6           3.0   3.494379 -0.4943795
## 10              6           3.2   3.494379 -0.2943795
## 11              7           3.8   3.911436 -0.1114360
## 12              8           4.0   4.328493 -0.3284925
## 13              7           4.0   3.911436  0.0885640
## 14              8           5.0   4.328493  0.6715075
## 15              5           4.0   3.077323  0.9226771
## 16              3           2.5   2.243210  0.2567901
## 17              2           2.0   1.826153  0.1738467
## 18              1           1.0   1.409097 -0.4090968
## 19              6           3.0   3.494379 -0.4943795
## 20              8           4.0   4.328493 -0.3284925
## 21              8           4.5   4.328493  0.1715075
## 22              9           5.0   4.745549  0.2544509
## 23              5           3.5   3.077323  0.4226771
## 24              6           3.0   3.494379 -0.4943795
## 25              6           3.2   3.494379 -0.2943795
## 26              7           3.8   3.911436 -0.1114360
## 27              8           4.0   4.328493 -0.3284925
## 28              7           4.0   3.911436  0.0885640
## 29              8           5.0   4.328493  0.6715075
## 30              5           4.0   3.077323  0.9226771
## 31              8           4.5   4.328493  0.1715075
## 32              8           4.2   4.328493 -0.1284925
## 33              8           4.1   4.328493 -0.2284925
## 34              7           3.9   3.911436 -0.0114360
## 35              7           3.6   3.911436 -0.3114360
## 36              6           3.0   3.494379 -0.4943795

De acuerdo con la tabla anterior, se muestra que cuando un estudiante duerme 6 horas, su promedio real es de 3.0 y por medio del modelo obtenido se predice que su nota promedio es 3.5, donde el residuo es de -0.49, teniendo en cuenta que la nota promedio observada es menor a la nota promedio estimada.Por otra parte un estudiante que tenga 2 horas de dormir, tendra en promedio una nota de 2.0, luego se precide a partir del modelo que su nota promedio es de 1.8 con un residuo de 0.17, en este caso la nota promedio observada es mayor a la nota promedio estimada.

7. Verificación de supuestos de Regresión Lineal

Verificaciónn de Supuestos en el Modelo de Regresión Lineal

7.1. Linealidad

La relación entre la variable independiente (Horas de sueño) y la dependiente (promedio) debe ser lineal, es decir, describirse bien con una lınea recta.

plot(Ejemplo$Horas_sueno, Ejemplo$promedio, main = "Relacion Horas de Sueno vs Promedio", xlab = "Horas de Sueno", ylab = "Promedio") 
abline(modelo, col = "red", lwd = 2)

De acuerdo con la gráfica, se puede comprobar que los datos no tienen un comportamiento lineal, ya que existen valores que no se encuentran sobre la linea de tendencia.

7.2. Independencia de los errores

Los residuos (errores) del modelo deben ser independientes entre si, sin autocorrelación.

library(lmtest) 
## Warning: package 'lmtest' was built under R version 4.4.2
## Cargando paquete requerido: zoo
## Warning: package 'zoo' was built under R version 4.4.3
## 
## Adjuntando el paquete: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
dwtest(modelo)
## 
##  Durbin-Watson test
## 
## data:  modelo
## DW = 0.99102, p-value = 0.0003737
## alternative hypothesis: true autocorrelation is greater than 0

Test de Durbin-Watson

  • Hipótesis nula (H₀): No hay autocorrelación en los residuos.(Los errores son independientes), donde p-value > 0.05

  • Hipótesis alternativa (H₁): Hay autocorrelación en los residuos. (Normalmente se prueba autocorrelación positiva, pero también se puede investigar negativa), donde p-value < 0.05

Decisión: Dado que el p-valor = 0.0003 es menor a 0.05, rechazamos la hipotesis nula y aceptamos la alternativa, donde se confirma que existe dependencia entre los errores.

7.3. Homoscedasticidad

La varianza de los residuos debe ser constante para todos los valores de la variable independiente.

# Graficar residuos vs. valores ajustados
plot(modelo$fitted.values, resid(modelo),
     xlab = "Valores ajustados",  # fitted values
     ylab = "Residuos",
     main = "Grafico de residuos vs. valores ajustados",
     pch = 19, col = "pink")
abline(h = 0, col = "purple", lty = 2)

Los valores de los residuales deberian agruparse sobre la linea de referencia (0), que indica si el modelo de regresión es bueno, donde se evidencia que los valores no presentan un patron definido, es decir estan dispersos de manera homogenea. Por tanto se concluye que hay homoscedasticidad.

library(lmtest) 
bptest(modelo)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo
## BP = 0.47948, df = 1, p-value = 0.4887

Test de Breusch

  • La hipótesis nula (H₀):Los residuos son homocedásticos (es decir, tienen varianza constante), donde el p-value > 0.05

  • La hipótesis alternativa (H₁): Hay heterocedasticidad (la varianza de los errores no es constante),donde el p-value < 0.05

Decisión: Dado que el p-valor = 0.4887 es mayor a 0.05, no rechazamos la hipótesis nula, por lo tanto los residuos son homoscedásticos.

7.4. Normalidad de los errores

Los residuos deberían seguir una distribución normal.

  • Histograma de residuos:
hist(modelo$residuals, 
     breaks = 10, 
     probability = TRUE,  # Para que el eje Y sea densidad
     main = "Histograma de los Residuos con Curvas de Densidad", 
     xlab = "Residuos", 
     col = "lightgray", 
     border = "white")

# Línea de densidad de los residuos
lines(density(modelo$residuals), 
      col = "purple", 
      lwd = 2)

# Línea de distribución normal teórica
curve(dnorm(x, mean = mean(modelo$residuals), sd = sd(modelo$residuals)), 
      col = "blue", 
      lwd = 2, 
      lty = 2, 
      add = TRUE)

Con base en el histograma se puede identificar que no existe normalidad en el comportamiento de los residuos.

  • QQ plot:
qqnorm(modelo$residuals)
qqline(modelo$residuals, col = "red", lwd = 2)

Según la grafica del QQ-Plot, se demuestra que los residuos no siguen una tendencia lineal, donde hay residuos atipicos y otros tienen un comportamiento escalonado.

  • Test formal de normalidad (Shapiro-Wilk test) :
shapiro.test(modelo$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo$residuals
## W = 0.91761, p-value = 0.01071

Test Shapiro Wilk

  • La hipótesis nula (H): Los errores siguen una distribución normal, donde el p-value > 0.05

  • La hipótesis alternativa (H₁):Los errores no siguen una distribución normal,donde el p-value < 0.05

Decisión: Dado que el p-valor = 0.01 es menor a 0.05, rechazamos la hipotesis nula, por lo tanto los errores no tienen una distribución normal.

CONCLUSIÓN GENERAL