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
library(dplyr)
library(ggplot2) # Para gráficos 'amigables'
library(corrplot) # Para correlaciones
library(readr)
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
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
grafica <- ggplot(data = datos, mapping = aes(x=millas, y = costo)) + geom_point()
grafica
r <- cor(datos$millas, datos$costo)
r <- round(r,4)
r
## [1] 0.8358
El valor del coeficiente de correlación es 0.8358 que significa que estadísticamente es correlación positiva considerable
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
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
a <- modelo$coefficients[1]
b <- modelo$coefficients[2]
a
## (Intercept)
## 128.577
b
## millas
## 0.1271535
millas.nuevo <- 200
prediccion <- a + b * millas.nuevo
prediccion <- round(prediccion,4)
prediccion
## (Intercept)
## 154.0077
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
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
millas <- c(290, 760, 1100, 1400, 1650)
millaspred <- c(a + b * millas)
millaspred
## [1] 165.4515 225.2136 268.4458 306.5918 338.3802
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
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