Analisis y regresión lineal en datos de Aerolineas Librerias

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

Cargamos los datos

data <- read_csv("C:/Users/JD/Documents/Analisis inteligente de datos/Datos/rutas.csv")
## Parsed with column specification:
## cols(
##   ruta = col_character(),
##   millas = col_double(),
##   costo = col_double()
## )
data <- data.frame(data)
str(data)
## '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 ...

Iniciamos la exploracion de los datos

summary(data)
##      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
print(data)
##                        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
#Obtengamos el valor de correlacion

CR <- cor(data$millas, data$costo)

print(CR)
## [1] 0.835779

Observaremos que el valor de correlacion anterior y comparemoslo contra la siguiente lista −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 Ahora empecemos el modelo de regresión lineal

model <- lm(costo ~ millas, data)

print(model)
## 
## Call:
## lm(formula = costo ~ millas, data = data)
## 
## Coefficients:
## (Intercept)       millas  
##    128.5770       0.1272
#Valores de coeficientes 

a <- model$coefficients[1] 

b <- model$coefficients[2]

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

Ahora empecemos a visualisar estos datos utilizando diagramas de dispersion

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

Continuaremos el analisis mediante la determinacion de otros estadisticos significativos: El Coeficiente de relación antes de su raiz Coeficente de relación es la raiz de Multiple R-squared que debe ser igual a CR generado anteriormente. El Valor de p-value que debe ser menor a 0.05 *** ó 0.01 ** para decir que la pendiente es diferente de 0 y que existe estadísticamente relación significativa entre las variables 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(model)
## 
## Call:
## lm(formula = costo ~ millas, data = data)
## 
## 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)
## [1] 0.8357631

El siguiente paso es crear la linea de tendencia, con esta podremos hacer predicciones que reacionen nuestras dos variables

y.predict <- predict(model, data)
print(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 tendencia correspondiente a Y = A+BX

ggplot() + geom_point(data = data, aes(x = millas, y = costo), size = 0.9) +
  geom_line(aes( x = data$millas, y = y.predict), color = "red") +
  xlab("Millas") + 
  ylab("Costo") + 
  ggtitle("Linea de tendencia sobre Conjunto de Datos. Millas Costo")

Por ultimo intentemos predecir los valores que en Y de una X espesifica, utilizando este modelo

ndata <- data.frame(millas = c(800, 1200, 1800, 2680))

print(ndata)
##   millas
## 1    800
## 2   1200
## 3   1800
## 4   2680
#Llevemos a cabo la prediccion

pre <- predict(model, ndata)

print(pre)
##        1        2        3        4 
## 230.2998 281.1612 357.4532 469.3483

Comentarios finales: Atravez de la informacion que se ha obtenido mediante este analisis podemos llegar a ver la tendencia de que a mayor distancia de viaje el costo aumenta y con este modelo podemos comprobar la relacion entre las millas y el costo siendo estas considerablemente correlativas