Introducción

El análisis de precios en el mercado de vehículos usados es fundamental tanto para compradores como para vendedores, ya que permite comprender qué factores influyen en la valoración de un automóvil. En este trabajo se realiza un estudio exploratorio y estadístico sobre una base de datos de vehículos, con el objetivo de identificar qué variables explican mejor el comportamiento del precio. Para ello, se emplean modelos lineales simples y múltiples que incorporan variables tanto cuantitativas como cualitativas, tales como el kilometraje, el año del modelo, la marca del vehículo, el tipo de transmisión, entre otras. Además del ajuste de los modelos, se lleva a cabo un análisis de los residuos con el fin de evaluar la validez de los supuestos clásicos de regresión y determinar la necesidad de transformaciones, como el logaritmo, sobre las variables. Los resultados obtenidos permiten establecer conclusiones sobre la relevancia de ciertos factores y ofrecen lineamientos para la construcción de modelos más robustos en futuros análisis.

precio km modelo veh transmision combustible
38000000 111000 2011 kia cerato Mecánica Gasolina
46500000 65000 2014 kia cerato Mecánica Gasolina
43000000 86500 2013 kia cerato Mecánica Gasolina
35000000 134000 2011 kia cerato Mecánica Gasolina
48500000 112000 2015 kia cerato Mecánica Gasolina
43000000 105000 2012 kia cerato Automática Gasolina

Análsis exploratorio

En este análisis exploraremos las características de los carros modelos Kia cerato y Chevrolet Sail en la ciudad de Cali, Colombia, con el objetivo de comprender la distribución y variabilidad de variables:

  • Cuantitativas (dbl): Km, modelo
  • Cualitativas (chr): Veh, transmision

NOTA: La variable combustible no se tomará en cuenta ya que como se ve en la siguiente tabla todos los carros usan gasolina.

Tabla 1. Valores únicos de las variables dummys

variable unicos
Vehículo 2
Transmisión 2
Combustible 1

Tabla 2. Estadística descriptiva variables cuantitativas

variable Max Min Media Mediana Desvest CoefVar
Precio 8.3e+07 1e+06 40445659 3.7e+07 12411760 0.3069
Km 228000 0 92492 91000 42745 0.4622
Modelo 2022 2010 2015 2015 2.457 0.001219

El análisis descriptivo muestra que las variables Precio y Km presentan una alta dispersión relativa, evidenciada por sus coeficientes de variación de 0.3069 y 0.4622, respectivamente, y por la diferencia entre la media y la mediana, lo que sugiere una posible distribución sesgada a la derecha y la presencia de valores atípicos, como vehículos con precios o kilometrajes notablemente mayores al promedio. En contraste, la variable Modelo es más homogénea (coeficiente de variación de 0.001219), con media y mediana iguales lo que tiene coherencia ya que esta variable está expresada en años (números enteros), indicando una distribución simétrica y concentrada. Estos resultados sugieren la necesidad de considerar transformaciones como el logaritmo del precio y km, o el tratamiento de outliers, para mejorar la precisión y validez del modelo de regresión.

Histograma Precio Carros

Con el histograma vemos que la mayoría de carros se concentran en un rango de precios de 25 a 40 millones. Siendo los datos que más se repiten cercanos a 35 millones de pesos.

Histograma Kilometraje Carros

La varible km tiene una mejor distribución (más normal) que la variable precios. Los carros se concentran en 70.000 y 100.000 km.

Análisis Bivariado

En primera instancia vemos que las variables cuantitativas: modelo y km, no tienen una correlación alta con el precio. La correlación más alta es entre ellas, es decir, modelo y km (-0.54). A primera vista no parece que se pueda realizar un modelo simple con estas variables, sin embargo veamoslo:

Modelo lineal simple: Variables Cuantitativas

## 
## Call:
## lm(formula = precio ~ km, data = datos)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -40856877  -7854938  -4054037   5068628  39933128 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  4.577e+07  2.571e+06  17.802   <2e-16 ***
## km          -5.762e+01  2.525e+01  -2.282   0.0242 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 12210000 on 127 degrees of freedom
## Multiple R-squared:  0.03938,    Adjusted R-squared:  0.03181 
## F-statistic: 5.206 on 1 and 127 DF,  p-value: 0.02418
## 
## Call:
## lm(formula = precio ~ modelo, data = datos)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -39042401  -8630002  -5042401   8251399  33988597 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -3.574e+09  8.446e+08  -4.232 4.40e-05 ***
## modelo       1.794e+06  4.191e+05   4.280 3.65e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 11650000 on 127 degrees of freedom
## Multiple R-squared:  0.1261, Adjusted R-squared:  0.1192 
## F-statistic: 18.32 on 1 and 127 DF,  p-value: 3.65e-05
## 
## Call:
## lm(formula = km ~ modelo, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -113104  -20824   -1037   15644  143034 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 18853398    2628706   7.172 5.41e-11 ***
## modelo         -9310       1304  -7.137 6.49e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 36250 on 127 degrees of freedom
## Multiple R-squared:  0.2863, Adjusted R-squared:  0.2806 
## F-statistic: 50.94 on 1 and 127 DF,  p-value: 6.495e-11

Como se puede evidenciar, los modelos simples con variables cuantitativas no son buenos ya que el modelo que mejor funciona no logra explicar más del 30% (modelo 3) de la variable dependiente, por lo que se evaluara un modelo simple pero con variables dummys, para esto vamos a transformar la variable modelo en una dummy para tener 3 variables cualitativas. Los carros modelos anteriores a 2015 se clasificarán como “Viejos” y los modelos superiores serán clasificados como “nuevos”, se elegió el 2015 ya que esta era la mediana de la variable modelo.

Modelo lineal simple: Variables Cualitativas

## 
## Call:
## lm(formula = precio ~ veh, data = datos)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -32423151  -5423151   -100000   3576849  33400000 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   33423151    1110140  30.107   <2e-16 ***
## vehkia cerato 16176849    1684917   9.601   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9485000 on 127 degrees of freedom
## Multiple R-squared:  0.4206, Adjusted R-squared:  0.416 
## F-statistic: 92.18 on 1 and 127 DF,  p-value: < 2.2e-16
## 
## Call:
## lm(formula = precio ~ transmision, data = datos)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -36331682  -5790909  -1131682   4168318  38168318 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          55590909    2209074  25.165  < 2e-16 ***
## transmisionMecánica -18259227    2425566  -7.528 8.37e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10360000 on 127 degrees of freedom
## Multiple R-squared:  0.3085, Adjusted R-squared:  0.3031 
## F-statistic: 56.67 on 1 and 127 DF,  p-value: 8.369e-12
## 
## Call:
## lm(formula = precio ~ estado_modelo, data = datos)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -36309718  -8284483  -4309718   6690282  38715517 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        44284483    1570399  28.200  < 2e-16 ***
## estado_modeloviejo -6974765    2116780  -3.295  0.00128 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 11960000 on 127 degrees of freedom
## Multiple R-squared:  0.07876,    Adjusted R-squared:  0.0715 
## F-statistic: 10.86 on 1 and 127 DF,  p-value: 0.001276

Entre los modelos simples construidos con variables cualitativas, el de mejor desempeño es el que utiliza la variable veh (modelo 4), con un R² de 0.42, lo que indica que la marca del vehículo explica en promedio el 42% de la variabilidad del precio, un nivel moderado de capacidad explicativa. Según este modelo, el precio base estimado —sin distinguir entre marcas— es de 33.4 millones de pesos, y se estima que el Kia Cerato cuesta en promedio 16.2 millones de pesos más que el Chevrolet Sail. Por su parte, el modelo 5 revela que los vehículos con transmisión mecánica tienen un precio promedio 18.3 millones de pesos inferior al de los automáticos. Finalmente, el modelo 6 muestra que los vehículos antiguos (fabricados antes de 2015) son en promedio 6.9 millones de pesos más económicos que los modelos recientes.

Estos resultados destacan cómo variables cualitativas como la marca, tipo de transmisión y antigüedad influyen significativamente en el precio del vehículo, aunque de forma individual no alcanzan niveles de explicación suficientes para predecir con alta precisión.

En conclusión, aunque el modelo basado en la marca del vehículo es el más informativo entre los modelos simples evaluados, su precisión no es suficiente para ser utilizado con fines predictivos confiables. Por esto seguiremos con la modelación múltiple.

Modelo lineal múltiple

Para hallar el modelo múltiple que mejor funciona empezaremos realizando un modelo con todas las variables y realizaremos el Step by Step.

## 
## Call:
## lm(formula = precio ~ km + modelo + veh + transmision + estado_modelo, 
##     data = datos)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -28753803  -2458491    -63099   2230103  19921226 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -7.423e+09  7.073e+08 -10.495  < 2e-16 ***
## km                   2.767e+01  1.239e+01   2.234  0.02730 *  
## modelo               3.699e+06  3.503e+05  10.560  < 2e-16 ***
## vehkia cerato        2.059e+07  1.113e+06  18.502  < 2e-16 ***
## transmisionMecánica -4.738e+06  1.370e+06  -3.457  0.00075 ***
## estado_modeloviejo   1.252e+06  1.537e+06   0.815  0.41678    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5030000 on 123 degrees of freedom
## Multiple R-squared:  0.8422, Adjusted R-squared:  0.8358 
## F-statistic: 131.3 on 5 and 123 DF,  p-value: < 2.2e-16
## Start:  AIC=3987.01
## precio ~ km + modelo + veh + transmision + estado_modelo
## 
##                 Df  Sum of Sq        RSS    AIC
## - estado_modelo  1 1.6793e+13 3.1282e+15 3985.7
## <none>                        3.1114e+15 3987.0
## - km             1 1.2623e+14 3.2376e+15 3990.1
## - transmision    1 3.0234e+14 3.4137e+15 3997.0
## - modelo         1 2.8211e+15 5.9325e+15 4068.3
## - veh            1 8.6597e+15 1.1771e+16 4156.7
## 
## Step:  AIC=3985.7
## precio ~ km + modelo + veh + transmision
## 
##               Df  Sum of Sq        RSS    AIC
## <none>                      3.1282e+15 3985.7
## - km           1 1.2323e+14 3.2514e+15 3988.7
## - transmision  1 2.9994e+14 3.4281e+15 3995.5
## - modelo       1 5.5110e+15 8.6392e+15 4114.8
## - veh          1 8.6568e+15 1.1785e+16 4154.8

La variable transformada estado_modelo no es significativa, y el steb by step dice que el modelo funciona mejor sin esta variable (AIC=3985.7). La otra variable que tiene una significacia baja es km, y el AIC no cambia mucho sin esta variable, sin embargo para efectos más prácticos y facilidad de la interpretación, se dejará esta variable.

## 
## Call:
## lm(formula = precio ~ km + modelo + veh + transmision, data = datos)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -28251553  -2588329   -116762   2151060  19644934 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -6.997e+09  4.767e+08 -14.678  < 2e-16 ***
## km                   2.733e+01  1.236e+01   2.210 0.028929 *  
## modelo               3.489e+06  2.360e+05  14.780  < 2e-16 ***
## vehkia cerato        2.058e+07  1.111e+06  18.524  < 2e-16 ***
## transmisionMecánica -4.718e+06  1.368e+06  -3.448 0.000772 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5023000 on 124 degrees of freedom
## Multiple R-squared:  0.8414, Adjusted R-squared:  0.8362 
## F-statistic: 164.4 on 4 and 124 DF,  p-value: < 2.2e-16

Los supuestos del modelo indican que no parece estrictamente necesario aplicar una transformación logarítmica a las variables del modelo. Aunque transformar la variable dependiente con logaritmo puede ser útil para corregir problemas de no linealidad o heterocedasticidad severa, los gráficos muestran que estos problemas son leves o moderados en este caso.

Nota: De igual manera se hizo la transformación logarítmica pero el modelo empeoró y su R cuadrado se redujo a la mitad

El mejor modelo

Después de evaluar todos los modelos (simples y múltiples) el mejor modelo, definido por un R cuadrado más alto y por mejores cumplimientos de supuestos, fue el modelo múltiple 2 que usa las variables km, modelo, veh y transmision. Ahora vamos a evaluar el modelo:

Predicción

¿Cuál será el precio estimado de un carro Kia Cerato, con 92.500 km, modelo 2015 y con transmisión mecánica?

Como los datos que se están usando son cercanos al promedio de todas las variables se espera que la estimación del modelo sea cercana al precio promedio de los carros Kia Cerato que es $49.600.000 COP como se puede ver a continuación:

Mean_KiaCerato
49600000
1
50505527

Vemos que el modelo estima que un carro con esas características en la ciudad de Cali tendrá un precio promedio de 50.505.527 COP. La predicción tiene una diferencia de $905.527 COP que es bastante baja. Vamos a evaluar el modelo más a detalle con validación cruzada con el método k-fold con 10 folds.

Método con 10 folds: Este método consiste en dividir la base de datos en 10 partes iguales y entrenar el modelo con 9 de esos grupos y se evalúa con el grupo restante, se repite el proceso 10 veces, cambiando cada vez el grupo que se usa como prueba.

Validación del modelo

## Linear Regression 
## 
## 129 samples
##   4 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (10 fold) 
## Summary of sample sizes: 116, 116, 116, 117, 117, 116, ... 
## Resampling results:
## 
##   RMSE     Rsquared   MAE    
##   4814923  0.8446956  3551826
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE

Nota: El RMSE y MAE te dicen qué tan lejos, en promedio, están las predicciones del valor real. Al ser aleatoria la validación cruzada, puede que los MAE y RMSE cambien ligeramente en cada prueba

MAE Y RMSE EN PORCENTAJE:

MAE RMSE
0.08618 0.1188

Al hacer la validación cruzada tenemos que los valores que el modelo predice en promedio, se desvían del valor real por unos 3.48 millones de pesos (MAE del 8%), mientras que el error cuadrático medio (RMSE) es del 11%, lo que penaliza más los errores grandes. Esto sugiere que hay algunos valores atípicos (outliers) que están afectando el error global, pero no de forma muy grave.

Utilidad práctica del modelo de predicción de precios de vehículos usados

El modelo de regresión lineal múltiple desarrollado explica aproximadamente el 84% de la variabilidad en el precio de los vehículos Chevrolet Sail y Kia Cerato en la ciudad de Cali, a partir de variables como el modelo (año), tipo de vehículo, transmisión y kilometraje. Esta capacidad explicativa, combinada con errores de predicción relativamente bajos (MAE = 8% y RMSE = 11%), lo convierte en una herramienta útil para varios actores del sector automotor:

  1. Plataformas de compraventa de vehículos usados (como OLX): Estas plataformas podrían integrar este modelo para sugerir precios de publicación realistas a los vendedores, basados en características objetivas del vehículo. Esto reduce la fricción en el proceso de venta y mejora la eficiencia del mercado.

  2. Concesionarios o comercializadoras de autos usados: El modelo permitiría a los concesionarios valorar rápidamente vehículos en proceso de recompra o consignación, ayudando a establecer precios competitivos que maximicen rotación y margen.

  3. Consumidores finales: A través de aplicaciones o herramientas basadas en este modelo, un consumidor podría evaluar si un precio está por encima o por debajo del valor de mercado esperado, lo que promueve decisiones informadas y evita sobrepagos.

  4. Compañías aseguradoras o financieras: Estas entidades podrían usar el modelo como una referencia de valor comercial para vehículos usados, útil en procesos de seguros, créditos prendarios o leasing.