library(pacman)
p_load("base64enc", "htmltools", "mime", "xfun", "prettydoc", "readr", "ggplot2", "tidyr", "plotly", "DT")
setwd("~/PyE_206145")
grasas <- read.table("http://verso.mat.uam.es/~joser.berrendero/datos/EdadPesoGrasas.txt", header= TRUE)
names(grasas)
## [1] "peso" "edad" "grasas"
Se tienen datos de 25 personas de peso, edad y grasas.
datatable(grasas)
regresion <- lm(peso ~ edad, data=grasas )
summary(regresion)
##
## Call:
## lm(formula = peso ~ edad, data = grasas)
##
## Residuals:
## Min 1Q Median 3Q Max
## -37.909 -6.892 2.861 5.861 22.345
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 58.9239 8.6064 6.846 5.56e-07 ***
## edad 0.2494 0.2103 1.186 0.248
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 12.62 on 23 degrees of freedom
## Multiple R-squared: 0.05761, Adjusted R-squared: 0.01663
## F-statistic: 1.406 on 1 and 23 DF, p-value: 0.2478
plot(grasas$peso, grasas$grasas, xlab="Edad", ylab="Peso" )
abline(regresion)
Los parámetros de la ecuación de la recta de mínimos cuadrados que relaciona la cantidad de peso en en función de la edad vienen dados por la columna ´Estimate´ de la tabla ´Coefficients´ de la salida anterior. Por lo tanto, en este ejemplo la ecuación de la recta de mínimos cuadrados es:
\[ y = 58.9239 + 0.2494 x \] ## ¿Cuánto vale el coeficiente de correlación al cuadrado en este caso?
El coeficiente de determinación (es decir, el coeficiente de correlación al cuadrado) mide la bondad del ajuste de la recta a los datos. A partir de la salida anterior, vemos que su valor en este caso es Multiple R-squared: 0.05761.
58.9239
p-value: 0.2478, por lo tanto, no se rechaza la hipòtesis nula
confint(regresion, level = 0.90)
## 5 % 95 %
## (Intercept) 44.1735594 73.6742455
## edad -0.1110838 0.6098618
nuevos.pesos <- data.frame(edad=seq(30,90))
#Gráfica de disperión y recta
plot(grasas$peso, grasas$grasas, xlab="Edad", ylab="Peso")
abline(regresion)
#Intervalos de confianza de la respuesta media
#ic es una matriz de tres columnas: la primera es la predicción, las otras son los extremos del intervalo
ic <- predict(regresion, nuevos.pesos, interval="confidence" )
lines(nuevos.pesos$edad, ic[, 2], lty =2, col="red" )
lines(nuevos.pesos$edad, ic[, 3], lty =2, col="red" )
#Intervalo de predicción
ic <- predict(regresion, nuevos.pesos, interval="prediction" )
lines(nuevos.pesos$edad, ic[, 2], lty =2, col="red" )
lines(nuevos.pesos$edad, ic[, 3], lty =2, col="red" )
anova(regresion)
residuos <- rstandard(regresion)
valores.ajustados <- fitted(regresion)
plot(valores.ajustados, residuos)
No obtenemos patron visible significativo.
La hipótesis de normalidad se suele comprobar mediante un QQ plot de los residuos. El siguiente código sirve para obtenerlo:
qqnorm(residuos)
qqline(residuos)
Dado que los puntos están bastante alineados, la normalidad también parece aceptable.