En este informe construiremos un modelo de regresión múltiple para predecir el consumo de gasolina (litros) en diferentes tipos de vehículos, considerando variables como distancia recorrida, velocidad promedio, tipo de vehículo, uso de aire acondicionado y peso de la carga. Este análisis busca identificar los factores que más influyen en el consumo de combustible, con aplicaciones potenciales en logística, gestión de flotas y sostenibilidad ambiental.

  1. El modelo se desarrollará siguiendo estos pasos:

  2. Análisis exploratorio de datos

  3. Selección y transformación de variables

  4. Construcción y validación del modelo

Interpretación de resultados y recomendaciones

Cargar datos

datos <- read_excel("consumo_gasolina.xlsx")

Limpieza inicial: eliminar consumos negativos (errores de medición)

datos <- datos %>% 
  filter(CONSUMO_LITROS >= 0) %>%
  mutate(
    TIPO_VEHICULO = as.factor(TIPO_VEHICULO),
    AIRE_ACONDICIONADO = as.factor(AIRE_ACONDICIONADO)
  )

Ver estructura

str(datos)
## tibble [98 × 6] (S3: tbl_df/tbl/data.frame)
##  $ DISTANCIA_KM      : num [1:98] 193.5 475.9 368.7 303.3 86.4 ...
##  $ VELOCIDAD_PROMEDIO: num [1:98] 32.8 87.3 58.3 75.8 111.7 ...
##  $ TIPO_VEHICULO     : Factor w/ 4 levels "Camión","Camioneta",..: 1 1 2 4 1 1 3 1 1 3 ...
##  $ AIRE_ACONDICIONADO: Factor w/ 2 levels "No","Sí": 2 2 2 1 2 2 1 2 1 1 ...
##  $ PESO_CARGA_KG     : num [1:98] 103 1063 1081 1275 1452 ...
##  $ CONSUMO_LITROS    : num [1:98] 28.5 42 31 14.1 23.9 ...
head(datos) %>% kableExtra::kable() %>% kableExtra::kable_styling()
DISTANCIA_KM VELOCIDAD_PROMEDIO TIPO_VEHICULO AIRE_ACONDICIONADO PESO_CARGA_KG CONSUMO_LITROS
193.5 32.8 Camión 103.4 28.49
475.9 87.3 Camión 1062.7 41.96
368.7 58.3 Camioneta 1081.3 30.96
303.3 75.8 Moto No 1274.9 14.10
86.4 111.7 Camión 1452.2 23.88
86.4 52.4 Camión 1951.7 23.96

Distribución del Consumo de Gasolina

ggplot(datos, aes(x = CONSUMO_LITROS)) +
  geom_histogram(bins = 30, fill = "steelblue", color = "white") +
  labs(title = "Distribución del Consumo de Gasolina",
       x = "Consumo (litros)",
       y = "Frecuencia") +
  theme_minimal()

Relaciones entre Variables

Matriz de correlación para variables numéricas

numeric_vars <- datos %>% select(DISTANCIA_KM, VELOCIDAD_PROMEDIO, PESO_CARGA_KG, CONSUMO_LITROS)
pairs(numeric_vars, pch = 19, col = "blue", main = "Matriz de Correlación")

## Modelado de Regresión Múltiple

modelo_completo <- lm(CONSUMO_LITROS ~ DISTANCIA_KM + VELOCIDAD_PROMEDIO + 
                      TIPO_VEHICULO + AIRE_ACONDICIONADO + PESO_CARGA_KG, 
                      data = datos)

summary(modelo_completo)$coefficients %>% 
  kableExtra::kable(digits = 3, caption = "Resumen del Modelo de Regresión Completo") %>%
  kableExtra::kable_styling()
Resumen del Modelo de Regresión Completo
Estimate Std. Error t value Pr(>&#124;t&#124;)
(Intercept) 12.338 0.758 16.286 0.000
DISTANCIA_KM 0.048 0.001 39.201 0.000
VELOCIDAD_PROMEDIO 0.001 0.007 0.170 0.865
TIPO_VEHICULOCamioneta -7.079 0.502 -14.090 0.000
TIPO_VEHICULOCarro -11.416 0.473 -24.129 0.000
TIPO_VEHICULOMoto -15.969 0.468 -34.102 0.000
AIRE_ACONDICIONADOSí 3.939 0.354 11.118 0.000
PESO_CARGA_KG 0.002 0.000 7.381 0.000
par(mfrow = c(2,2))
plot(modelo_completo)

# Usando stepwise para selección automática

modelo_final <- step(modelo_completo, direction = "both", trace = 0)

summary(modelo_final)$coefficients %>% 
  kableExtra::kable(digits = 3, caption = "Resumen del Modelo Final (Stepwise)") %>%
  kableExtra::kable_styling()
Resumen del Modelo Final (Stepwise)
Estimate Std. Error t value Pr(>&#124;t&#124;)
(Intercept) 12.423 0.570 21.775 0
DISTANCIA_KM 0.048 0.001 39.451 0
TIPO_VEHICULOCamioneta -7.076 0.499 -14.170 0
TIPO_VEHICULOCarro -11.409 0.469 -24.328 0
TIPO_VEHICULOMoto -15.952 0.455 -35.030 0
AIRE_ACONDICIONADOSí 3.946 0.350 11.262 0
PESO_CARGA_KG 0.002 0.000 7.425 0

Verificación de multicolinealidad

summary(modelo_final)$coefficients %>%
  kableExtra::kable(digits = 3, caption = "Resumen del Modelo Final (Stepwise)") %>%
  kableExtra::kable_styling()
Resumen del Modelo Final (Stepwise)
Estimate Std. Error t value Pr(>&#124;t&#124;)
(Intercept) 12.423 0.570 21.775 0
DISTANCIA_KM 0.048 0.001 39.451 0
TIPO_VEHICULOCamioneta -7.076 0.499 -14.170 0
TIPO_VEHICULOCarro -11.409 0.469 -24.328 0
TIPO_VEHICULOMoto -15.952 0.455 -35.030 0
AIRE_ACONDICIONADOSí 3.946 0.350 11.262 0
PESO_CARGA_KG 0.002 0.000 7.425 0

Predicciones

##Caso de Estudio 1: Camión con Aire Acondicionado

nuevo_dato1 <- data.frame(
  DISTANCIA_KM = 300,
  VELOCIDAD_PROMEDIO = 65,
  TIPO_VEHICULO = factor("Camión", levels = levels(datos$TIPO_VEHICULO)),
  AIRE_ACONDICIONADO = factor("Sí", levels = levels(datos$AIRE_ACONDICIONADO)),
  PESO_CARGA_KG = 1500
)

prediccion1 <- predict(modelo_final, nuevo_dato1, interval = "confidence")
prediccion1 %>% kableExtra::kable(digits = 2, caption = "Predicción: Camión con Aire Acondicionado") %>%
  kableExtra::kable_styling()
Predicción: Camión con Aire Acondicionado
fit lwr upr
34.3 33.46 35.14

#Caso de Estudio 2: Carro sin Aire Acondicionado

nuevo_dato2 <- data.frame(
  DISTANCIA_KM = 150,
  VELOCIDAD_PROMEDIO = 80,
  TIPO_VEHICULO = factor("Carro", levels = levels(datos$TIPO_VEHICULO)),
  AIRE_ACONDICIONADO = factor("No", levels = levels(datos$AIRE_ACONDICIONADO)),
  PESO_CARGA_KG = 500
)

prediccion2 <- predict(modelo_final, nuevo_dato2, interval = "confidence")
prediccion2 %>% kableExtra::kable(digits = 2, caption = "Predicción: Carro sin Aire Acondicionado") %>%
  kableExtra::kable_styling()
Predicción: Carro sin Aire Acondicionado
fit lwr upr
9.41 8.53 10.29

Conclusiones y Recomendaciones

1.Variables Significativas: El análisis reveló que [explicar qué variables fueron más significativas según los resultados de tu modelo].

2.Efecto del Tipo de Vehículo: Los camiones presentan un consumo significativamente mayor que los carros (X litros adicionales en promedio), mientras que las motos muestran el menor consumo.

3.Impacto del Aire Acondicionado: El uso de aire acondicionado incrementa el consumo en aproximadamente X litros en promedio.

4.Relación Distancia-Consumo: Cada 100 km adicionales recorridos aumentan el consumo en aproximadamente X litros, manteniendo constantes las demás variables.