Librerías

library (readr)      # Para Select, filter, etc
library (ggplot2)    # Para graficos
library (corrplot)   # Para correlaciones
library (dplyr)      # Leer datos

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

Visulizar los puntos que se obtienen de las coordenadas x & y es decir para cada cantidad de millas en el eje de las x’s, existe un costo en el eje de las y’s.

Se utiliza la variable graf para ir construyendo la gráfica poco a poco además de que queda preparado para que se le agregue la linea de tendencia toda vez que se genere el modelo.

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 <- round(r, 4)
r
## [1] 0.8358

Interpretación de la correlación

El valor de la correlación es 0.8358 que significa que estadísticamente es una correlación positiva considerable

Crear el modelo de Regresión Lineal Simple (MRL)

La fórmula del modelo de rergesión lineal simple para este caso está dada de que el costo de vuelo está en función de las millas. \[costo=a+b∗millas\]

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

Visualizar la linea de tendencia lineal

  • Primero: identificar los valores de x que son las millas a partir del modelo, deben ser los mismos valores que los que contiene la variable millas del conjunto datos (datos$millas).

  • Segundo determinar los valores de tendencia, es decir para cada valor de millas un valor ajustado de tendencia, se obtiene del modelo y la variable generada fitted.value. (modelo$fitted.values)

  • Se crea un data frame llamado linea que contiene los valores de tendencia o de la linea recta. Se da nombre a las variables como ‘millas’ y ‘ajuste’ respectivamente

  • A partir de linea se dibuja la linea recta de tendencia de los valores ajustados sobre la gráfica (graf) ya existente

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
graf <-  graf + 
  geom_line(data = linea, mapping =  aes( x = millas, y = ajuste, color = "red"))

graf

Determinar los coeficentes

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

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

Predecir manualmente

Una ciudad que está a 200 millas de distancia de otra, ¿cuánto debe costar un boleto de avión entre esas ciudades?.

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

prediccion
## (Intercept) 
##    154.0077

Interpretación: Para una distancia 200 millas entre una ciudad y otra, el costo del boleto de avión debiera ser de 154.0076802 conforme al modelo de regresión Lineal.

Nuevos valores

Predecir por medio de predict()

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