A continuación vamos a construir un modelo predictivo de precios de vehículos 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 vehículo como se observa a continuación:

library(readxl)
mazda <- read_excel("C:/Users/rarestrepo/Downloads/rsconnect/mazda3_cal.xlsx", 
    sheet = "modelo_simple")
head(mazda)
## # A tibble: 6 × 2
##   precio_millon   año
##           <dbl> <dbl>
## 1            69  2019
## 2            87  2022
## 3            66  2018
## 4            56  2016
## 5            72  2017
## 6           110  2023

Continuando con el ejercicio se realiza una exploración de la base de datos:

require(table1)
## Cargando paquete requerido: table1
## 
## Adjuntando el paquete: 'table1'
## The following objects are masked from 'package:base':
## 
##     units, units<-
require(ggplot2)
## Cargando paquete requerido: ggplot2
require(plotly)
## Cargando paquete requerido: plotly
## 
## Adjuntando el paquete: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
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%)
require(caret)
## Cargando paquete requerido: caret
## Cargando paquete requerido: lattice
mod1=train(precio_millon~año,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.830627  0.9065914  5.472489
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE
mod1$finalModel
## 
## Call:
## lm(formula = .outcome ~ ., data = dat)
## 
## Coefficients:
## (Intercept)          año  
##   -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$año

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.845781  0.9068548  5.58319
## 
## 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 que 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?
predict(mod1,list(año=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 108.1718 113.1061 118.0404 respectivamente.