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.