require(CGPfunctions)
require(ggplot2)
require(plotly)
require(ggpubr)
library(readxl)
datosM <- read_excel("C:/Users/Wilfredo Gomez/Downloads/mazda2 (Procesada).xlsx")
head(datosM)
## # A tibble: 6 x 6
##     precio modelo kilometraje Ciudad        Departamento    Transmisión
##      <dbl>  <dbl>       <dbl> <chr>         <chr>           <chr>      
## 1 35000000   2007      148000 Cali          Valle del Cauca Mecánica   
## 2 45000000   2015      101800 Yarumal       Antioquia       Mecánica   
## 3 65500000   2019       47000 Floridablanca Santander       Mecánica   
## 4 33900000   2011      103000 Bogotá        Bogotá          Automática 
## 5 34000000   2010       98000 Medellín      Antioquia       Mecánica   
## 6 37000000   2011      124500 Manizales     Caldas          Mecánica
summary(datosM)
##      precio              modelo      kilometraje        Ciudad         
##  Min.   : 22000000   Min.   :2007   Min.   :     0   Length:167        
##  1st Qu.: 34995000   1st Qu.:2011   1st Qu.: 35000   Class :character  
##  Median : 43000000   Median :2015   Median : 70400   Mode  :character  
##  Mean   : 50694850   Mean   :2015   Mean   : 72523                     
##  3rd Qu.: 64900000   3rd Qu.:2019   3rd Qu.:106000                     
##  Max.   :107500000   Max.   :2022   Max.   :176000                     
##  Departamento       Transmisión       
##  Length:167         Length:167        
##  Class :character   Class :character  
##  Mode  :character   Mode  :character  
##                                       
##                                       
## 

A. Exploratorio

promedio=mean(datosM$precio,na.rm=TRUE)
desviacion=sd(datosM$precio,na.rm=TRUE)
data.frame(promedio,desviacion)
##   promedio desviacion
## 1 50694850   18283084
promedio2=mean(datosM$modelo,na.rm=TRUE)
desviacion2=sd(datosM$modelo,na.rm=TRUE)
data.frame(promedio2,desviacion2)
##   promedio2 desviacion2
## 1  2014.976    4.294788
promedio3=mean(datosM$kilometraje,na.rm=TRUE)
desviacion3=sd(datosM$kilometraje,na.rm=TRUE)
data.frame(promedio3,desviacion3)
##   promedio3 desviacion3
## 1  72522.69    44716.78
datosM$Transmisión <- as.factor(datosM$Transmisión)
datosM$Ciudad <- as.factor(datosM$Ciudad)
datosM$Departamento <- as.factor(datosM$Departamento)
str(datosM)
## tibble [167 x 6] (S3: tbl_df/tbl/data.frame)
##  $ precio      : num [1:167] 35000000 45000000 65500000 33900000 34000000 37000000 39700000 59000000 36000000 42300000 ...
##  $ modelo      : num [1:167] 2007 2015 2019 2011 2010 ...
##  $ kilometraje : num [1:167] 148000 101800 47000 103000 98000 ...
##  $ Ciudad      : Factor w/ 25 levels "Armenia","Barranquilla",..: 6 25 12 4 16 15 1 8 6 6 ...
##  $ Departamento: Factor w/ 15 levels "Antioquia","Atlántico",..: 15 1 13 3 1 4 11 6 15 15 ...
##  $ Transmisión : Factor w/ 3 levels "Automática","Automática Secuencial",..: 3 3 3 1 3 3 3 1 1 1 ...
require(ggplot2)
require(ggpubr)

p=ggplot(data = datosM,mapping = aes(x=precio))+geom_histogram()+theme_bw()
p2=ggplot(data = datosM,mapping = aes(x=kilometraje))+geom_histogram()+theme_bw()
p3=ggplot(data = datosM,mapping = aes(x=modelo))+geom_histogram()+theme_bw()
ggarrange(p, p2, p3 ,labels = c("Precio", "Kilometraje" , "Modelo"),ncol = 3, nrow = 1)          

p=ggplot(data = datosM,mapping = aes(x=precio,y=kilometraje))
p+geom_point()+geom_smooth()+ggtitle("Figura 2. Relación Precio VS Kilometraje")+theme_bw()

p=ggplot(data = datosM,mapping = aes(x=precio,y=modelo))
p+geom_point()+geom_smooth()+ggtitle("Figura 2. Relación precio VS modelo")+theme_bw()

p=ggplot(data = datosM,mapping = aes(x=kilometraje,y=modelo))
p+geom_point()+geom_smooth()+ggtitle("Figura 2. Relación kilometraje VS modelo")+theme_bw()

library(psych)
library(PerformanceAnalytics)
df<-data.frame(datosM$precio,datosM$kilometraje,datosM$modelo)
chart.Correlation(df)

mod01=lm(precio~kilometraje+modelo,data=datosM)
summary(mod01)
## 
## Call:
## lm(formula = precio ~ kilometraje + modelo, data = datosM)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -36506607  -3752876   -100677   3406054  32865424 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -7.093e+09  3.993e+08 -17.763   <2e-16 ***
## kilometraje -4.712e+01  1.898e+01  -2.482   0.0141 *  
## modelo       3.547e+06  1.976e+05  17.946   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7006000 on 164 degrees of freedom
## Multiple R-squared:  0.8549, Adjusted R-squared:  0.8532 
## F-statistic: 483.3 on 2 and 164 DF,  p-value: < 2.2e-16
mod02=lm(precio~modelo,data=datosM)
summary(mod02)
## 
## Call:
## lm(formula = precio ~ modelo, data = datosM)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -40683376  -3368831    -94284   3592987  33169351 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -7.855e+09  2.591e+08  -30.32   <2e-16 ***
## modelo       3.924e+06  1.286e+05   30.52   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7114000 on 165 degrees of freedom
## Multiple R-squared:  0.8495, Adjusted R-squared:  0.8486 
## F-statistic: 931.3 on 1 and 165 DF,  p-value: < 2.2e-16
mod03=lm(precio~kilometraje,data=datosM)
summary(mod03)
## 
## Call:
## lm(formula = precio ~ kilometraje, data = datosM)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -51041311  -5690569    647986   6594748  39945383 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  7.308e+07  1.777e+06   41.13   <2e-16 ***
## kilometraje -3.087e+02  2.087e+01  -14.79   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 12020000 on 165 degrees of freedom
## Multiple R-squared:  0.5701, Adjusted R-squared:  0.5675 
## F-statistic: 218.8 on 1 and 165 DF,  p-value: < 2.2e-16
bestModel <- step(mod01)
## Start:  AIC=5267.55
## precio ~ kilometraje + modelo
## 
##               Df  Sum of Sq        RSS    AIC
## <none>                      8.0489e+15 5267.6
## - kilometraje  1 3.0235e+14 8.3512e+15 5271.7
## - modelo       1 1.5806e+16 2.3855e+16 5447.0
summary(bestModel)
## 
## Call:
## lm(formula = precio ~ kilometraje + modelo, data = datosM)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -36506607  -3752876   -100677   3406054  32865424 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -7.093e+09  3.993e+08 -17.763   <2e-16 ***
## kilometraje -4.712e+01  1.898e+01  -2.482   0.0141 *  
## modelo       3.547e+06  1.976e+05  17.946   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7006000 on 164 degrees of freedom
## Multiple R-squared:  0.8549, Adjusted R-squared:  0.8532 
## F-statistic: 483.3 on 2 and 164 DF,  p-value: < 2.2e-16
par(mfrow=c(2,2))
plot(bestModel)

par(mfrow=c(2,2))
plot(mod02)

par(mfrow=c(2,2))
plot(mod03)

library(memisc)
mtable(mod01,mod02,mod03,bestModel)
## 
## Calls:
## mod01: lm(formula = precio ~ kilometraje + modelo, data = datosM)
## mod02: lm(formula = precio ~ modelo, data = datosM)
## mod03: lm(formula = precio ~ kilometraje, data = datosM)
## bestModel: lm(formula = precio ~ kilometraje + modelo, data = datosM)
## 
## ============================================================================================
##                      mod01               mod02              mod03           bestModel       
## --------------------------------------------------------------------------------------------
##   (Intercept)  -7092882208.111***  -7855338933.451***  73083295.637***  -7092882208.111***  
##                 (399304482.547)     (259064749.725)    (1776684.932)     (399304482.547)    
##   kilometraje          -47.115*                            -308.710***          -47.115*    
##                        (18.982)                             (20.870)            (18.982)    
##   modelo           3546937.444***      3923636.607***                       3546937.444***  
##                    (197643.048)        (128569.352)                         (197643.048)    
## --------------------------------------------------------------------------------------------
##   R-squared              0.855               0.849            0.570               0.855     
##   N                    167                 167              167                 167         
## ============================================================================================
##   Significance: *** = p < 0.001; ** = p < 0.01; * = p < 0.05
#Validaciones
anova(bestModel)
## Analysis of Variance Table
## 
## Response: precio
##              Df     Sum Sq    Mean Sq F value    Pr(>F)    
## kilometraje   1 3.1634e+16 3.1634e+16  644.55 < 2.2e-16 ***
## modelo        1 1.5806e+16 1.5806e+16  322.07 < 2.2e-16 ***
## Residuals   164 8.0489e+15 4.9079e+13                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Validación predicción
predict(bestModel,list(modelo=2010,kilometraje=150000),interval = "confidence")
##        fit      lwr      upr
## 1 29394747 27229312 31560182
predict(mod02,list(modelo=2010,kilometraje=150000),interval = "confidence")
##        fit      lwr      upr
## 1 31170647 29504166 32837127
predict(mod03,list(modelo=2010,kilometraje=150000),interval = "confidence")
##        fit      lwr      upr
## 1 26776866 23093417 30460315

Potenciales Usos Este tipo de Modelos todavia son muy limitados para ser usados en procesos estrategicos dentro de las organizaciones asociadas al mercado de los vehiculos, sin embargo puede ser parte de iniciativas para apoyar de manera muy exploratoria el entendimiento del mercado de una forma mas soportada y con cierta capacidad de automatización para procesar mayor información que un vendedor promedio. Puede monetizarse bajo un servicio parametrizable similar a como funciona la publicación de la revista Motor, con el valor agregado que pueden analizarse varias variables y tener unos rangos de margen para la competitividad de los precios en multiples plataformas.