A continuación vamos a contruir un modelo predictivo de precios de vehiculos referencia mazda 3 npara la ciudad de Cali, que descargamos con datos del portal Carroya.con. La base dedatos contiene las variables precio y año del vehículo como se observa a continuación.
library(readxl)
mazda <- read_excel("C:/Users/ceposso/Downloads/mazda.xlsx",
sheet = "modelo_simple")
head(mazda)
| precio_millon | anio |
|---|---|
| 69 | 2019 |
| 87 | 2022 |
| 66 | 2018 |
| 56 | 2016 |
| 72 | 2017 |
| 110 | 2023 |
Continuando con el ejercicio se realiza una exploración de la base de datos:
require(table1)# tabla exploratoria
require(ggplot2)# gráficos
require(plotly)# animaciones
names(mazda) [2] <- "anio"
table1(~ precio_millon + as.factor(anio), data = mazda)
| Overall (N=140) |
|
|---|---|
| precio_millon | |
| Mean (SD) | 65.4 (21.5) |
| Median [Min, Max] | 67.5 [22.5, 110] |
| as.factor(anio) | |
| 2005 | 1 (0.7%) |
| 2006 | 4 (2.9%) |
| 2007 | 2 (1.4%) |
| 2008 | 1 (0.7%) |
| 2009 | 6 (4.3%) |
| 2010 | 6 (4.3%) |
| 2011 | 4 (2.9%) |
| 2012 | 3 (2.1%) |
| 2014 | 1 (0.7%) |
| 2015 | 14 (10.0%) |
| 2016 | 15 (10.7%) |
| 2017 | 17 (12.1%) |
| 2018 | 22 (15.7%) |
| 2019 | 19 (13.6%) |
| 2020 | 8 (5.7%) |
| 2021 | 6 (4.3%) |
| 2022 | 8 (5.7%) |
| 2023 | 3 (2.1%) |
Se observa que el precio promedio del vehiculo mazda 3 en cali esta en 65 millones de pesos con un rango entre los 22 a 110 millones.
Adicionalmente, los modelos varian desde el 2005 hasta 2023, con una mayor cantidad de datos del 2015 al 2019.
POr ultimo, la relación entre precio y modelo se observa de manera lineal y positiva. Es decir modelos mas nuevos son mas caros en promedio.
Posteriormente, vamos a estimar el modelo de regresión:
require(caret)
## Loading required package: caret
## Warning: package 'caret' was built under R version 4.3.3
## Loading required package: lattice
mod1=train(precio_millon ~ anio, data = mazda, method="lm")
mod1
## Linear Regression
##
## 140 samples
## 1 predictor
##
## No pre-processing
## Resampling: Bootstrapped (25 reps)
## Summary of sample sizes: 140, 140, 140, 140, 140, 140, ...
## Resampling results:
##
## RMSE Rsquared MAE
## 6.781628 0.9021992 5.570122
##
## Tuning parameter 'intercept' was held constant at a value of TRUE
mod1$finalModel
##
## Call:
## lm(formula = .outcome ~ ., data = dat)
##
## Coefficients:
## (Intercept) anio
## -9883.820 4.934
#precio=-9883.820 +(4.934*año)
#ejemplo: de acuerdo con el modelo cual es el precio
#promedio de un vehiculo mazda 3 modelo 2018
-9883.820 +(4.934*2018)
## [1] 72.992
#vamos a crear la variable antiguedad
mazda$antiguedad=2024-mazda$anio
mod2=train(precio_millon ~ antiguedad, data = mazda, method="lm")
mod2$finalModel
##
## Call:
## lm(formula = .outcome ~ ., data = dat)
##
## Coefficients:
## (Intercept) antiguedad
## 103.237 -4.934
mod2
## Linear Regression
##
## 140 samples
## 1 predictor
##
## No pre-processing
## Resampling: Bootstrapped (25 reps)
## Summary of sample sizes: 140, 140, 140, 140, 140, 140, ...
## Resampling results:
##
## RMSE Rsquared MAE
## 6.697017 0.907271 5.365225
##
## Tuning parameter 'intercept' was held constant at a value of TRUE
#precio= 103.237 -(4.934*antiguedad)
#promedio de un vehiculo mazda 3 modelo 2018
103.237 -(4.934*(2024-2018))
## [1] 73.633
2024-2018
## [1] 6
precio_promedio_mercado = predict(mod2, list(antiguedad = 6))
precio_promedio_mercado
## 1
## 73.63157
inferior = precio_promedio_mercado - (precio_promedio_mercado * 0.08)
superior = precio_promedio_mercado + (precio_promedio_mercado * 0.08)
c(precio_promedio_mercado, inferior, superior)
## 1 1 1
## 73.63157 67.74104 79.52209
El precio promedio del vehiculo 2018 está en los 73 millones con un rango entre 67 a 69 millones. Como comprador, la oferta es buena ya que los 55 millones está muy por debajo del precio de mercado, por lo tanto, se recomienda su compra.
predict(mod1, list(anio = 2025:2027))
## 1 2 3
## 108.1718 113.1061 118.0404
predict(mod2, list(antiguedad = -c(1:3)))
## 1 2 3
## 108.1718 113.1061 118.0404
Los precios proyectados para los próximos 3 años son 2025: 108, 2026: 113 y 2027: 118 millones respectivamente.