Regreción lineal simple y estimación de intervalos de confianza

jpi.jpg

Importar datos

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

Visualizar

  • grafico de correlación, grafíco de pares
head(grasas)
##   peso edad grasas
## 1   84   46    354
## 2   73   20    190
## 3   65   52    405
## 4   70   30    263
## 5   76   57    451
## 6   69   25    302
pairs(grasas)

Modelar

Grado de correlación lineal

  • Matriz de coeficientes de correlacón
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

Cálculo y representacion de la recta de minimos y cuadrados

regresion <- lm(grasas ~ edad, data = grasas)
summary(regresion)
## 
## Call:
## lm(formula = grasas ~ edad, data = grasas)
## 
## 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
  • Entonces la recta de mínimos cuadrados, sería la siguiente:

\[ Y = 102.5751 + 5.3207 x\] ### Rerecentación grafíca de la recta

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

Modelación de valores

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

Inferencia en el modelo de regreción lineal simple

supongamos que los datos proceden de un modelo de regresión simple de la forma:

\[y_i = \beta_0 + \beta_1 x_i + \epsilon_i, \ \ \ \ i=1,\ldots,n, \] en donde:

Los errores aleatoreos \(\epsilon_i\) son independientes con distribución normal media 0 y carianza \(i=1,\ldots,n,\)

Bajo este modelo:

  • Los errores típicos de los estimadores de los parametros \(\beta_0\) y \(\beta_1\) se encuentran en la columna std error de la salidad anterior, los valores son : 29.6376 y 0.7243 respectivamente.

  • Los **intervalos de confianza de los parámetros* se obtienen con el comando confit. El parámetro level permite elegir el nivel de confianza (por lo regular es de 0.95)

confint(regresion)
##                 2.5 %     97.5 %
## (Intercept) 41.265155 163.885130
## edad         3.822367   6.818986
confint(regresion, level= 0.90)
##                   5 %       95 %
## (Intercept) 51.780153 153.370132
## edad         4.079335   6.562018
  • ¿Que tan confiable es este modelo? comparativa de datos reales vs datos predecidos

  • Los intervalos de confianza para la respuesta media y los intervalos de confianza para la respuesta se pueden obtener con el comando predict. Por ejemplo el código de continuación estima y representa los dos tipos de intervalos ( para el rango de edades de 20-60 años), los de predicción en rojo)

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

#intervalos de confianza de la respuesta media
#ic es una matriz con tres columnas.
# la primera es la prediccion, 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 prediccion
nuevas.edades <- data.frame(edad =seq(20,60))
# Gráfico de dispersión y recta 
plot (grasas$edad, grasas$grasas, xlab = "Edad", ylab="Grasas")
abline(regresion)

#Intervalos de confianza de la respuesta media
# ic es una matriz con tres columnas:
#la primera es la predicción, 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)

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

ANOVA

  • La tabla de analizis de varianza se obtiene con el comando ANOVA
anova(regresion)
## 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

Conclusión

En este asignacion se llevó a cabo un análisis sobre la correlacion que tienen el peso, la edad y la grasa de una persona.con los comandos adecuados se obtuvo el grado de correlación lineal , el cálculo y representación de la recta de mínimos cuadrados.Grasias a los resultados se pudo llegar a la conlcusión de que entre mayor edad tenga una persona, mayor grasa tendrá.