Regresión lineal simple

Importar

Datos

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

Visualizar

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

Análisis de correlación

  • Matriz de diagramas de dispersión
pairs(grasas)

A continuación se hará una cuantificación del grado de relación lineal, por medio de la matriz de coeficientes de correlació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

Con esto observamos que a medida que aumenta la edad de una persona, aumenta el contenido de grasas en su cuerpo con un índice de relación de 83% Esto explicado con un coeficiente de correlación de: 0.8373534

Recta de mínimos 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

Con base a lo estimado en el análisis de regresión lineal, obtenemos la ecuación de la recta de mínimos cuadrados

\[y = 102.5751 + 5.3207x \]

Gráfica de la recta de mínimos cuadrados

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

Modelación (cálculo) de predicciones

nuevas.edades <- data.frame(edad=seq(20,60))
predict(regresion,nuevas.edades)
##        1        2        3        4        5        6        7        8 
## 208.9887 214.3093 219.6300 224.9507 230.2714 235.5921 240.9127 246.2334 
##        9       10       11       12       13       14       15       16 
## 251.5541 256.8748 262.1954 267.5161 272.8368 278.1575 283.4781 288.7988 
##       17       18       19       20       21       22       23       24 
## 294.1195 299.4402 304.7608 310.0815 315.4022 320.7229 326.0435 331.3642 
##       25       26       27       28       29       30       31       32 
## 336.6849 342.0056 347.3263 352.6469 357.9676 363.2883 368.6090 373.9296 
##       33       34       35       36       37       38       39       40 
## 379.2503 384.5710 389.8917 395.2123 400.5330 405.8537 411.1744 416.4950 
##       41 
## 421.8157

Inferencia en el modelo de regresión simple

*Suponemos ahora 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, \] Donde:

  • Los errores aleatorios \(\epsilon_i\) son independientes con distribución normal 0 y varianza \(\sigma^2\)

  • Los errores típicos de los stimadores de los parámetros $ _0 y _1 $ se encuentran en la columna std error serían de manera correspondiente: 29.6376 y 0.7243

Cálculo 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 90% de los datos
confint(regresion, level=0.90)
##                   5 %       95 %
## (Intercept) 51.780153 153.370132
## edad         4.079335   6.562018

Representación gráfica de los intervalos de confianza

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

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

##Mis datos

#Consumo mensual bruto del SEN

**Intalar la libreria readr para poder leer datos de un EXCEL ##Importar datos del los datos locales del archivo armas CSV

library(readr)
library(DT)
Armas <- read_csv("Armas.csv")
## Parsed with column specification:
## cols(
##   Anio = col_double(),
##   armas = col_double(),
##   granadas = col_double()
## )
datatable(Armas)

Visualizar

head(Armas)
## # A tibble: 3 x 3
##    Anio armas granadas
##   <dbl> <dbl>    <dbl>
## 1  2012  1068      161
## 2  2013  9474     1203
## 3  2014  6552      649

Análisis de correlación

  • Matriz de diagramas de dispersión
pairs(Armas)

A continuación se hará una cuantificación del grado de relación lineal, por medio de la matriz de coeficientes de correlación.

cor(Armas)
##               Anio     armas  granadas
## Anio     1.0000000 0.6425195 0.4680173
## armas    0.6425195 1.0000000 0.9778773
## granadas 0.4680173 0.9778773 1.0000000

Con esto observamos que a medida que aumenta de las armas y grandas que hay Esto explicado con un coeficiente de correlación de: 0.8373534

Recta de mínimos cuadrados

regreso <- lm(armas ~ granadas, data=Armas)
summary(regreso)
## 
## Call:
## lm(formula = armas ~ granadas, data = Armas)
## 
## Residuals:
##      1      2      3 
## -547.7 -482.4 1030.1 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept)  326.939   1360.629   0.240    0.850
## granadas       8.005      1.712   4.675    0.134
## 
## Residual standard error: 1262 on 1 degrees of freedom
## Multiple R-squared:  0.9562, Adjusted R-squared:  0.9125 
## F-statistic: 21.85 on 1 and 1 DF,  p-value: 0.1342

Con base a lo estimado en el análisis de regresión lineal, obtenemos la ecuación de la recta de mínimos cuadrados

\[y = 326.939 + 8.005x \] ### Gráfica de la recta de mínimos cuadrados

plot (Armas$armas, Armas$granadas, xlab="armas",ylab="grandas")
abline(regreso)

Modelación (cálculo) de predicciones

nuevas.armas <- data.frame(granadas=seq(20,60))
predict(regreso, nuevas.armas)
##        1        2        3        4        5        6        7        8 
## 487.0301 495.0346 503.0392 511.0438 519.0483 527.0529 535.0574 543.0620 
##        9       10       11       12       13       14       15       16 
## 551.0666 559.0711 567.0757 575.0802 583.0848 591.0894 599.0939 607.0985 
##       17       18       19       20       21       22       23       24 
## 615.1031 623.1076 631.1122 639.1167 647.1213 655.1259 663.1304 671.1350 
##       25       26       27       28       29       30       31       32 
## 679.1396 687.1441 695.1487 703.1532 711.1578 719.1624 727.1669 735.1715 
##       33       34       35       36       37       38       39       40 
## 743.1761 751.1806 759.1852 767.1897 775.1943 783.1989 791.2034 799.2080 
##       41 
## 807.2126

Inferencia en el modelo de regresión simple

*Suponemos ahora 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, \] Donde:

  • Los errores aleatorios \(\epsilon_i\) son independientes con distribución normal 0 y varianza \(\sigma^2\)

  • Los errores típicos de los stimadores de los parámetros $ _0 y _1 $ se encuentran en la columna std error serían de manera correspondiente: 29.6376 y 0.7243

Cálculo del nivel de confianza

  • Intervalo de confianza para el 95% de los datos
confint(regreso)
##                   2.5 %      97.5 %
## (Intercept) -16961.4931 17615.37077
## granadas       -13.7519    29.76103
  • Intervalo de confianza para el 90% de los datos
confint(regreso, level=0.90)
##                     5 %       95 %
## (Intercept) -8263.73523 8917.61288
## granadas       -2.80629   18.81541

Representación gráfica de los intervalos de confianza

nuevas.armas <- data.frame(granadas=seq(20,60))
#Gráfico de dispersión y recta
plot (Armas$armas, Armas$granadas, xlab="armas",ylab="granadas")
abline(regreso)

# Intervalos de confianza de la respuesta media
# ico es una matriz con tres columnas:
#La primera es la predicción, y las otras son los extremos del intervalo
ico <- predict(regreso,nuevas.armas, interval = "confidence")
lines(nuevas.armas$granadas, ic[, 2], lty=2, col = "green")
lines(nuevas.armas$granadas, ic[, 3], lty=2, col = "green")

#Intervalos de predicción
ico <- predict(regresion,nuevas.edades, interval = "prediction")
lines(nuevas.armas$granadas, ic[, 2], lty=2, col = "blue")
lines(nuevas.armas$granadas, ic[, 3], lty=2, col = "blue")

##Conclusion

pense que saldrian mas resultados de mi graficas pero fue lo unico que me salio pense que me saldria mas extenso pero no a la proxima tendre que buscar datos intensas para la elaboracion de unas grafias mas intrepertadas