Gasoline Mileage Data

# CARGA DE BASE DE DATOS:
datos <- read_excel("Gasoline_Mileage_Data.xlsx")
print(datos)
## # A tibble: 32 × 11
##    Automobile   `y (MPG)` `x1 (Displacement)` `x2 (Horsepower)` `x3 (Torque)`
##    <chr>            <dbl>               <dbl>             <dbl>         <dbl>
##  1 Apollo            18.9               350                 165           260
##  2 Omega             17                 350                 170           275
##  3 Nova              20                 250                 105           185
##  4 Monarch           18.2               351                 143           255
##  5 Duster            20.1               225                  95           170
##  6 Jenson Conv.      11.2               440                 215           330
##  7 Skyhawk           22.1               231                 110           175
##  8 Monza             21.5               262                 110           200
##  9 Scirocco          34.7                89.7                70            81
## 10 Corolla SR-5      30.4                96.9                75            83
## # ℹ 22 more rows
## # ℹ 6 more variables: `x4 (Compression)` <chr>, `x6 (Carburetor)` <dbl>,
## #   `x7 (Transmission Speed)` <dbl>, `x8 (Length)` <dbl>, `x9 (Width)` <dbl>,
## #   `x10 (Weight)` <dbl>

1. Correlaciones, gráficas y teóricas:¨

Primero probemos la normalidad de nuestra variable respuesta:

gasolina <- datos$`y (MPG)`
shapiro.test(gasolina)
## 
##  Shapiro-Wilk normality test
## 
## data:  gasolina
## W = 0.89426, p-value = 0.004439

Como podemos ver, el p_value < 0.05. Por lo tanto la distribución de los datos no es normal.

De nuestro conjunto de datos, las variables que se van a eligir para probar su relación con nuestra variable respuesta son: desplazamiento, caballos de fuerza y peso. Probemos la normalidad de estas variables:

desplazamiento <- datos$`x1 (Displacement)`
shapiro.test(desplazamiento)
## 
##  Shapiro-Wilk normality test
## 
## data:  desplazamiento
## W = 0.93606, p-value = 0.05792
fuerza <- datos$`x2 (Horsepower)`
shapiro.test(fuerza)
## 
##  Shapiro-Wilk normality test
## 
## data:  fuerza
## W = 0.95074, p-value = 0.1513
peso <- datos$`x10 (Weight)`
shapiro.test(peso)
## 
##  Shapiro-Wilk normality test
## 
## data:  peso
## W = 0.97279, p-value = 0.5797

A diferencia de con nuestra variable de respuesta (y), todas nuestras variables explicatvas tuvieron un p_value > 0.05. Por lo tanto, tienen una distribución normal.

Ahora hagamos las gráficas de correlación con sus respectivos coeficientes de correlación (en donde vamos a utilizar el método de Spearman debido a que nuestra variable explicativa no tiene una distribución normal:

par(mfrow = c(1, 1), mar = c(4, 4, 2, 1))
plot(desplazamiento, gasolina, main="MPG vs. Desplazamiento", pch=19, col="skyblue")

r1 <- cor(gasolina, desplazamiento, method="spearman")
print(r1)
## [1] -0.8785647
par(mfrow = c(1, 1), mar = c(4, 4, 2, 1))
plot(fuerza, gasolina, main="MPG vs. Fuerza", pch=19, col="skyblue")

r2 <- cor(gasolina, fuerza, method="spearman")
print(r2)
## [1] -0.8499958
par(mfrow = c(1, 1), mar = c(4, 4, 2, 1))
plot(peso, gasolina, main="MPG vs. Peso", pch=19, col="skyblue")

r3 <- cor(gasolina, peso, method="spearman")
print(r3)
## [1] -0.8348313

2. ¿Son significativas las correlaciones?

Como podemos evidenciar en los gráficos, todas las relaciones entre la variable respuesta y las explicativas tienen una tendencia negativa, siendo inversamente proporcionales en todos los casos (a medida que aumenta la variable explicativa disminuye la variable de respuesta). Esto lo podemos confirmar con los coeficientes de correlación de cada par calculado con el método Spearman. Como podemos ver, todos se encuentran entre -0.7 y -1, siendo una clara correlación negativa fuerte.

3. ¿Cuál es el mejor modelo de regresión lineal simple?

modelo1 <- lm(gasolina ~ desplazamiento)
summary(modelo1)
## 
## Call:
## lm(formula = gasolina ~ desplazamiento)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.7875 -1.9616  0.0206  1.7878  6.8182 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    33.727439   1.445559   23.33  < 2e-16 ***
## desplazamiento -0.047428   0.004706  -10.08 3.82e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.067 on 30 degrees of freedom
## Multiple R-squared:  0.772,  Adjusted R-squared:  0.7644 
## F-statistic: 101.6 on 1 and 30 DF,  p-value: 3.82e-11
r_det1 <- r1^2
print(r_det1)
## [1] 0.771876
modelo2 <- lm(gasolina ~ fuerza)
summary(modelo2)
## 
## Call:
## lm(formula = gasolina ~ fuerza)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.0293 -2.1349 -0.2687  2.1005  9.8307 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 35.73646    2.17932  16.398  < 2e-16 ***
## fuerza      -0.11334    0.01515  -7.482 2.44e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.794 on 30 degrees of freedom
## Multiple R-squared:  0.6511, Adjusted R-squared:  0.6394 
## F-statistic: 55.97 on 1 and 30 DF,  p-value: 2.439e-08
r_det2 <- r2^2
print(r_det2)
## [1] 0.7224929
modelo3 <- lm(gasolina ~ peso)
summary(modelo3)
## 
## Call:
## lm(formula = gasolina ~ peso)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -7.0841 -1.9907 -0.5406  3.3520  7.6914 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 39.9621950  2.4153171  16.545  < 2e-16 ***
## peso        -0.0055518  0.0006568  -8.453 1.96e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.493 on 30 degrees of freedom
## Multiple R-squared:  0.7043, Adjusted R-squared:  0.6945 
## F-statistic: 71.46 on 1 and 30 DF,  p-value: 1.963e-09
r_det3 <- r3^2
print(r_det3)
## [1] 0.6969432

Modelo 1 (MPG vs. Desplazamiento)

  • B1 = -0.047

  • B0 = 33.727. Cuando el volumen total de aire y combustible que los pistones pueden desplazar dentro de los cilindros es 0, recorre 33.727 millas por galón.

  • El 77% de los datos del recorrido del automóvil por galón de gasolina son explicados por los datos del volumen total de aire y combustible que los pistones pueden desplazar dentro de los cilindros

Modelo 2 (MPG vs. Fuerza)

  • B1 = -0.11

  • B0 = 35.736. Cuando el automóvil no tiene caballos de fuerza, recorre 35.736 millas por galón.

  • El 72% de los datos del recorrido del automóvil por galón de gasolina son explicados por los datos de sus caballos de fuerza.

Modelo 3 (MPG vs. Peso)

  • B1 = -0.005

  • B0 = 39.962. Cuando el peso del automóvil es 0, el automóvil recorre 39.962 millas por galón.

  • El 69% de los datos del recorrido del automóvil por galón de gasolina son explicados por los datos de sus pesos.

En conclusión, el mejor modelo sería el del recorrido del automóvil por galon dependiendo del volumen total de aire y combustible que los pistones pueden desplazar dentro de los cilindros.

4. ¿Se cumple la normalidad de los residuos?

residuos1 <- modelo1$residuals
shapiro.test(residuos1)
## 
##  Shapiro-Wilk normality test
## 
## data:  residuos1
## W = 0.98702, p-value = 0.9589

Como podemos evidenciar, p_value > 0.05. Por lo tanto, los residuos de nuestro modelo son normales.

5. ¿Son los residuos homocedásticos:**

bptest(modelo1)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo1
## BP = 5.2642, df = 1, p-value = 0.02177

Como podemos evidenciar, p_value < 0.05. Por lo tanto, los residuos no tienen igualdad de varianza.

6. ¿Son independientes los residuos y giran en torno al cero?:

residuos <- modelo1$residuals
plot(modelo1)

Como podemos ver en el gráfico Q-Q residuals, los residuos si giran en torno al 0.

7. Fije un valor de x y estime el valor de y|x:

Fijemos x = 84, entonces y|x = 30.367.