objetivo Realizar un análisis de datos determinando el coeficiente de correlación y aplicando el modelo de regresión lineal simple (RLS) para realizar predicciones

Se busca una interpretación de los resultados del modelo

Librerias

library(dplyr)
library(ggplot2)   # Para gráficos 'amigables'
library(corrplot) # Para correlaciones
library(readr)

Datos

datos <- read.csv('../Datos/rutas millas tarifas de vuelos.csv')

datos
##                        ruta millas costo
## 1            Dallas-Austin     178   125
## 2           Houston-Dallas     232   123
## 3          Chicago-Detroit     238   148
## 4         Chicago-San Luis     262   136
## 5        Chicago-Cleveland     301   129
## 6           Chicago-Atlanta    593   162
## 7         Nueva York-Miami    1092   224
## 8       Nueva York-San Juan   1608   264
## 9        Nueva York-Chicago    714   287
## 10          Chicago-Denver     901   256
## 11        Dallas-Salt Lake    1005   365
## 12       Nueva York-Dallas    1374   459
## 13          Chicago-Seattle   1736   424
## 14      Los Angeles-Chicago   1757   361
## 15      Los Angeles-Atlanta   1946   309
## 16   Nueva York-Los Angeles   2463   444
## 17     Los Angeles-Honolulu   2556   323
## 18 Nueva York-San Francisco   2574   513

Explorar los datos

str(datos)
## 'data.frame':    18 obs. of  3 variables:
##  $ ruta  : chr  "Dallas-Austin " "Houston-Dallas " "Chicago-Detroit " "Chicago-San Luis " ...
##  $ millas: int  178 232 238 262 301 593 1092 1608 714 901 ...
##  $ costo : int  125 123 148 136 129 162 224 264 287 256 ...
summary(datos)
##      ruta               millas         costo      
##  Length:18          Min.   : 178   Min.   :123.0  
##  Class :character   1st Qu.: 374   1st Qu.:151.5  
##  Mode  :character   Median :1048   Median :275.5  
##                     Mean   :1196   Mean   :280.7  
##                     3rd Qu.:1752   3rd Qu.:364.0  
##                     Max.   :2574   Max.   :513.0

Visualizar los datos

grafica <- ggplot(data = datos, mapping = aes(x=millas, y = costo)) +  geom_point()

grafica

Coeficiente de relación

r <- cor(datos$millas, datos$costo)
r <- round(r,4)
r
## [1] 0.8358

Interpretación de la correlación

El valor del coeficiente de correlación es 0.8358 que significa que estadísticamente es correlación positiva considerable

Crear el modelo de regresión lineal simple (RLS)

La fórmula del modelo de regresión lineal simple implica que el costo de vuelo está en función de las millas:\[costo = a + b * millas\]

modelo <- lm(data = datos, formula = costo ~ millas)
# ~ = ALT + 126
modelo
## 
## Call:
## lm(formula = costo ~ millas, data = datos)
## 
## Coefficients:
## (Intercept)       millas  
##    128.5770       0.1272
summary(modelo)
## 
## Call:
## lm(formula = costo ~ millas, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -130.58  -40.95  -18.36   46.06  155.71 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 128.57699   30.24824   4.251  0.00061 ***
## millas        0.12715    0.02088   6.089 1.57e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 72.38 on 16 degrees of freedom
## Multiple R-squared:  0.6985, Adjusted R-squared:  0.6797 
## F-statistic: 37.07 on 1 and 16 DF,  p-value: 1.567e-05

Visualizar la linea de tendencia lineal

linea <- data.frame(modelo$model$millas, modelo$fitted.values)
colnames(linea) <- c("millas", "ajuste")


linea
##    millas   ajuste
## 1     178 151.2103
## 2     232 158.0766
## 3     238 158.8395
## 4     262 161.8912
## 5     301 166.8502
## 6     593 203.9790
## 7    1092 267.4286
## 8    1608 333.0398
## 9     714 219.3646
## 10    901 243.1423
## 11   1005 256.3662
## 12   1374 303.2859
## 13   1736 349.3154
## 14   1757 351.9856
## 15   1946 376.0176
## 16   2463 441.7560
## 17   2556 453.5813
## 18   2574 455.8700
grafica2 <-  grafica + geom_line(data = linea, mapping =  aes( x = millas, y = ajuste, color = "red"))

grafica2

Determinar los coeficientes

a <- modelo$coefficients[1]
b <- modelo$coefficients[2]

a
## (Intercept) 
##     128.577
b
##    millas 
## 0.1271535

Predecir manualmente

millas.nuevo <- 200
prediccion <- a + b * millas.nuevo
prediccion <- round(prediccion,4)
prediccion
## (Intercept) 
##    154.0077

Interpretación

Para una distancia de 200 millas entre una ciudad a otra el costo del boleto de avión deberá ser de 154.0077 conforme al modelo de regresión lineal

Nuevos valores

Primer método

millas1 <- 290
millas2 <- 760
millas3 <- 1100
millas4 <- 1400
millas5 <- 1650
predice1 <- a + b * millas1
predice2 <- a + b * millas2
predice3 <- a + b * millas3
predice4 <- a + b * millas4
predice5 <- a + b * millas5
predecidos <- c(predice1, predice2, predice3, predice4, predice5)
predecidos
## (Intercept) (Intercept) (Intercept) (Intercept) (Intercept) 
##    165.4515    225.2136    268.4458    306.5918    338.3802

Segundo método

millas <- c(290, 760, 1100, 1400, 1650)
millaspred <- c(a + b * millas)
millaspred
## [1] 165.4515 225.2136 268.4458 306.5918 338.3802

Predecir por medio de predict()

  • Utilizando la función predict() para generar predicciones
prediccion <- predict(modelo, newdata = data.frame(millas = c(290,760, 1100,1400,1650)))
prediccion <- round(prediccion,4)
prediccion
##        1        2        3        4        5 
## 165.4515 225.2136 268.4458 306.5918 338.3802

Interpretación

Para una distancia de 290, 760, 1100, 1400, 1650 millas entre una ciudad a otra el costo del boleto de avión deberá ser de 165.4515, 225.2136, 268.4458, 306.5918, 338.3802 conforme al modelo de regresión lineal