Planteamiento de las variables:
Para el modelo de regresion simple voy a utilizar KM ya que se esperaria una disminucion en el precio de acuerdo a un aumento en este mismo.
km <- datos_vehiculos$km
summary(km)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0 68000 91000 92492 115000 228000
sd(km)
## [1] 42745.35
-Promedio: 92,492 km . -Mediana: 91,000 km.
-Rango: Entre 0 km (mínimo) y 228,000 km (máximo).
-Desviación Estándar: 42,745 km.
Estos resultados indican una alta dispersión en el kilometraje de los vehículos, lo cual puede influir significativamente en el precio de venta.
modelo <- datos_vehiculos$modelo
summary(modelo)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2010 2014 2015 2015 2017 2022
El análisis estadístico del año del modelo (modelo) arroja los siguientes resultados:
Mínimo: 2010
1er Cuartil: 2014
Mediana: 2015
Promedio: 2015
3er Cuartil: 2017
Máximo: 2022
La mayoría de los vehículos en la base de datos corresponden a modelos entre 2014 y 2017, con una mediana y promedio en 2015. Esto indica que los datos están concentrados en vehículos relativamente recientes, lo cual es relevante para determinar tendencias de precios en el mercado de autos usados. Además, el rango desde 2010 hasta 2022 permite analizar vehículos tanto antiguos como modernos, proporcionando un espectro amplio para las predicciones.
sd(datos_vehiculos$modelo)
## [1] 2.456625
La desviación estándar del año del modelo es de 2.46 años.
Esto indica una variabilidad moderada en los datos. La mayoría de los vehículos están cerca del promedio del año 2015, pero hay cierta dispersión hacia modelos más antiguos y más recientes. Esta variabilidad es lo suficientemente baja como para que el modelo del vehículo sea un buen predictor del precio, dado que no se observan diferencias extremas en los años.
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]}
veh <- datos_vehiculos$veh
table(veh)
## veh
## chevrolet sail kia cerato
## 73 56
Mode(veh)
## [1] "chevrolet sail"
El análisis de la variable veh(tipo de vehículo) muestra lo siguiente:
Frecuencia de Chevrolet Sail: 73 vehículos.
Frecuencia de Kia Cerato: 56 vehículos.
Moda: Chevrolet Sail.
La moda indica que el Chevrolet Sail es el tipo de vehículo más común en la base de datos, con una frecuencia superior al Kia Cerato. Esto refleja una concentración de datos en un modelo específico, lo que puede influir en el análisis y debe considerarse para evitar sesgos al interpretar los resultados.
plot(km, datos_vehiculos$precio,
main = "Relación entre Kilometraje y Precio",
xlab = "Kilometraje",
ylab = "Precio")
cor(km, datos_vehiculos$precio)
## [1] -0.1984356
El gráfico de dispersión muestra una relación negativa débil. A mayor kilometraje, el precio tiende a disminuir, pero la relación no es fuerte.
El coeficiente de correlación es -0.1984, confirmando una relación inversa débil entre el kilometraje y el precio.
plot(modelo, datos_vehiculos$precio,
main = "Relación entre Modelo y Precio",
xlab = "Año del Modelo",
ylab = "Precio")
cor(modelo, datos_vehiculos$precio)
## [1] 0.3550418
Se observa una tendencia ascendente en el gráfico, lo que indica que los vehículos más nuevos tienen precios más altos. Correlación: El coeficiente de correlación es 0.3550, lo que sugiere una relación positiva moderada entre el año del modelo y el precio.
boxplot(datos_vehiculos$precio ~ veh,
main = "Distribución de Precios por Tipo de Vehículo",
xlab = "Tipo de Vehículo",
ylab = "Precio")
El Chevrolet Sail muestra precios más bajos y una variabilidad menor en
comparación con el Kia Cerato, que tiene precios más altos y una mayor
dispersión.
Esto indica que el tipo de vehículo influye significativamente en el precio y debe considerarse como un predictor importante en los modelos.
modelo1 <- lm(precio ~ km, data = datos_vehiculos)
summary(modelo1)
##
## Call:
## lm(formula = precio ~ km, data = datos_vehiculos)
##
## 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
El modelo muestra un intercepto de $45.770.000, poco representativo, ya que el beta1 es de -$57,62 por kilómetro, lo que dificulta explicar los datos por encima del intercepto. Con un nivel de significancia del 3,9 %, el kilometraje no explica bien las variaciones del precio, aunque las variables son significativas y su efecto no es aleatorio.
Aunque el modelo tambien nos indica que por cada kilómetro adicional, el precio disminuye en promedio 57.62 pesos. Sin embargo, como mencione anteriormente este modelo explica solo el 3.94% de la variación en el precio.
modelo2 <- lm(precio ~ modelo, data = datos_vehiculos)
summary(modelo2)
##
## Call:
## lm(formula = precio ~ modelo, data = datos_vehiculos)
##
## 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
El modelo tiene un beta 0 de -$3.574.000.000, compensado por un beta 1 de $1.794.000, indicando que por cada año más reciente del vehículo, el precio aumenta en promedio $1.794.000. Aunque esto ayuda a corregir el intercepto, el modelo solo explica el 12,61 % de las variaciones en Y. Las variables son significativas, por lo que su efecto no es aleatorio, pero sigue siendo un modelo limitado.
modelo3 <- lm(precio ~ veh, data = datos_vehiculos)
summary(modelo3)
##
## Call:
## lm(formula = precio ~ veh, data = datos_vehiculos)
##
## 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
El beta 0 del modelo indica que un Chevrolet Sail tiene un precio base de $33.423.151, mientras que el beta1 muestra que un Kia Cerato cuesta en promedio $16.176.849 más. Aunque la variable es categórica, explica el 42,06 % de las variaciones, siendo la más representativa hasta ahora, posiblemente porque los precios del Chevrolet Sail están en un rango estrecho. Ambas variables son significativas, sugiriendo que los efectos observados son reales.
Luego de comparar cada modelo vemos que el tercer modelo es el mas completo ya que explicar el mayor porcentaje de las variaciones.
set.seed(123)
indices <- sample(1:nrow(datos_vehiculos), 0.7 * nrow(datos_vehiculos))
train <- datos_vehiculos[indices, ]
test <- datos_vehiculos[-indices, ]
modelo_valid <- lm(precio ~ veh, data = train)
pred <- predict(modelo_valid, test)
MAE <- mean(abs(test$precio - pred))
MAE
## [1] 7025744
El error absoluto promedio es de aproximadamente 7025744 pesos. Este es un resultado razonable considerando que el modelo solo utiliza una variable categórica.
modelo_m1 <- lm(precio ~ km + veh, data = datos_vehiculos)
summary(modelo_m1)
##
## Call:
## lm(formula = precio ~ km + veh, data = datos_vehiculos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -34044252 -5577301 -240583 2975680 37036303
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.048e+07 1.935e+06 20.918 < 2e-16 ***
## km -8.000e+01 1.849e+01 -4.326 3.06e-05 ***
## vehkia cerato 1.696e+07 1.589e+06 10.673 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8886000 on 126 degrees of freedom
## Multiple R-squared: 0.4955, Adjusted R-squared: 0.4875
## F-statistic: 61.88 on 2 and 126 DF, p-value: < 2.2e-16
step(modelo_m1)
## Start: AIC=4130.95
## precio ~ km + veh
##
## Df Sum of Sq RSS AIC
## <none> 9.9480e+15 4130.9
## - km 1 1.4777e+15 1.1426e+16 4146.8
## - veh 1 8.9942e+15 1.8942e+16 4212.0
##
## Call:
## lm(formula = precio ~ km + veh, data = datos_vehiculos)
##
## Coefficients:
## (Intercept) km vehkia cerato
## 40484502 -80 16956320
modelo_m2 <- lm(precio ~ km + modelo + veh, data = datos_vehiculos)
summary(modelo_m2)
##
## Call:
## lm(formula = precio ~ km + modelo + veh, data = datos_vehiculos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -28213580 -2731610 -474787 2437139 19500723
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -7.395e+09 4.823e+08 -15.335 <2e-16 ***
## km 2.595e+01 1.288e+01 2.014 0.0462 *
## modelo 3.684e+06 2.389e+05 15.419 <2e-16 ***
## vehkia cerato 2.250e+07 1.003e+06 22.434 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5237000 on 125 degrees of freedom
## Multiple R-squared: 0.8261, Adjusted R-squared: 0.822
## F-statistic: 198 on 3 and 125 DF, p-value: < 2.2e-16
step(modelo_m2)
## Start: AIC=3995.52
## precio ~ km + modelo + veh
##
## Df Sum of Sq RSS AIC
## <none> 3.4281e+15 3995.5
## - km 1 1.1123e+14 3.5393e+15 3997.6
## - modelo 1 6.5199e+15 9.9480e+15 4130.9
## - veh 1 1.3803e+16 1.7231e+16 4201.8
##
## Call:
## lm(formula = precio ~ km + modelo + veh, data = datos_vehiculos)
##
## Coefficients:
## (Intercept) km modelo vehkia cerato
## -7.395e+09 2.595e+01 3.684e+06 2.250e+07
Intercepto: -7,395,000,000
Efecto del kilometraje: +25.95
Efecto del año del modelo: +3,684,000
Efecto del tipo de vehículo (Kia Cerato): +22,500,000
R² ajustado: 0.822
Conclusión: Este modelo es altamente explicativo. Integra adecuadamente las tres variables, mostrando que el tipo de vehículo y el año del modelo son los principales predictores, mientras que el kilometraje tiene un efecto secundario.
El segundo modelo tiene un R cuadrado ajustado de 82.2%, mientras que el primero tiene un 48.75%. Esto indica que el segundo modelo explica mejor la variabilidad del precio de los vehículos.
Error estándar residual: El segundo modelo tiene un error estándar residual de 5,237,000, menor que el del primero (8,886,000), lo que significa que sus predicciones están más cerca de los valores reales
El estadístico F del segundo modelo es 198, mayor que el 61.88 del primero, lo que indica un mejor ajuste.
El modelo dos presenta el menor AIC
Conclusion: Modelo 2 es superior.
modelo_m2_validado <- lm(precio ~ km + modelo + veh, data = train)
predicciones_m2 <- predict(modelo_m2_validado, newdata = test)
mae_m2 <- mean(abs(test$precio - predicciones_m2))
mae_m2
## [1] 3896787
R² ajustado: 0.4176
MAE: ~3,477,774
Conclusión: Aunque el modelo logarítmico mejora ligeramente la interpretación, su capacidad explicativa es menor que la del modelo lineal múltiple original.
par(mfrow = c(2, 2))
plot(modelo_m2)
En los graficos vemos que los valores se ajustan y no se presenta una
tendencia clara pero voy a graficar el modelo ajustado con Log para ver
si se ajusta mejor.
modelo_m2_log <- lm(log(precio) ~ km + modelo + veh, data = datos_vehiculos)
summary(modelo_m2_log)
##
## Call:
## lm(formula = log(precio) ~ km + modelo + veh, data = datos_vehiculos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.3554 -0.0219 0.0173 0.0713 0.4080
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.596e+02 2.925e+01 -5.456 2.51e-07 ***
## km 1.030e-06 7.814e-07 1.318 0.19
## modelo 8.768e-02 1.449e-02 6.051 1.55e-08 ***
## vehkia cerato 5.575e-01 6.083e-02 9.165 1.24e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3176 on 125 degrees of freedom
## Multiple R-squared: 0.4312, Adjusted R-squared: 0.4176
## F-statistic: 31.59 on 3 and 125 DF, p-value: 2.872e-15
El modelo logarítmico muestra que el precio de los vehículos aumenta significativamente con el año del modelo y es mayor para los Kia Cerato en comparación con los Chevrolet Sail, mientras que el kilometraje no tiene un impacto relevante. El ajuste del modelo es moderado (R^2=43.12%), lo que sugiere que otras variables podrían mejorar su capacidad predictiva. Además, el comportamiento de los residuales indica un ajuste razonable, aunque hay casos atípicos que podrían estar influyendo en los resultados. Este modelo es útil para identificar tendencias generales en el precio de los vehículos con base en las variables disponibles.
par(mfrow = c(2, 2))
plot(modelo_m2_log)
Graficamente podemos ver que este modelo se ajusto mucho mejor sin
tendencias ni datos desajustados.
escenarios <- data.frame(
km = c(100000, 60000, 150000, 80000),
modelo = c(2017, 2020, 2014, 2019),
veh = c("chevrolet sail", "kia cerato", "kia cerato", "chevrolet sail"))
escenarios$precio_predicho <- exp(predict(modelo_m2_log, newdata = escenarios))
print(escenarios)
## km modelo veh precio_predicho
## 1 100000 2017 chevrolet sail 35293776
## 2 60000 2020 kia cerato 76942506
## 3 150000 2014 kia cerato 49883948
## 4 80000 2019 chevrolet sail 41200957
Escenario 1 (Chevrolet Sail, 100,000 km, 2017): 35,293,776
Escenario 2 (Kia Cerato, 60,000 km, 2020): 76,942,506
Escenario 3 (Kia Cerato, 150,000 km, 2014): 49,883,948
Escenario 4 (Chevrolet Sail, 80,000 km, 2019): 41,200,957
Conclusión: Los precios predichos reflejan tendencias razonables: los Kia Cerato son más caros y los modelos más nuevos tienen precios más altos. El kilometraje tiene un impacto menor en comparación con el tipo de vehículo y el año del modelo.
El modelo múltiple 2 permite calcular un precio estimado basado en variables clave como el kilometraje, el año del modelo y el tipo de vehículo. Esta capacidad es especialmente útil en el mercado de vehículos usados, donde los precios tienden a ser altamente variables y dependen de múltiples factores.
Aplicación para Concesionarios
Los concesionarios pueden emplear este modelo para determinar precios de venta que sean atractivos para los compradores y competitivos en el mercado, evitando tanto el sobreprecio como la subvaloración de los vehículos. Esto es particularmente relevante para gestionar inventarios, ya que permite identificar el rango de precios óptimos para cada tipo de vehículo. Además, el modelo ayuda a prever las tendencias de precios para diferentes tipos de vehículos, lo que les permite ajustar su estrategia de compra y reventa.
Utilidad para Vendedores Particulares
Para los vendedores individuales, el modelo ofrece una guía objetiva para establecer precios de venta justos, tomando en cuenta las características específicas del vehículo. Esto es valioso en un mercado donde los precios son negociados y puede ser difícil para los particulares justificar el valor de su vehículo. Por ejemplo: Un Chevrolet Sail con 80,000 km y modelo 2019 tiene un precio predicho de $41,200,957 según el modelo. El vendedor puede usar esta estimación como punto de partida para negociar con potenciales compradores.