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

Uso practico del modelo:

  1. Como comprador, con base en el modelo, qué recomendación se da si me ofrecen un mazda 3 del año 2018 en 55 millones de pesos?. Es una buena oportunidad de compra?
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.

  1. Proyectar el precio de los mazda 3 bajo las condiciones actuales en los proximos 3 años)
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.