Correlación y regresion lineal en aerolínea

Las librerías

library(readr)
library(ggplot2)
library(stats)

Cargar los datos

datos <- read_csv("C:/Users/sm13m/OneDrive/Documentos/ITD/Ing. Sistemas Computacionales/Semestre 8/Analisis inteligente de datos/Ranalisis inteligente de datos/datos/rutas_millas_tarifas_de_vuelos.csv")
## Parsed with column specification:
## cols(
##   ruta = col_character(),
##   millas = col_double(),
##   costo = col_double()
## )
str(datos)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 18 obs. of  3 variables:
##  $ ruta  : chr  "Dallas-Austin" "Houston-Dallas" "Chicago-Detroit" "Chicago-San Luis" ...
##  $ millas: num  178 232 238 262 301 ...
##  $ costo : num  125 123 148 136 129 162 224 264 287 256 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   ruta = col_character(),
##   ..   millas = col_double(),
##   ..   costo = col_double()
##   .. )
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
datos
## # A tibble: 18 x 3
##    ruta                     millas costo
##    <chr>                     <dbl> <dbl>
##  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

Ver el cofieciente de correlacion con funcion cor()

CR <- cor(datos$millas, datos$costo)
CR
## [1] 0.835779
  • Mediante la función cor() se genera el coeficiente de correlación entre dos o mas variables
  • −0.90 = Correlación negativa muy fuerte.
  • −0.75 = Correlación negativa considerable.
  • −0.50 = Correlación negativa media.
  • −0.25 = Correlación negativa débil.
  • 0.10 = Correlación negativa muy débil.
  • 0.00 = No existe correlación alguna entre las variables.
  • +0.10 = Correlación positiva muy débil.
  • 0.25 = Correlación positiva débil.
  • 0.50 = Correlación positiva media.
  • 0.75 = Correlación positiva considerable.
  • 0.90 = Correlación positiva muy fuerte.
  • 1.00 = Correlación positiva perfecta (“A mayor X, mayor Y” o “a menor X, menor Y”, de manera proporcional. Cada vez que X aumenta, * Y aumenta siempre una cantidad constante).

Modelo de regresión

  • Variable independiente; millas; x
  • Variable dependiente o respuesta o; y predictiva
  • ~ Significa determinar costo en función de las millas
modelo <- lm(costo ~ millas, datos)
modelo
## 
## Call:
## lm(formula = costo ~ millas, data = datos)
## 
## Coefficients:
## (Intercept)       millas  
##    128.5770       0.1272

Valores de los coeficientes

a <- modelo$coefficients[1] 
b <- modelo$coefficients[2]
a; b
## (Intercept) 
##     128.577
##    millas 
## 0.1271535

Visualizar el diagrama de dispersión

ggplot(datos, aes(millas, costo))   +   geom_point()

Determinar otros estadísticos significativos

  • El Coeficiente de relación antes de su raiz
  • Coeficente de relación raíz que debe ser igual a CR
  • Valores de p-value que deben ser menores a 0.05 *** ó 0.01 ** para decir que la pendiente es diferente de 0 y que exsite estadísticamente relación significativa entre las variables
  • Anque el valor de 0.83 es una relación moderada entre las variables
  • Multiple R-squared: 0.6985
  • p-value: 1.567e-05 es mucho menor que 0.05 de tal forma que si hay relación estadísticamente significativa
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
sqrt(0.6985) # La raiz debe ser igual a cor()
## [1] 0.8357631

Hacer la linea de tendencia en rojo

  • y.precit significa los valores de y para cada dato de x original
  • eso permite dibujar la recta
y.predict <- predict(modelo, datos)
y.predict
##        1        2        3        4        5        6        7        8 
## 151.2103 158.0766 158.8395 161.8912 166.8502 203.9790 267.4286 333.0398 
##        9       10       11       12       13       14       15       16 
## 219.3646 243.1423 256.3662 303.2859 349.3154 351.9856 376.0176 441.7560 
##       17       18 
## 453.5813 455.8700
  • La recta de tedencia con el modelo y = a+bx
ggplot() + geom_point(data = datos, aes(x = millas, y = costo), size = 0.9) +
  geom_line(aes( x = datos$millas, y = y.predict), color = "red") +
  xlab("Millas") + 
  ylab("Costo") + 
  ggtitle("Linea de tendencia sobre Conjunto de Datos. Millas Costo")

Pronosticar y estimar algunos costos con algunas nuevas rutas dadas en millas

nuevosdatos <- data.frame(millas = c(800, 1200, 1800, 2680))
nuevosdatos
##   millas
## 1    800
## 2   1200
## 3   1800
## 4   2680

Predicción de costo.

  • Nuevos datos en millas.
  • La variaable millas del data.frame se llama igual.
  • Se estiman y pronostican nuevos costos por cada nuevo dato.
prediccion <- predict(modelo,nuevosdatos)
prediccion
##        1        2        3        4 
## 230.2998 281.1612 357.4532 469.3483

Interpretación de los datos

  • Vemos que se muestran datos de la distancia (en millas) y el costo de 18 vuelos de una agencia de aviones. Con las variables rutas, minas y costos.

  • La ruta más corta es Dallas-Austin, mientras que la más larga es Nueva York-San Francisco.

  • La ruta más corta no es la más barata. La más barata es Houston-Dallas, el cual cobra 2 dólares menos que la ruta más corta.

  • El coeficiente de correlación entre distancia y costo es de 0.835779, lo que indica una correlación positiva considerable. Esto significa que habrá menos margen de error de equivocarse en el análisis predictivo.

  • Se creó el modelo de regresión para determinar el costo en función de las millas.

  • La variable prediccion(), en este caso nos ayuda a determinar el costo de un vuelo de acuerdo con sus ventas anteriores…

  • Se pueden apreciar los resultados sobre las gráficas, donde al parecer si le aplicamos el modelo de regresión lineal nos damos cuenta de que en la mayoría de las ocasiones el costo de un vuelo en avión depende en gran parte de la distancia que recorra, con ello podemos predecir que, por ejemlplo, si un vuelo es de una distancia de 1000 millas, lo más probable es que ese vuelo cueste alrededor de 260 dólares.