Lee los datos del fichero EdadPesoGrasas.txt. a. Calcula la recta de regresión lineal para ver la relación existente entre las grasas y la edad. b. Haz el diagnóstico del modelo para comprobar si da un buen ajuste o no.
Solución
dfGrasas <- read.table("EdadPesoGrasas.txt", sep = "", header = T)
Estudiamos la normalidad de la variable explicativa edad
shapiro.test( dfGrasas$edad )
##
## Shapiro-Wilk normality test
##
## data: dfGrasas$edad
## W = 0.94403, p-value = 0.1833
Correlación entre las variables
cor.test(dfGrasas$edad, dfGrasas$grasas)
##
## Pearson's product-moment correlation
##
## data: dfGrasas$edad and dfGrasas$grasas
## t = 7.346, df = 23, p-value = 1.794e-07
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.6608860 0.9260782
## sample estimates:
## cor
## 0.8373534
Correlación positiva: 0.87
plot(dfGrasas$edad, dfGrasas$grasas, pch = 20, xlab = "Edad", ylab = "Grasas",
main = "Diagrama de dispersión", cex.main = 0.95)
Cálculo de la recta de regresión
modelo <- lm(grasas ~ edad, data = dfGrasas)
summary(modelo)
##
## Call:
## lm(formula = grasas ~ edad, data = dfGrasas)
##
## Residuals:
## Min 1Q Median 3Q Max
## -63.478 -26.816 -3.854 28.315 90.881
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 102.5751 29.6376 3.461 0.00212 **
## edad 5.3207 0.7243 7.346 1.79e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 43.46 on 23 degrees of freedom
## Multiple R-squared: 0.7012, Adjusted R-squared: 0.6882
## F-statistic: 53.96 on 1 and 23 DF, p-value: 1.794e-07
Recta de regresión: \(Grasas = 102.57 + 5.32 \cdot edad\)
plot(dfGrasas$edad, dfGrasas$grasas, xlab = "Edad", ylab = "Grasas")
abline( modelo )
Bondad de ajuste
anova( modelo )
## Analysis of Variance Table
##
## Response: grasas
## Df Sum Sq Mean Sq F value Pr(>F)
## edad 1 101933 101933 53.964 1.794e-07 ***
## Residuals 23 43444 1889
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Significativo: \(F \neq 1\). De hecho \(F\) es mayor que 1, lo que indica un buen ajuste.
\(SSM = 101933\) y \(SSR = 43444\): OK.
Diagnóstico del modelo
dfGrasas$fitted.modelo <- fitted( modelo )
dfGrasas$residuals.modelo <- residuals( modelo )
dfGrasas$rstudent.modelo <- rstudent( modelo )
Normalidad:
shapiro.test(dfGrasas$rstudent.modelo)
##
## Shapiro-Wilk normality test
##
## data: dfGrasas$rstudent.modelo
## W = 0.96164, p-value = 0.4481
Homocedasticidad
library(lmtest)
bptest(modelo)
##
## studentized Breusch-Pagan test
##
## data: modelo
## BP = 0.06529, df = 1, p-value = 0.7983
Aceptamos la homocedasticidad.
Incorrelación
Test de Durbin-Watson
dwtest(grasas ~ edad, alternative = "two.sided", data = dfGrasas)
##
## Durbin-Watson test
##
## data: grasas ~ edad
## DW = 1.6841, p-value = 0.4666
## alternative hypothesis: true autocorrelation is not 0
Aceptamos la incorrelación de los residuos.