Se observa el comportamiento de los datos
# Cargamos base de datos
library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
Ejemplo <- read_excel("C:/Users/LLUVIA MARIA/OneDrive - usco.edu.co/Escritorio/Investigación I/Ejem.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
#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 no 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.
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 no normales por ende, se acomoda mejor al comportamiento de los datos
## 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
#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
Analisis de residuales:
Min: El error más negativo fue -0.49
1Q: El 25% de los residuos estan por debado de -0.32
Mediana: El residuo tipico(mediano)fue -0,061 (Casi cero, muy bueno)
3Q: El 75% de los residuos están por debajo de 0.25
Max: El error más grande fue 0.92
Residual standard error: \[0.41\] Se puede evidenciar que existe un error estandar bajo, lo cual indica la existencia de errores pequeños y consistentes.De igual forma el promedio del tamaño de los errores es 0.41.
Multiple R-squared:
\[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.
\[ 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.
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.
Verificaciónn de Supuestos en el Modelo de Regresión Lineal
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.
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.3
## 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.
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.
Los residuos deberían seguir una distribución normal.
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.
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.
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.
## Error Cuadratico Medio (ECM)
ECM <- mean(residuos^2)
ECM
## [1] 0.1594437
Interpretación: El ECM nos dice en promedio cuánto se está equivocando el modelo, pero en unidades al cuadrado. tambien nos permite comparar el ajuste entre los modelos ya que entre mas bajo sea, mejor el ajuste.
RMSE<-sqrt(ECM)
RMSE
## [1] 0.399304
Interpretación: El RMSE indica, en promedio, cuánto se desvían las predicciones del modelo respecto a las notas reales, en la misma escala (0 a 5).
La regresión lineal múltiple es una extensión de la regresión lineal simple que permite modelar la relación entre una variable dependiente \(Y\) y múltiples variables independientes \(X_1, X_2, \dots, X_k\).
# Cargamos base de datos (Agregamos 2 nuevas variables Horas de estudio y Estrato Socioeconomico)
library(readxl)
Ejemplo <- read_excel("C:/Users/LLUVIA MARIA/OneDrive - usco.edu.co/Escritorio/Investigación I/Ejem.xlsx")
head(Ejemplo)
## # A tibble: 6 × 4
## Horas_sueno Hora_Estudio Horas_frente_a_pantallas promedio
## <dbl> <dbl> <dbl> <dbl>
## 1 3 2 4.56 2.5
## 2 2 3 3.91 2
## 3 1 1.5 2.86 1
## 4 6 4 5.31 3
## 5 8 3.5 7.19 4
## 6 8 5 9.74 4.5
Es un conjunto de datos que contiene 36 elementos con informacion sobre el rendimiento academico promedio de los estudiantes según sus horas de estudio, horas de sueño y Horas frente a la Pantalla.
Hipotesis nula\(H_0\): Los datos siguen una distribucion normal, si p > 0.05 Hipotesis alterna\(H_1\): Los datos no siguen una distribucion normal, si p ≤ 0.05
#Prueba de normalidad para las variables independientes
shapiro.test(Ejemplo$Horas_sueno)
##
## Shapiro-Wilk normality test
##
## data: Ejemplo$Horas_sueno
## W = 0.8646, p-value = 0.0004204
shapiro.test(Ejemplo$Hora_Estudio)
##
## Shapiro-Wilk normality test
##
## data: Ejemplo$Hora_Estudio
## W = 0.96984, p-value = 0.4212
shapiro.test(Ejemplo$Horas_frente_a_pantallas)
##
## Shapiro-Wilk normality test
##
## data: Ejemplo$Horas_frente_a_pantallas
## W = 0.96554, p-value = 0.3164
#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
Las variables que se distribuyen de manera normal son la de Hora de Estudio y las Horas frente a la pantalla ya que, el valor de p según la prueba de Shapiro-Wilk es de 0.42 y 0.31 respectivamente, mientras que las variables de Hora de sueño y promedio no contienen una distribucion normal dado que su p-value es menor al 0.05.
cor(Ejemplo$Horas_sueno,Ejemplo$promedio)
## [1] 0.9155509
cor(Ejemplo$Hora_Estudio,Ejemplo$promedio)
## [1] 0.6012921
cor(Ejemplo$Horas_frente_a_pantallas,Ejemplo$promedio)
## [1] 0.9652164
Como se puede evidenciar la correlacion entre las variables de horas de sueño y el promedio es positiva y fuerte ya que arrojo un 0.91, mientras que la de horas de estudio y el promedio es positiva pero moderada con un resultado de 0.6.Finalmente, la relacion que tiene la Hora frente a pantallas y el promedio es positivo indicando que es muy fuerte, en pocas palabras tiene relación.
modelo <- lm(Ejemplo$promedio ~ Ejemplo$Horas_sueno + Ejemplo$Hora_Estudio + Ejemplo$Horas_frente_a_pantallas)
summary(modelo)
##
## Call:
## lm(formula = Ejemplo$promedio ~ Ejemplo$Horas_sueno + Ejemplo$Hora_Estudio +
## Ejemplo$Horas_frente_a_pantallas)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.45509 -0.20122 0.02773 0.17835 0.35543
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.09424 0.16831 0.560 0.5794
## Ejemplo$Horas_sueno 0.10905 0.04468 2.441 0.0204 *
## Ejemplo$Hora_Estudio 0.01585 0.02474 0.641 0.5262
## Ejemplo$Horas_frente_a_pantallas 0.37496 0.04701 7.977 4.18e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2446 on 32 degrees of freedom
## Multiple R-squared: 0.9461, Adjusted R-squared: 0.941
## F-statistic: 187 on 3 and 32 DF, p-value: < 2.2e-16
Analisis de residuales:
Min: El error más negativo fue -0.45
1Q: El 25% de los residuos estan por debado de -0.20
Mediana: El residuo tipico(mediano)fue -0,02 (Casi cero, muy bueno)
3Q: El 75% de los residuos están por debajo de 0.17
Max: El error más grande fue 0.35
Se menciona que la variable de hora de estudio no es significativa en el modelo, en pocas palabras no le aporta en la predición.
Residual standard error: \[0.24\] Se puede evidenciar que existe un error estandar bajo, lo cual indica la existencia de errores pequeños y consistentes.De igual forma el promedio del tamaño de los errores es 0.24.
Multiple R-squared:
\[R^2=0.9461\] Con un \(95\%\) de la variabilidad del promedio esta relacionada con la Hora de Sueño, Hora de Estudio y Hora frente a la Pantalla que explican en gran parte el comportamiento del modelo.
\[R^2(Ajustado)=0.941\] Al ajustar el modelo, con un \(94\%\) de la variabilidad del promedio esta relacionada con la Hora de Sueño, Hora de Estudio y Hora frente a la Pantalla del comportamiento del modelo. Por ende, se debe mirar si la variable que no le esta aportando en el como es la de Hora de estudio al eliminarla mejora ese r^2 ajustado o lo mantiene igual.
\[F-statistic: 187 on 3 and 32 DF, p-value: < 2.2e-16\] El modelo es altamente significativo, indicando que la variables independientes realmente ayuda a predecir la variable dependiente.
options(scipen = 999)
coeficientes <- summary(modelo)$coefficients
coeficientes
## Estimate Std. Error t value
## (Intercept) 0.09424429 0.16831152 0.5599397
## Ejemplo$Horas_sueno 0.10905058 0.04468248 2.4405670
## Ejemplo$Hora_Estudio 0.01585464 0.02474383 0.6407514
## Ejemplo$Horas_frente_a_pantallas 0.37496495 0.04700584 7.9769864
## Pr(>|t|)
## (Intercept) 0.579419578662515
## Ejemplo$Horas_sueno 0.020380756471696
## Ejemplo$Hora_Estudio 0.526246574263524
## Ejemplo$Horas_frente_a_pantallas 0.000000004177787
\[ y= 0.09424 + 0.10905x_1 + 0.01585x_2 + 0.37496x_3 \] - Intercepto (0.09): el promedio es de 0.09 cuando Horas de Estudio, Horas de Sueño y Hora frente a Pantalla son cero.
Horas_sueño (0.109): Por cada hora adicional de
sueño, el promedio aumenta en 0.109 unidades, manteniendo
Hora_Estudio y Hora_frente_a_Pantalla
constantes. Este coeficiente es estadisticamente significativo
(p= 0.020380756471696).
Horas_Estudio (0.0158): Por cada Hora de Estudio
adicional, el promedio aumenta en 0.0158 unidades.Es de aclarar que esta
variable no es significativo (p=0.526246574263524) siendo
mayor a 0.05.
Horas_frente_a_Pantalla (0.37496): Por cada Hora de
Estudio adicional, el promedio aumenta en 0.37496 unidades.Este
coeficiente es estadisticamente significativo
(p=0.000000004177787) siendo menor a 0.05.
modelo2 <- lm(Ejemplo$promedio ~ Ejemplo$Hora_Estudio+ Ejemplo$Horas_frente_a_pantallas + Ejemplo$Horas_sueno)
summary(modelo2)
##
## Call:
## lm(formula = Ejemplo$promedio ~ Ejemplo$Hora_Estudio + Ejemplo$Horas_frente_a_pantallas +
## Ejemplo$Horas_sueno)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.45509 -0.20122 0.02773 0.17835 0.35543
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.09424 0.16831 0.560 0.5794
## Ejemplo$Hora_Estudio 0.01585 0.02474 0.641 0.5262
## Ejemplo$Horas_frente_a_pantallas 0.37496 0.04701 7.977 0.00000000418 ***
## Ejemplo$Horas_sueno 0.10905 0.04468 2.441 0.0204 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2446 on 32 degrees of freedom
## Multiple R-squared: 0.9461, Adjusted R-squared: 0.941
## F-statistic: 187 on 3 and 32 DF, p-value: < 0.00000000000000022
coeficientes2 <- summary(modelo2)$coefficients
coeficientes2
## Estimate Std. Error t value
## (Intercept) 0.09424429 0.16831152 0.5599397
## Ejemplo$Hora_Estudio 0.01585464 0.02474383 0.6407514
## Ejemplo$Horas_frente_a_pantallas 0.37496495 0.04700584 7.9769864
## Ejemplo$Horas_sueno 0.10905058 0.04468248 2.4405670
## Pr(>|t|)
## (Intercept) 0.579419578662509
## Ejemplo$Hora_Estudio 0.526246574263522
## Ejemplo$Horas_frente_a_pantallas 0.000000004177787
## Ejemplo$Horas_sueno 0.020380756471696
modelo3 <- lm(Ejemplo$promedio ~ Ejemplo$Horas_frente_a_pantallas + Ejemplo$Horas_sueno + Ejemplo$Hora_Estudio)
summary(modelo3)
##
## Call:
## lm(formula = Ejemplo$promedio ~ Ejemplo$Horas_frente_a_pantallas +
## Ejemplo$Horas_sueno + Ejemplo$Hora_Estudio)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.45509 -0.20122 0.02773 0.17835 0.35543
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.09424 0.16831 0.560 0.5794
## Ejemplo$Horas_frente_a_pantallas 0.37496 0.04701 7.977 0.00000000418 ***
## Ejemplo$Horas_sueno 0.10905 0.04468 2.441 0.0204 *
## Ejemplo$Hora_Estudio 0.01585 0.02474 0.641 0.5262
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2446 on 32 degrees of freedom
## Multiple R-squared: 0.9461, Adjusted R-squared: 0.941
## F-statistic: 187 on 3 and 32 DF, p-value: < 0.00000000000000022
coeficientes3 <- summary(modelo3)$coefficients
coeficientes3
## Estimate Std. Error t value
## (Intercept) 0.09424429 0.16831152 0.5599397
## Ejemplo$Horas_frente_a_pantallas 0.37496495 0.04700584 7.9769864
## Ejemplo$Horas_sueno 0.10905058 0.04468248 2.4405670
## Ejemplo$Hora_Estudio 0.01585464 0.02474383 0.6407514
## Pr(>|t|)
## (Intercept) 0.579419578662508
## Ejemplo$Horas_frente_a_pantallas 0.000000004177787
## Ejemplo$Horas_sueno 0.020380756471696
## Ejemplo$Hora_Estudio 0.526246574263524
Como se puede observar el orden no importa en este caso ya que, se arroja el mismo resultado dado a que los valores se calculan de forma independiente.
La relación entre la variable independiente (Horas de sueño, Horas de Estudio y Horas frente a Pantalla) y la dependiente (promedio) debe ser lineal ya que, sus coeficientes son el resultado del modelo. Es de resaltar que se utilizan los residuales porque estos nos permiten ver el comportamiento de los residuos, en pocas palabras se ve si la relacion entre los predictores y la respuesta es realmente lineal.
plot(modelo$fitted.values, modelo$residuals,
main = "Residuos vs Valores Ajustados",
xlab = "Valores Ajustados", ylab = "Residuos", pch = 19, col = "darkgreen")
abline(h = 0, col = "blue", lty = 2)
Interpretacion: Los valores de los residuales estan repartidos aleatoreamente alrededor del eje 0, por ende no tienen un comportamiento claro.
La varianza de los residuos debe ser constante para todos los valores de la variable independiente
library(lmtest)
bptest(modelo)
##
## studentized Breusch-Pagan test
##
## data: modelo
## BP = 1.7195, df = 3, p-value = 0.6326
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.63 es mayor a 0.05, no rechazamos la hipótesis nula, por lo tanto los residuos son homoscedásticos.
Los residuos (errores) del modelo deben ser independientes entre si, sin autocorrelación.
library(lmtest)
dwtest(modelo)
##
## Durbin-Watson test
##
## data: modelo
## DW = 1.9986, p-value = 0.4162
## 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.41 es mayor a 0.05, por tanto, no existe suficiente evidencia cientifica para recharzar la hipotesis nula. En pocas palabras, los errores son independientes.
Puede afectar la estabilidad de los coeficientes. Si dos o más variables independientes están muy correlacionadas entre sí, los estimadores pueden volverse inestables. Se evalúa con el VIF (Variance Inflation Factor).
library(car)
## Warning: package 'car' was built under R version 4.4.3
## Cargando paquete requerido: carData
## Warning: package 'carData' was built under R version 4.4.3
vif(modelo)
## Ejemplo$Horas_sueno Ejemplo$Hora_Estudio
## 5.707049 1.683843
## Ejemplo$Horas_frente_a_pantallas
## 4.991918
VIF ≈ 1: No hay colinealidad.
VIF entre 1 y 5: Moderada colinealidad (aceptable).
VIF > 10: Colinealidad alta. Puede ser preocupante.
Con lo anterior, se puede decir que existe una colinealidad moderada de la variable Horas de Estudio y Horas frente a Pantallas con respecto a horas de sueño. Mientras que la variable Horas de Sueño tiene una multicolinealidad alta indicando que hay una correlacion fuerte entre ellas.
residuos<-residuals(modelo)
library(ggplot2)
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")
residuos<-residuals(modelo)
lines(density(residuos),
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 existe normalidad en el comportamiento de los residuos.
qqnorm(modelo$residuals)
qqline(modelo$residuals, col = "red", lwd = 2)
Según la grafica del QQ-Plot, se demuestra que los residuos siguen una tendencia lineal, en donde existen residuos atipicos pero que se van aproximando a la linea de tendencia.
shapiro.test(modelo$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo$residuals
## W = 0.94455, p-value = 0.07048
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.07 es mayor a 0.05, no existe suficiente evidencia cientifica para rechazar la hipotesis nula, por lo tanto los errores tienen una distribución normal.
Revisa la variabilidad de las variables secuencial - Forma más pertinente y las variables significativa
anova(modelo)
## Analysis of Variance Table
##
## Response: Ejemplo$promedio
## Df Sum Sq Mean Sq F value
## Ejemplo$Horas_sueno 1 29.7431 29.7431 497.195
## Ejemplo$Hora_Estudio 1 0.0191 0.0191 0.319
## Ejemplo$Horas_frente_a_pantallas 1 3.8066 3.8066 63.632
## Residuals 32 1.9143 0.0598
## Pr(>F)
## Ejemplo$Horas_sueno < 0.00000000000000022 ***
## Ejemplo$Hora_Estudio 0.5761
## Ejemplo$Horas_frente_a_pantallas 0.000000004178 ***
## Residuals
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#anova(modelo2)
#anova(modelo3)
DF (Grados de Libertad): El modelo contiene 3 grados de libertad dado a que, presenta las variables Horas Sueño, Hora Estudio y Horas frente a pantallas que tienen un solo efecto en el modelo.
Sum sq (suma de cuadrados) hace referencia a la cantidad de la variabilidad explicada: Para el modelo, la variable Horas Sueño es la que mejor explica ya que, el 29.7 unidades cuadráticas representa la variabilidad de los residuos por cada grado de libertad.Por otro lado,la variable de horas de estudio expresa la menor variabilidad interna dentro del modelo dado que, su valor es de 0.01 unidades cuadraditas que explican la variabilidad de los residuos por cada grado de libertad. Finalmente, la variable horas frente a pantallas presenta un valor moderado en su variabilidad puesto que, contiene un valor de 3.80 aproximadamente 4 unidades cuadradas por grado de libertad. En pocas palabras, se puede decir que el modelo es mejor explicado por la variable Horas de Sueño que por las varibables de Horas de pantallas y estudio.
F Value: La variable Horas sueño tiene un f-value igual 497 el cual muy alto y explica una gran proporcion de la variabilidad del promedio, asi como la variable Horas frente a pantallas con un f-value de 64, donde este tiene una variabilidad moderada frente a la variable hora de sueño, pero sigue manteniendo una relacion fuerte con respecto al promedio. Por otro lado, la variable horas de estudio cuenta con un f-value de 0,3 manifestando que este tiene una relacion debil con respecto al promedio.
P-Value: Podemos observar que las variables Hora sueño y Horas frente a pantallas son significativas en el modelo ya que, tienen un p-value menor al de 0.05, mientras que la variable Horas estudio no influye dentro de el dado que su p-value es superior a 0.05.
Conclusion
Es de resaltar que cuando el modelo contiene un F-value alto y un P-value bajo se determina que el modelo es altamente significativo.