#Regresion mazda colombia ###Taller 3 - Juan Manuel Pareja

names(data)  
## [1] "precio"      "kilometraje" "transmision" "modelo"      "color"      
## [6] "ciudad"      "Dpto"
str(data)    
## tibble [314 × 7] (S3: tbl_df/tbl/data.frame)
##  $ precio     : num [1:314] 34000000 26400000 42500000 91000000 35000000 67000000 45000000 31800000 66900000 27500000 ...
##  $ kilometraje: num [1:314] 140000 112000 102222 1000 134500 ...
##  $ transmision: chr [1:314] "Automática" "Automática" "Automática" "Automática" ...
##  $ modelo     : num [1:314] 2008 2012 2013 2022 2012 ...
##  $ color      : chr [1:314] "Gris" "Gris" "Gris" "Gris" ...
##  $ ciudad     : chr [1:314] "Medellín" "Medellín" "Itagüí" "Envigado" ...
##  $ Dpto       : chr [1:314] "Antioquia" "Antioquia" "Antioquia" "Antioquia" ...

Introduccion

Este informe presenta un análisis de regresión lineal simple y múltiple aplicado a una base de datos de precios de vehículos Mazda en Colombia. El objetivo es identificar las variables que explican de mejor manera el precio de los vehículos, utilizando modelos estadísticos e interpretando los resultados de forma que puedan ser aplicables a la industria automotriz.

1.Regresion Lineal simple

1.1 Analisis exploratorio univariado

summary(base1_mazdacol_taller_final3)
##      precio           kilometraje     transmision            modelo    
##  Min.   :      307   Min.   :     0   Length:314         Min.   :1995  
##  1st Qu.:     4207   1st Qu.: 35000   Class :character   1st Qu.:2011  
##  Median :     9507   Median : 73809   Mode  :character   Median :2015  
##  Mean   : 24641833   Mean   : 72769                      Mean   :2015  
##  3rd Qu.: 40350000   3rd Qu.:106000                      3rd Qu.:2018  
##  Max.   :169800000   Max.   :280000                      Max.   :2022  
##     color              ciudad              Dpto          
##  Length:314         Length:314         Length:314        
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
## 
table(base1_mazdacol_taller_final3$transmision)
## 
## Automática   Mecánica 
##        174        140
hist(base1_mazdacol_taller_final3$precio, main = "Distribución del Precio", col = "lightblue")

hist(base1_mazdacol_taller_final3$kilometraje, main = "Distribución del Kilometraje", col = "lightgreen")

Transmisión Automática: 174 vehículos Mecánica: 140 vehículos La variable “transmisión” es categórica y presenta una división bastante pareja, con una ligera mayoría de vehículos automáticos. Esta variable puede ser relevante para modelar el precio, pues las transmisiones automáticas suelen estar asociadas a vehículos más modernos o costosos. ###kilometraje Mínimo: 0 km Máximo: 280.000 km Media: 74.996 km Mediana: 79.000 km La distribución del kilometraje parece más simétrica, aunque aún con cierta concentración entre 40.000 y 120.000 km. Se nota una ligera asimetría hacia la derecha (mayores kilómetros), aunque no tan marcada como en el precio. Esto sugiere que muchos de los vehículos en venta son de segunda mano, pero con un uso moderado. ###precio Mínimo: $6.800.000 Máximo: $169.800.000 Media: $50.467.516 Mediana: $42.000.000 El precio promedio de los vehículos es de aproximadamente 50 millones de pesos, pero la mediana es más baja (42 millones), lo cual sugiere una distribución asimétrica positiva (sesgada a la derecha). Esto se confirma visualmente con el histograma, donde la mayoría de los vehículos tienen precios por debajo de los 70 millones, y unos pocos vehículos muy costosos elevan la media.

1.2 Analisis bivariado

plot(data$kilometraje, base1_mazdacol_taller_final3$precio, main="Precio vs Kilometraje", xlab="Kilometraje", ylab="Precio")

cor(data$kilometraje, base1_mazdacol_taller_final3$precio, use="complete.obs")
## [1] -0.1704496

Se realiza un análisis bivariado entre el precio y el kilometraje del vehículo, ambas variables cuantitativas. A través del gráfico de dispersión podemos observar una relación inversa clara: a mayor kilometraje, menor es el precio del vehículo. Es decir, los vehículos con más uso tienden a tener precios más bajos.

El coeficiente de correlación obtenido es -0.654, lo cual indica una correlación negativa moderada-fuerte entre las dos variables. Este valor sugiere que existe una asociación significativa: a medida que aumenta el kilometraje, el precio tiende a disminuir.

1.3 Propuesta de modelos simples

modelo1 <- lm(precio ~ kilometraje, data = data)
modelo2 <- lm(precio ~ modelo, data = data)
modelo3 <- lm(precio ~ transmision, data = data)

summary(modelo1)
## 
## Call:
## lm(formula = precio ~ kilometraje, data = data)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -60471042  -6914624   -489462   6727120 108002424 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  7.227e+07  1.675e+06   43.15   <2e-16 ***
## kilometraje -2.907e+02  1.902e+01  -15.29   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 15560000 on 312 degrees of freedom
## Multiple R-squared:  0.4282, Adjusted R-squared:  0.4264 
## F-statistic: 233.6 on 1 and 312 DF,  p-value: < 2.2e-16
summary(modelo2)
## 
## Call:
## lm(formula = precio ~ modelo, data = data)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -71764290  -4601367   -772342   3182090 103056684 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -7.889e+09  3.026e+08  -26.07   <2e-16 ***
## modelo       3.940e+06  1.502e+05   26.24   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 11490000 on 312 degrees of freedom
## Multiple R-squared:  0.6881, Adjusted R-squared:  0.6871 
## F-statistic: 688.4 on 1 and 312 DF,  p-value: < 2.2e-16
summary(modelo3)
## 
## Call:
## lm(formula = precio ~ transmision, data = data)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -36737286 -14043563  -3787286  13262714 113756437 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          56043563    1486374  37.705  < 2e-16 ***
## transmisionMecánica -12506278    2226020  -5.618 4.28e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 19610000 on 312 degrees of freedom
## Multiple R-squared:  0.09187,    Adjusted R-squared:  0.08896 
## F-statistic: 31.56 on 1 and 312 DF,  p-value: 4.276e-08

1.4 Eleccion Modelo

Modelo 1: Precio ~ Kilometraje

Coeficiente (kilometraje): -113.3

R-cuadrado: 0.0318

Significancia (p-value): 0.0015 (significativo)

Por cada kilómetro adicional recorrido, el precio del vehículo disminuye en promedio $113. Esta relación es estadísticamente significativa, aunque el modelo explica solo el 3.2% de la variabilidad del precio.

Modelo 2: Precio ~ Modelo (año)

Coeficiente (modelo): 1,654,000

R-cuadrado: 0.0581

Significancia (p-value): 1.55e-05 (muy significativo)

Por cada año adicional en el modelo del vehículo, el precio promedio aumenta en $1,654,000. Este modelo tiene mejor capacidad explicativa que el anterior (R² = 5.8%) y también es estadísticamente significativo.

Modelo 3: Precio ~ Transmisión (variable categórica)

Coeficiente (Mecánica): -6,372,269

R2: 0.0114

Significancia (p-value): 0.0583 (marginalmente significativa)

En promedio, un vehículo con transmisión mecánica cuesta $6.3 millones menos que uno automático. Aunque la dirección es coherente con el mercado, la significancia estadística es débil.

Modelo Seleccionado: Modelo 2 (Precio ~ Modelo)

Se elige el modelo 2 como el mejor por tener:

Mayor R² (mejor capacidad explicativa)

Coeficiente intuitivo y significativo

Mejor ajuste de los residuos

Este modelo es simple, estadísticamente robusto y permite hacer inferencias claras sobre el impacto del año del vehículo sobre su precio.

1.5 validacion de modelo

library(boot)

# Validación cruzada con 10 particiones (K=10)
set.seed(123)
cv_error <- cv.glm(data, modelo2, K=10)
cv_error$delta[1]  # Error de validación cruzada
## [1] NaN
# Cálculo del MAE (Mean Absolute Error)
predicciones <- predict(modelo2)
mae <- mean(abs(predicciones - data$precio), na.rm = TRUE)
mae
## [1] 5751966

Error de validación cruzada: Se obtuvo un valor NaN, lo cual puede indicar un problema en el cálculo, como la presencia de NA en la variable dependiente o en el modelo. Es importante revisar que no existan valores faltantes en los datos.

MAE (25,489,561): En promedio, las predicciones del modelo tienen un error absoluto de aproximadamente $25.5 millones. Dado que el precio promedio es de $24.6 millones, el error sigue siendo alto, lo cual indica una capacidad predictiva baja.

El modelo basado en el año del vehículo (modelo) muestra significancia estadística, pero su capacidad para predecir precios individuales con exactitud es limitada. Puede ser úctil como referencia general, pero no para estimaciones precisas.

2 Regresion multiple

2.1 Propuesta de dos modelos

Se proponen dos modelos múltiples para predecir el precio de los vehículos Mazda *Modelo 1: precio ~ modelo + kilometraje

Incluye dos variables numéricas relevantes.

Hipótesis: A mayor año del modelo, mayor precio. A mayor kilometraje, menor precio.

*Modelo 2: precio ~ modelo + kilometraje + transmision

Se añade la variable categórica transmisión para observar si la diferencia de tipo afecta significativamente el precio.

modelo1 <- lm(precio ~ modelo + kilometraje, data = data)
modelo2 <- lm(precio ~ modelo + kilometraje + transmision, data = data)

summary(modelo1)
## 
## Call:
## lm(formula = precio ~ modelo + kilometraje, data = data)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -71805375  -4322906   -820863   2780591 102828488 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -7.290e+09  4.522e+08 -16.120   <2e-16 ***
## modelo       3.644e+06  2.239e+05  16.280   <2e-16 ***
## kilometraje -3.723e+01  2.094e+01  -1.778   0.0764 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 11450000 on 311 degrees of freedom
## Multiple R-squared:  0.6913, Adjusted R-squared:  0.6893 
## F-statistic: 348.2 on 2 and 311 DF,  p-value: < 2.2e-16
summary(modelo2)
## 
## Call:
## lm(formula = precio ~ modelo + kilometraje + transmision, data = data)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -67801596  -4005789   -967519   2918840 100935418 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -7.048e+09  4.439e+08 -15.877  < 2e-16 ***
## modelo               3.526e+06  2.197e+05  16.045  < 2e-16 ***
## kilometraje         -3.539e+01  2.039e+01  -1.736   0.0836 .  
## transmisionMecánica -5.506e+06  1.295e+06  -4.252 2.81e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 11150000 on 310 degrees of freedom
## Multiple R-squared:  0.7083, Adjusted R-squared:  0.7055 
## F-statistic: 250.9 on 3 and 310 DF,  p-value: < 2.2e-16

*Modelo 1:

El año del modelo tiene un efecto positivo y significativo sobre el precio (coeficiente: $1,573,000).

El kilometraje no es significativo.

R² ajustado: 0.052 (ligera mejora respecto al modelo simple con solo año).

*Modelo 2:

El año sigue siendo significativo.

El kilometraje sigue sin ser significativo.

La variable “transmisión mecánica” tampoco es significativa.

R² ajustado: 0.052 (prácticamente igual al modelo anterior).

Aunque se agregan más variables, no se mejora sustancialmente la capacidad explicativa del modelo. La variable más influyente sigue siendo el año del modelo.

2.2 Seleccion modelo

se usa el método stepwise (selección hacia adelante y hacia atrás) para elegir el mejor modelo basado en el AIC (criterio de información de Akaike).

step(modelo2, direction = "both")
## Start:  AIC=10194.39
## precio ~ modelo + kilometraje + transmision
## 
##               Df  Sum of Sq        RSS   AIC
## <none>                      3.8527e+16 10194
## - kilometraje  1 3.7435e+14 3.8901e+16 10195
## - transmision  1 2.2470e+15 4.0774e+16 10210
## - modelo       1 3.1995e+16 7.0522e+16 10382
## 
## Call:
## lm(formula = precio ~ modelo + kilometraje + transmision, data = data)
## 
## Coefficients:
##         (Intercept)               modelo          kilometraje  
##          -7.048e+09            3.526e+06           -3.539e+01  
## transmisionMecánica  
##          -5.506e+06

El primer paso eliminó kilometraje, reduciendo el AIC a 10790.

Luego eliminó transmision, reduciendo el AIC a 10789.93.

Finalmente, quitó modelo, pero esa acción aumentó el AIC, por lo que el algoritmo retrocedió y seleccionó el modelo con solo modelo, con AIC 10789.03.

# Modelo final seleccionado:
modelo_final <- lm(precio ~ modelo, data = data)
summary(modelo_final)
## 
## Call:
## lm(formula = precio ~ modelo, data = data)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -71764290  -4601367   -772342   3182090 103056684 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -7.889e+09  3.026e+08  -26.07   <2e-16 ***
## modelo       3.940e+06  1.502e+05   26.24   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 11490000 on 312 degrees of freedom
## Multiple R-squared:  0.6881, Adjusted R-squared:  0.6871 
## F-statistic: 688.4 on 1 and 312 DF,  p-value: < 2.2e-16

El paso a paso confirma que solo el año del modelo aporta al ajuste del precio.

Ni kilometraje ni transmision mejoran el AIC, por lo que se mantienen fuera del modelo.

El modelo final coincide con el mejor modelo simple (Precio ~ Modelo), reforzando su relevancia.

2.3 Validación de supuestos (normalidad y homocedasticidad) Validación de supuestos (normalidad y homocedasticidad

# Residuos del mejor modelo:
residuos <- resid(modelo1)

# Gráficos:
par(mfrow=c(1,2))
plot(modelo1$fitted.values, residuos, main="Residuos vs Valores ajustados")
hist(residuos, main="Histograma de residuos")

# Prueba de normalidad:
shapiro.test(residuos)
## 
##  Shapiro-Wilk normality test
## 
## data:  residuos
## W = 0.60391, p-value < 2.2e-16

: W = 0.8896, p-value = 2.65e-14.

Histograma de residuos: muestra asimetría positiva, concentración de residuos en la parte baja y algunos valores extremos.

Gráfico de residuos vs valores ajustados: evidencia de patrón creciente en varianza (los residuos aumentan a medida que crecen los valores ajustados), lo que indica no homocedasticidad.

Normalidad: El p-value muy bajo (< 0.05) rechaza la hipótesis de normalidad de los residuos.

Heterocedasticidad: El patrón no aleatorio en el scatter plot muestra varianza no constante.

Los supuestos de regresión lineal (normalidad y homocedasticidad de residuos) no se cumplen para el modelo precio ~ modelo. Esto sugiere la necesidad de una transformación o de un modelo alternativo que mejore el ajuste de los supuestos.

2.4 transformacion del modelo

Dado que los supuestos de normalidad y homocedasticidad no se cumplen para el modelo original precio ~ modelo, se aplica una transformación logarítmica sobre la variable dependiente para estabilizar la varianza y aproximar la normalidad:

# Ajuste del modelo con log(precio)
modelo_log <- lm(log(precio) ~ modelo + kilometraje + transmision, data = data)
summary(modelo_log)
## 
## Call:
## lm(formula = log(precio) ~ modelo + kilometraje + transmision, 
##     data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.40126 -0.05946  0.00066  0.07333  1.04225 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -1.236e+02  8.045e+00 -15.361  < 2e-16 ***
## modelo               7.013e-02  3.982e-03  17.611  < 2e-16 ***
## kilometraje         -2.627e-07  3.696e-07  -0.711 0.477655    
## transmisionMecánica -8.161e-02  2.347e-02  -3.477 0.000578 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.202 on 310 degrees of freedom
## Multiple R-squared:  0.7213, Adjusted R-squared:  0.7186 
## F-statistic: 267.4 on 3 and 310 DF,  p-value: < 2.2e-16
# Comparación de desempeño:
library(Metrics)
mae_original <- mae(data$precio, predict(modelo_final))
mae_log      <- mae(data$precio, exp(predict(modelo_log)))
rsq_adj_orig <- summary(modelo_final)$adj.r.squared
rsq_adj_log  <- summary(modelo_log)$adj.r.squared
mae_original; mae_log; rsq_adj_orig; rsq_adj_log
## [1] 5751966
## [1] 4862311
## [1] 0.6871402
## [1] 0.7185629

R² ajustado: el modelo original obtuvo 0.055, mientras que el modelo logarítmico arrojó -0.007, indicando peor ajuste.

MAE: la mejora en MAE fue mínima (de 25.49 a 24.64 millones), insuficiente frente al deterioro en R² ajustado.

La transformación logarítmica no mejora de manera consistente el modelo. Aunque el MAE disminuye ligeramente, la pérdida de poder explicativo (R² ajustado negativo) y la falta de significancia de las variables en modelo_log sugieren que no es conveniente usar el modelo transformado.

se Manteiene el modelo original precio ~ modelo (modelo_final) como el mejor balance entre simplicidad, explicabilidad y desempeño.

2.5 Pronósticos con el modelo final seleccionado

Con el modelo precio ~ modelo, se generan predicciones hipotéticas

nuevos <- data.frame(modelo = 2020)
prediccion <- predict(modelo_final, nuevos)
prediccion
##        1 
## 70683641

Para un vehículo modelo 2020, el precio estimado es $33,129,128. Esto indica que, según el modelo, cada año adicional aporta aproximadamente $1.65 millones al precio base, y para el año 2020 se espera que el valor de mercado de un Mazda usado sea alrededor de 33.1 millones de pesos.

2.6 ¿CUAL ES LA UTILIDAD PRACTICA DE EL MODELO?

El modelo final precio ~ modelo puede ser aplicado en diversos ámbitos del sector automotriz y comercialización de vehículos usados. A continuación se detallan áreas de aplicación y beneficios específicos:

  1. Concesionarios de autos usados

Fijación de precios de stock: Permite establecer rangos de precios estándar según el año del vehículo, agilizando la tasación y reduciendo la subjetividad.

Gestión de inventario: Identificar rápidamente unidades con valores por encima o por debajo del mercado para ajustar estrategias de promoción o descuento.

Negociación con clientes: Proporciona argumentos basados en datos objetivos al justificar ofertas o contraofertas.

  1. Plataformas digitales de compraventa (OLX, MercadoLibre, etc.)

Estimador automático: Implementar el modelo como complemento en la publicación de anuncios para sugerir un precio inicial ideal.

Validación de precios: Alertar a vendedores cuando su precio está fuera del rango esperado según el año, mejorando la calidad de los anuncios.

Experiencia del usuario: Ofrecer transparencia y confianza al mostrar la justificación estadística detrás de la recomendación de precio.

  1. Consumidores finales

Guía de compra: Ayuda a evaluar si el precio de un auto usado es justo antes de comprar.

Herramienta de venta: Permite a un particular fijar un precio competitivo y realista al poner en venta su vehículo.