Análisis de correlacion

Importar paquetes y definir folder de trabajo

library(pacman)
p_load("base64enc", "htmltools", "mime", "xfun", "prettydoc", "readr", "ggplot2", "tidyr", "plotly", "DT")
setwd("~/PyE_206145")

Importar datos

grasas <- read.table("http://verso.mat.uam.es/~joser.berrendero/datos/EdadPesoGrasas.txt", header= TRUE)
names(grasas)
## [1] "peso"   "edad"   "grasas"

Descripción de datos

Se tienen datos de 25 personas de peso, edad y grasas.

datatable(grasas)

Calcula y representa gráficamente la recta de regresión, junto con la correspondiente nube de puntos.

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.

¿Cuánto valen los estimadores de todos los parámetros del modelo?

58.9239

Contrasta la hipótesis de que la pendiente de la recta es cero a nivel 0.05

p-value: 0.2478, por lo tanto, no se rechaza la hipòtesis nula

Calcula un intervalo de confianza para la pendiente de la recta de nivel 90%.

confint(regresion, level = 0.90)
##                    5 %       95 %
## (Intercept) 44.1735594 73.6742455
## edad        -0.1110838  0.6098618

Calcula y representa los intervalos de confianza al 95% de la cantidad de grasas media para los individuos entre 30 y 90 kg.

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"  )

Lleva a cabo el diagnóstico del modelo.

  • La tabla de análisis de la varianza de los errores se obtiene con el comando anova:
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.