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

Librerias para poder trabajar

library(readr)
library(dplyr)
library(ggplot2)
library(corrplot)

Leer 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  : Factor w/ 18 levels "Chicago-Atlanta",..: 7 9 4 5 2 1 16 18 13 3 ...
##  $ 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      
##  Chicago-Atlanta   : 1   Min.   : 178   Min.   :123.0  
##  Chicago-Cleveland : 1   1st Qu.: 374   1st Qu.:151.5  
##  Chicago-Denver    : 1   Median :1048   Median :275.5  
##  Chicago-Detroit   : 1   Mean   :1196   Mean   :280.7  
##  Chicago-San Luis  : 1   3rd Qu.:1752   3rd Qu.:364.0  
##  Chicago-Seattle   : 1   Max.   :2574   Max.   :513.0  
##  (Other)           :12

Visualizar los datos (Diagrama de dispersión)

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

graf

Coeficiente de correlación

r<- cor(datos$millas, datos$costo)

r
## [1] 0.835779
r<- round(r,4) # Redondear a 4 decimales

r
## [1] 0.8358

Interpretacion de la correlación

  • El resultado 0.8358 cae en el rango de: +0.75 = Correlación positiva considerable.
  • lo que indica que si hay un relacion considerable entre las variables estudiadas.

Modelo de Regresion Lineal Simple (RSL)

  • La formula del modelo implica que el costo del boleto esta en relacion a las millas: \[Costo = a+b*millas\]

  • Calculo manual

modelo<-lm(data = datos, formula = costo ~ millas)

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

Determinar coeficentes.

  • A partir del modelo en la variable ‘coeficientes’, se obtienen los coeficientes en la posición 1 y 2 respecivamente.
  • La posición 1 es el valor de a y la posición 2 es el valor de b dentro de la ecuación de mínimos cuadrados. \[y=a+b∗millas\]
a<- modelo$coefficients[1]

b<- modelo$coefficients[2]

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

Predecir manualmente

  • ¿Cuál es el costo de un boleto cuando la distancia entre la ciudad origen y destino es de 200 millas?
millas.nuevo<-200
prediccion<- a+b*millas.nuevo

prediccion
## (Intercept) 
##    154.0077

Interpretación: Para una distancia de 200millas el costo del boleto sería de 154.0076802 de acuerdo al Modelo de Regresion Lineal.

Aplicar la predicción para las siguientes distancias: 290, 760, 1100, 1400, 1650 millas

millas.nuevo<-290
prediccion<- a+b*millas.nuevo

prediccion  #Costo para distancia de 290 millas
## (Intercept) 
##    165.4515
millas.nuevo<- 760
prediccion<- a+b*millas.nuevo

prediccion  #Costo para distancia de 760 millas
## (Intercept) 
##    225.2136
millas.nuevo<- 1100
prediccion<- a+b*millas.nuevo

prediccion  #Costo para distancia de 1,100 millas
## (Intercept) 
##    268.4458
millas.nuevo<- 1400
prediccion<- a+b*millas.nuevo

prediccion  #Costo para distancia de 1,400 millas
## (Intercept) 
##    306.5918
millas.nuevo<- 1650
prediccion<- a+b*millas.nuevo

prediccion  #Costo para distancia de 1,650 millas
## (Intercept) 
##    338.3802

Predecir con la fucion predict() presentando como un dataframe

prediccion<- predict(modelo, newdata = data.frame(millas=c(290,760,1100,1400,1650)))

prediccion
##        1        2        3        4        5 
## 165.4515 225.2136 268.4458 306.5918 338.3802