objetivo Realizar un análisis de datos determinando el coeficiente de correlación y aplicando el modelo de regresión lineal simple (RLS) para relizar predicciones.
Se busca una interpretación de los resultados del modelo
library(dplyr) # Para select filter y otras cosas
library(ggplot2) # Para gráficos
library(corrplot) # Para correlaciones
library(readr) # 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
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
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
Las las millas es variable independiente o x
El costo es la variable dependiente o y
−1.00 = correlación negativa perfecta. (“A mayor X, menor Y”, de manera proporcional. Es decir, cada vez que X aumenta una unidad, Y disminuye siempre una cantidad constante).Esto también se aplica “a menor X, mayor Y”.
−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).
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)
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
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
A partir del modelo en la variable ‘coefficientes’, siendo un vector creado del modelo, 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
millas.nuevo <- 200
prediccion <- a + b * millas.nuevo
prediccion
## (Intercept)
## 154.0077
Interpretación. Para una distancia 200 millas entre una ciudad a otra el costo del boleto d avión debiera ser de 154.0076802 conforme al modelo de regresión Lineal
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