Es un modulo estadístico que establece una relación entre dos variables: una independiente (predictora) y una dependiente (de respuesta). El modelo de regresión líneal para este taller (lm) donde el resultado de examen es la variable dependiente (lo que queremos predecir) y las horas de estudio es la variable independiente (lo que usamos para predecir)
library(readxl)
bd_regresion_lineal1 <- read_excel("C:/Users/USUARIO/Downloads/bd_regresion_lineal1.xlsx")
View(bd_regresion_lineal1)
datos=read_excel("C:/Users/USUARIO/Downloads/bd_regresion_lineal1.xlsx")
## GRAFICO DE DISPERSION
library(ggplot2)
ggplot(datos, aes(x = HorasEstudio, y = ResultadoExamen)) +
geom_point(size = 3) +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
theme_minimal() +
labs(title = "Relación entre Horas de Estudio y ResultadoExamen",
x = "Horas",
y = "Resultado")#
## `geom_smooth()` using formula = 'y ~ x'
pairs(datos$HorasEstudio ~ datos$ResultadoExamen)
# INTERPRETACION:
#Como podemos observar en la gráfica de dispersión, existe una #centralización de los datos, en donde la linea es ascendente y los #puntos presentan un a alineación moderada, lo que nos sugiere que #podría existir una relacion positva entre las variables horas de #estudio y resultado de los exámenes.
shx= shapiro.test(datos$HorasEstudio)
shx
##
## Shapiro-Wilk normality test
##
## data: datos$HorasEstudio
## W = 0.96143, p-value = 0.6294
shy= shapiro.test(datos$ResultadoExamen)
shy
##
## Shapiro-Wilk normality test
##
## data: datos$ResultadoExamen
## W = 0.94701, p-value = 0.3801
#INTERPRETACION:
#prueba de normalidad variable HorasEstudio, como p-valuo arrojo #0.6294, y es mayor que 0.05, se determina que no hay evidencia #sufuciente para afirma que los datos no tienen una distribucion #normal, por lo que se concluye que la variable esta normalemnte #distribudida.
#prueba de normalidad variable ResultadoEXamen, como p-valuo arrojo #0.3801, y es mayor que 0.05, se determina que no hay evidencia #sufuciente para afirma que los datos no tienen una distribucion #normal, por lo que se concluye que la variable esta normalemnte #distribudida.
crtp = cor.test(datos$HorasEstudio,datos$ResultadoExamen,method = "pearson")
crtp
##
## Pearson's product-moment correlation
##
## data: datos$HorasEstudio and datos$ResultadoExamen
## t = 23.629, df = 16, p-value = 7.214e-14
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.9618728 0.9948789
## sample estimates:
## cor
## 0.9859725
#INTERPRETACION:
#Como se puede observar en la prueba de correlación de perarsen #(0.98), la relacion entre las variables de estudio es positiva y #fuerte , es decir cuanto mas horas estudie un estudiante mejor #seran los resultados en los examenes.
modelo <- lm(datos$ResultadoExamen ~ datos$HorasEstudio )
modelo
##
## Call:
## lm(formula = datos$ResultadoExamen ~ datos$HorasEstudio)
##
## Coefficients:
## (Intercept) datos$HorasEstudio
## 51.359 2.933
summary(modelo)
##
## Call:
## lm(formula = datos$ResultadoExamen ~ datos$HorasEstudio)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.292 -1.254 1.077 1.546 3.110
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 51.3595 1.3435 38.23 < 2e-16 ***
## datos$HorasEstudio 2.9329 0.1241 23.63 7.21e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.732 on 16 degrees of freedom
## Multiple R-squared: 0.9721, Adjusted R-squared: 0.9704
## F-statistic: 558.3 on 1 and 16 DF, p-value: 7.214e-14
predichos = predict(modelo)
predichos
## 1 2 3 4 5 6 7 8
## 54.29240 57.22532 60.15824 63.09116 66.02408 68.95700 71.88992 74.82284
## 9 10 11 12 13 14 15 16
## 77.75576 80.68868 83.62160 86.55452 89.48744 92.42036 95.35329 98.28621
## 17 18
## 101.21913 104.15205
# INTERPRETACION:
#Como resultado del modelo de regresion lineal podemos realizar la #siguiente ecuacion: ResultadoExamen = 51.36+2.93 x HoraEstudio, es #decir, que si alguien no estudia nada(0) se podria esperar un #resultado de de 51.36 en los examenes, iguamente por cada hora #adicional que se estudie la nota podria aumentar un promedio de #2.93 puntos
#Interpretacion coeficientes: intercepto que es de 51.36, es #significativo p < 2e-16, lo que se puede concluir que aunque las #horas de estudio sea 0, se estima con una alta confianza, horas de #estudio es de 2.93 y significantivo lo que sugiere que las horas de #estudio tiene un efecto positivo en el resultado de los examenes.
#Errores del modelo: los residuos van -6.292 a 3.110, la mediana se #acerca a o lo cual sugiere que no hay sesgos, y la distribucion es #muy simetrica y lineal.
#Bondad de ajuste: R² =0.9721: El modelo explica el 97.21% la #variabilidad de los datos de la variables resultados examenes, R² #ajustado = 0.9704 esto significa que aun incorporando nuevas #variables el modelo sigue siendo robusto.
# Min: el error m´as negativo fue -6.292
#1Q (primer cuartil): el 25% de los residuos est´an por debajo de #-1.254
#Median: el residuo t´ıpico (mediano) fue 1.077
#3Q: el 75% de los residuos est´an en 1.546
#Max: el error m´as grande fue 3.110
ggplot(datos, aes(x = ResultadoExamen, y = predichos)) +
geom_point(size = 3) +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
theme_minimal() +
labs(title = "Relación entre Horas de Estudio y ResultadoExamen",
x = "Horas",
y = "Resultado")
#INTERPRETACION: Como se puede observar que la relacion entre las variables independiente(horasEstudio) y la dependiente (ResultadoExamen) es casi lineal.
library(dplyr)
residuos = residuals(modelo)
residuos
## 1 2 3 4 5 6 7
## -6.2923977 -3.2253182 -1.1582387 0.9088407 1.9759202 3.0429997 3.1100791
## 8 9 10 11 12 13 14
## 2.1771586 1.2442380 1.3113175 1.3783970 1.4454764 0.5125559 1.5796354
## 15 16 17 18
## 0.6467148 -1.2862057 -3.2191262 -4.1520468
qqnorm(residuos)
qqline(residuos,col= "orange")
#INTERPRETACION:como se puede observar en la grafica los residuos tienden a seguir una disstribucion normal, lo que significa que el supuesto se acomoda al modelo.
ggplot(datos,aes(x = predichos, y = residuos)) +
geom_point(size = 3) +
geom_smooth(method = "lm", se = FALSE, color = "blue") +
theme_minimal() +
labs(title = "Relación entre Horas de Estudio y ResultadoExamen",
x = "Horas",
y = "Resultado")
##INTERPRETACION: como se puede observar en la grafica los residuos evidencian un patron de heterocedasticidad, demostrando que los errores de la varianza no son constantes y el modelo se quedaria corto para los siiguientes datos, eesto puede deberse al numero reducido de la base de datos.
library(lmtest)
IE= dwtest(modelo)
IE
##
## Durbin-Watson test
##
## data: modelo
## DW = 0.27807, p-value = 7.319e-09
## alternative hypothesis: true autocorrelation is greater than 0
#INTERPRETACION:El estadistico de DW, para la indeprendia de errores con un resultado de 0.27807 lo que sugiere una alta correlacion positiva.
valores_ajustados = fitted(modelo)
valores_ajustados
## 1 2 3 4 5 6 7 8
## 54.29240 57.22532 60.15824 63.09116 66.02408 68.95700 71.88992 74.82284
## 9 10 11 12 13 14 15 16
## 77.75576 80.68868 83.62160 86.55452 89.48744 92.42036 95.35329 98.28621
## 17 18
## 101.21913 104.15205