Regresion lineal simple

Importar

Datos

grasas <- read.table("http://verso.mat.uam.es/~joser.berrendero/datos/EdadPesoGrasas.txt",header = TRUE)

Analisis de correlacion

*Matriz de diagramas de dispersion

pairs(grasas)

A continuacion se hara una cuantidicacion del grado de relacion lineal, por medio de la matriz de coeficientes de correlacion

cor(grasas)
##             peso      edad    grasas
## peso   1.0000000 0.2400133 0.2652935
## edad   0.2400133 1.0000000 0.8373534
## grasas 0.2652935 0.8373534 1.0000000
  • Con esto observamos que a medida que aumenta la edad de una persona, aumenta el contenido de grasas en su cuerpo con un indice de relacion de 83%

Recta de minimos cuadrados

regresion <- lm(grasas ~ edad, data=grasas)
summary(grasas)
##       peso            edad           grasas     
##  Min.   :27.00   Min.   :20.00   Min.   :181.0  
##  1st Qu.:63.00   1st Qu.:30.00   1st Qu.:254.0  
##  Median :69.00   Median :37.00   Median :303.0  
##  Mean   :68.68   Mean   :39.12   Mean   :310.7  
##  3rd Qu.:76.00   3rd Qu.:50.00   3rd Qu.:374.0  
##  Max.   :89.00   Max.   :60.00   Max.   :451.0
  • Con base a lo estimado el analisis de regresion lineal, obtenemos la ecuasion de la recta de minimos cuadrados*

\[y = 102.5751 + 5.3207x \]

Grafica de la recta de minimos cuadrados

plot(grasas$edad, grasas$grasas, xlab = "Edad", ylab ="Grasas")
abline(regresion)

Modelacion (Calculo) de predicciones

nuevas.edades <- data.frame(edad = seq(30,50))
predict(regresion, nuevas.edades)
##        1        2        3        4        5        6        7        8 
## 262.1954 267.5161 272.8368 278.1575 283.4781 288.7988 294.1195 299.4402 
##        9       10       11       12       13       14       15       16 
## 304.7608 310.0815 315.4022 320.7229 326.0435 331.3642 336.6849 342.0056 
##       17       18       19       20       21 
## 347.3263 352.6469 357.9676 363.2883 368.6090

Intervalo de confianza

  • Suponemos ahora que los datos proceden de un modelo de regresion simple, de la forma:

\[y_i = \beta_0 + \beta_1 x_i + \epsilon_i, \ \ \ \ i=1,\ldots,n, \] Donde: * Los errores aleatorios \(\epsilon_i\) son independientes con distribucion normal 0 y varianza \(\sigma^2\)

  • Los errores típocos de los estimadores de los parametros $ _0  y  _1$ se encuentran en la columna std error serian de manera correspondiente

Calculo del nivel de confianza

  • Intervalo de confianza para el 95% de los datos
confint(regresion)
##                 2.5 %     97.5 %
## (Intercept) 41.265155 163.885130
## edad         3.822367   6.818986
  • Intervalo de confianza para el 95% de los datos
confint(regresion, level=0.90)
##                   5 %       95 %
## (Intercept) 51.780153 153.370132
## edad         4.079335   6.562018

Representacion grafica de los intervalos de confianza

nuevas.edades <- data.frame(edad = seq(30,60))
# Grafico de dispersion y recta
plot(grasas$edad, grasas$grasas, xlab = "Edad", ylab ="Grasas")
abline(regresion)

# Intervalos de confianza  de la respuesta media
# ic es una matriz de 3 columnas:
# La primera es la prediccion, y las otras son los extremos del intervalo
ic <- predict(regresion, nuevas.edades, interval = "confidence")
lines(nuevas.edades$edad, ic[,2], lty = 2)
lines(nuevas.edades$edad, ic[,3], lty = 2)

# Intervalo de predicción
ic <- predict(regresion, nuevas.edades, interval = "prediction")
lines(nuevas.edades$edad, ic[,2], lty = 2, col = "red")
lines(nuevas.edades$edad, ic[,3], lty = 2, col = "red")

Conclusion

  • En este Script podemos observar la tendencia de los datos de grasa y peso con relacion a la edad de los pacientes, este tipo de analisis nos da como ejemplo el funcionamiento de r y su capacidad de predecir resultados y analisarlos para anteponerse a situaciones futuras.