A continuación vamos a contruir un modelo predictivo de precios de vehiculo referencia mazda 3 para la ciudad de Cali, que descargamos con datos del portal carroya. La base de datos contiene las variables precio y año del vehiculo como se observa a continuación:
library(readxl)
mazda <- read_excel("~/Desktop/mazda3_cal.xlsx",
sheet = "modelo_simple")
head(mazda)
precio_millon | año |
---|---|
69 | 2019 |
87 | 2022 |
66 | 2018 |
56 | 2016 |
72 | 2017 |
110 | 2023 |
Continuando con el ejercicio se realiza una exploración de la base datos:
require(table1) #tabla exploratoria
require(ggplot2) #graficos
require(plotly) #animaciones
table1(~precio_millon+as.factor(año),data=mazda)
Overall (N=140) |
|
---|---|
precio_millon | |
Mean (SD) | 65.4 (21.5) |
Median [Min, Max] | 67.5 [22.5, 110] |
as.factor(año) | |
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%) |
ggplot(mazda,aes(x=año,y=precio_millon))+geom_point()+geom_smooth(method = "lm")
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 lineal:
require(caret)
names(mazda)[2]="year"
mod1=train(precio_millon~year,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.734067 0.906547 5.430194
##
## Tuning parameter 'intercept' was held constant at a value of TRUE
mod1$finalModel
##
## Call:
## lm(formula = .outcome ~ ., data = dat)
##
## Coefficients:
## (Intercept) year
## -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$year)
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.822017 0.9045098 5.510272
##
## 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
inf=precio_promedio_mercado-(precio_promedio_mercado*0.08)
sup=precio_promedio_mercado+(precio_promedio_mercado*0.08)
c(precio_promedio_mercado,inf,sup)
## 1 1 1
## 73.63157 67.74104 79.52209
EL precio promedio del vehiculo 2018 esta en los 73 millones con un rango entre 67 a 79 millones. Como comprador la oferta es buena ya que los 55 esta muy por debajo del precio de mercado por lo tanto se recomienda su compra.
predict(mod1,list(year=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 proximos 3 años son 108, 113 y 118 millones respectivamente.\