# 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>
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
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.
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
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
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.
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.
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.
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.
residuos <- modelo1$residuals
plot(modelo1)
Como podemos ver en el gráfico Q-Q residuals, los residuos si giran en torno al 0.
Fijemos x = 84, entonces y|x = 30.367.