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.