require(ggplot2)
require(plotly)
require(modeest)
require(DescTools)
require(lmtest)
options(scipen = 999)
library(readxl)
Datos <- read_excel("Datos.xlsx")
head(Datos)
## # A tibble: 6 × 7
## precio kilometraje transmision modelo color ciudad Dpto
## <dbl> <dbl> <chr> <dbl> <chr> <chr> <chr>
## 1 34000000 140000 Automática 2008 Gris Medellín Antioquia
## 2 26400000 112000 Automática 2012 Gris Medellín Antioquia
## 3 42500000 102222 Automática 2013 Gris Itagüí Antioquia
## 4 91000000 1000 Automática 2022 Gris Envigado Antioquia
## 5 35000000 134500 Automática 2012 Blanco Medellín Antioquia
## 6 67000000 61997 Automática 2017 Gris Medellín Antioquia
La presente base de datos se compone de 314 observaciones de 3 variables cuantitativas, Precio de vehículo, Kilometraje, Modelo (Año), y, 4 variables cualitativas Transmisión, Color, Ciudad y Departamento.
Inicialmente se realizará un análisis univariado y bivariado para identificar características de los datos.
El fin de este estudio es establecer un Modelo de Regresión Lineal Simple y Múltiple para predecir el precio (Y) en función de las demás variables que fungen cómo variables predictoras.
## Valor
## Media 50467516
## Desviacion 20541624
## Maximo 169800000
## Minimo 6800000
En la variable precio encontramos que en promedio el modelo Mazda 2 tiene un precio de venta de $50’467.516, con una desviación de $20’541.624, se presenta un precio de venta máximo de $169’800.000 y mínimo de $6’800.000.
mfv(Datos$precio)
## [1] 36000000 37000000 42000000
Por otra parte, los valores más frecuentes de venta para Mazda 2 son $36’000.000, $37’000.000 y $42’000.000.
## Valor
## Media 74995.76
## Desviacion 46232.98
## Maximo 280000.00
## Minimo 0.00
En la variable kilometraje encontramos que en promedio los Mazda 2 en venta han recorrido 74.995 km con una desviación de 46.232 km, el vehículo en venta con mayor recorrido posee 280.000 km, así mismo en los datos se encuentran modelos 0 km (nuevos).
mfv(Datos$kilometraje)
## [1] 0
El valor más frecuente es 0 km, por lo tanto, la mayoría de los Mazda 2 publicados en OLX son nuevos.
## Valor
## Media 2014.869427
## Desviacion 4.324552
## Maximo 2022.000000
## Minimo 1995.000000
En la variable modelo encontramos que en promedio los Mazda 2 en venta son del año 2014 con una desviación de 4 años, encontramos que el modelo más nuevo es de 2022 y el más viejo es de 1995.
mfv(Datos$modelo)
## [1] 2011
El modelo de Mazda 2 más publicado es del 2011.
mfv(Datos$transmision)
## [1] "Automática"
En la variable transmisión encontramos que la mayoría de Mazda 2 poseen transmisión automática en vez de mecánica.
mfv(Datos$color)
## [1] "Gris"
En la variable color encontramos que la mayoría de Mazda 2 publicados en OLX son de color gris.
mfv(Datos$ciudad)
## [1] "Medellín"
La ciudad que más publicaciones de venta en OLX de Mazda 2 es Medellín.
mfv(Datos$Dpto)
## [1] "Antioquia"
El Departamento con más publicaciones de venta en OLX de Mazda 2 es Antioquia, de la mano con la ciudad que más publicaciones tiene.
g1=ggplot(Datos, mapping=aes(x=kilometraje, y=precio)) + geom_point() + theme_bw() +
geom_smooth()
ggplotly(g1)
cor(Datos$kilometraje,Datos$precio)
## [1] -0.6543672
Al revisar la relación entre las variables precio y kilometraje se aprecia una relación lineal negativa, con un coeficiente de correlación de -0.65, esto tiene sentido, teniendo en cuenta que a mayor kilometraje hay mayor desgaste en el vehículo y el tiempo de salido del concesionario es mayor, por lo tanto el precio disminuye.
Cambien encontramos valores atípicos que pueden corresponder a versiones especiales en valores superiores a $100.000.000 en la parte superior izquierda de la gráfica, o un error en la publicación de kilometraje, tal vez eliminando tres ceros del mil en el kilometraje o omitiendo este valor para los casos presentes en la sección inferior izquierda del gráfico.
g2=ggplot(Datos, mapping=aes(x=modelo, y=precio)) + geom_point() + theme_bw() +
geom_smooth()
ggplotly(g2)
cor(Datos$modelo,Datos$precio)
## [1] 0.8295419
Al revisar la relación entre las variables precio y modelo se aprecia una relación lineal positiva fuerte, con un coeficiente de correlación de 0.82. Es posible que los modelos nuevos estén en mejor estado y tengan menor kilometraje (sino son 0km), lo que justifica un mayor precio de venta.
g3=ggplot(Datos, mapping=aes(x=modelo, y=kilometraje)) + geom_point() + theme_bw() +
geom_smooth()
ggplotly(g3)
cor(Datos$modelo,Datos$kilometraje)
## [1] -0.7436836
Para las variables modelo y kilometraje encontramos una relación lineal negativa, con un coeficiente de correlación de -0.74.
Este resultado es muy lógico, a mayor edad del vehículo mayor kilometraje ha recorrido. Se aprecian valores atípicos en la parte inferior centra del gráfico, posibles errores en la publicación.
g4=ggplot(Datos, mapping=aes(x=transmision, y=precio, fill=transmision)) + geom_boxplot()
ggplotly(g4)
Al analizar en conjunto las variables precio y transmisión se aprecia una mayor variación en los precios en los vehículos de transmisión automática, justificado en la mayor cantidad de vehículos Mazda 2 automáticos, así mismo se aprecia una media de precio mayor en este tipo de transmisión ($56’950.000), también los vehículos de mayor precio tienen esta característica.
colores=c("Azul"="blue4", "Beige"="beige", "Blanco" = "white", "Crema"="tan", "Dorado"="gold3", "Gris"="grey", "Marrón"="brown","Morado"="purple3", "Negro"="black","Otro"="orange1", "Plateado"="lightgrey", "Rojo"="red", "Verde"="green", "Vinotinto"="red4")
g5=ggplot(Datos, mapping=aes(x=color, y=precio, fill=color)) + geom_boxplot() +
scale_fill_manual(values=colores) +
theme(axis.title.x = element_blank(),
axis.text.x = element_blank(),
axis.ticks.x = element_blank())
ggplotly(g5)
Dentro de los 14 colores de Mazda 2 publicados en OLX encontramos que los carros de color marrón tienen el promedio más alto de precio, en cuanto al color gris, el más frecuente, encontramos al vehículo de mayor precio junto a un promedio de $42’000.000.
g6=ggplot(Datos, mapping=aes(x=Dpto, y=precio, fill=Dpto)) + geom_boxplot() +
theme(axis.title.x = element_blank(),
axis.text.x = element_blank(),
axis.ticks.x = element_blank())
ggplotly(g6)
En cuanto a la relación entre el precio de venta y el departamento donde se publica el vehículo, encontramos que en Antioquia, el departamento donde más Mazda 2 hay publicados, hay una media del precio de $57’000.000.
Encontramos que el Norte de Santander es el departamento con mayor media en el precio de venta de Mazda 2.
Y, el Valle del Cauca es el departamento que posee los Mazda 2 de mayor y menor precio de venta.
Para el primer modelo de regresión lineal simple se ha elegido al kilometraje como variable predictora del precio.
y=Datos$precio
x=Datos$kilometraje
m1=lm(y~x)
m1
##
## Call:
## lm(formula = y ~ x)
##
## Coefficients:
## (Intercept) x
## 72271766.3 -290.7
El modelo 1 es igual a Precio=$72’271.766.3+(-$290.7∗Kilometraje).
β0=$72’271.766 y β1=-$290.7. Podemos interpretar que un carro 0 km tiene en promedio, un precio de $72’271.766,3 y que por cada kilometro recorrido el vehículo disminuye su precio en $290.7.
summary(m1)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -60471042 -6914624 -489462 6727120 108002424
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 72271766.29 1675024.53 43.15 <0.0000000000000002 ***
## x -290.74 19.02 -15.29 <0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 15560000 on 312 degrees of freedom
## Multiple R-squared: 0.4282, Adjusted R-squared: 0.4264
## F-statistic: 233.6 on 1 and 312 DF, p-value: < 0.00000000000000022
Se observa en la tabla del summary del modelo 1 que la variable kilometraje (x) es significativa en el modelo por que el valor p lo indica con un nivel de confianza del 99.9% (***), adicionalmente este modelo logra explicar el 42.82% de la variabilidad en el precio de venta.
Para el segundo modelo de regresión lineal simple se ha elegido al modelo como variable predictora del precio.
y=Datos$precio
x1=Datos$modelo
m2=lm(y~x1)
m2
##
## Call:
## lm(formula = y ~ x1)
##
## Coefficients:
## (Intercept) x1
## -7888772339 3940325
El modelo 2 es igual a Precio=-$7.888’772.339+($3’940.325∗Modelo).
β0=-$7.888’772.339 y β1=$3’940.325.
En este caso no tiene sentido interpretar el intercepto β0 siendo un precio de venta negativo. En cuanto a β1 se puede afirmar que por cada año adicional en el modelo (que el carro se más nuevo) su precio aumentará $3’940.325.
summary(m2)
##
## Call:
## lm(formula = y ~ x1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -71764290 -4601367 -772342 3182090 103056684
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -7888772339 302582880 -26.07 <0.0000000000000002 ***
## x1 3940325 150175 26.24 <0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 11490000 on 312 degrees of freedom
## Multiple R-squared: 0.6881, Adjusted R-squared: 0.6871
## F-statistic: 688.4 on 1 and 312 DF, p-value: < 0.00000000000000022
Se observa en la tabla del summary del modelo 2 que la variable modelo (x1) es significativa en el modelo por que el valor p lo indica con un nivel de confianza del 99.9% (***), adicionalmente este modelo logra explicar el 68.81% de la variabilidad en el precio de venta.
Para el tercer modelo de regresión lineal simple se ha elegido al tipo de Transmisión (variable cualitativa) como variable predictora del precio.
y=Datos$precio
x2=Datos$transmision
m3=lm(y~x2)
m3
##
## Call:
## lm(formula = y ~ x2)
##
## Coefficients:
## (Intercept) x2Mecánica
## 56043563 -12506278
El modelo 3 es igual a Precio=$56’043.563+(-$12’506.278(Transmisión mecánica)).
β0=$56’043.563 y β1=-$12’506.278
Podemos interpretar que en promedio un carro con transmisión automática tiene un precio de $56’043.563 (β0), y si el vehículo tiene transmisión mecánica en promedio su precio sera $12’506.278 menor (β1).
summary(m3)
##
## Call:
## lm(formula = y ~ x2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -36737286 -14043563 -3787286 13262714 113756437
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 56043563 1486374 37.705 < 0.0000000000000002 ***
## x2Mecánica -12506278 2226020 -5.618 0.0000000428 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 19610000 on 312 degrees of freedom
## Multiple R-squared: 0.09187, Adjusted R-squared: 0.08896
## F-statistic: 31.56 on 1 and 312 DF, p-value: 0.00000004276
Se observa en la tabla del summary del modelo 3 que la variable transmisión (x1) es significativa en el modelo por que el valor p lo indica con un nivel de confianza del 99.9% (***), a pesar de esto, el modelo logra explicar únicamente el 9.18% de la variabilidad en el precio de venta, el de menor R2 de los 3 modelos.
Para la predicción se ha descartado el modelo 3 al tener el menor R2. En el modelo 1, a pesar que no hay gran diferencia en el valor p que mide el aporte de la variable kilometraje con respecto a la variable modelo en el modelo 2, el valor R2 es menor.
De este modo usando el criterio del valor R2 se ha elegido al MRLS 2.
Se realiza validación cruzada con un escenario 70-30 (modelar validar) para evaluar el poder predictivo del modelo con MAE.
set.seed(123)
id_modelar = sample(1:nrow(Datos), size = floor(0.7 * nrow(Datos)))
datos_modelar = Datos[id_modelar,]
datos_validar = Datos[-id_modelar,]
mod_mrls2_modelar = lm(precio ~ modelo, data = datos_modelar)
precio_pred = predict(mod_mrls2_modelar, newdata = datos_validar)
precio_real = datos_validar$precio
error = precio_real - precio_pred
res = data.frame(precio_real, precio_pred, error)
MAE = mean(abs(error))
MAE
## [1] 6187565
Comparando el resultado del modelo contra los reales por medio del MAE encontramos que el modelo tiene un error de predicción en el precio de venta de $6’187.565 pesos.
p1 = data.frame(x1 = c(2020, 2021, 2022))
predicciones = predict(m2, p1, interval = "confidence", level = 0.95)
row.names(predicciones) = c(2020, 2021, 2022)
print(predicciones)
## fit lwr upr
## 2020 70683641 68702252 72665029
## 2021 74623965 72408314 76839617
## 2022 78564290 76101173 81027407
El promedio esperado de precio de venta para un Mazda 2 modelo 2020 de $70’683.641. El intervalo de confianza para la predicción del precio de venta del Mazda 2 modelo 2020 nos indica que el promedio del precio de venta estaría entre los $68’702.252 y $72’665.029.
Para el primer modelo de regresión lineal múltiple se ha elegido a todas las variables aparte del precio, kilometraje (x), modelo(x1), transmisión(x2), color (x3), ciudad(x4) y departamento (x5) como variables predictoras del precio de venta.
y=Datos$precio
x=Datos$kilometraje
x1=Datos$modelo
x2=Datos$transmision
x3=Datos$color
x4=Datos$ciudad
x5=Datos$Dpto
m4=lm(y~x+x1+x2+x3+x4+x5)
summary(m4)
##
## Call:
## lm(formula = y ~ x + x1 + x2 + x3 + x4 + x5)
##
## Residuals:
## Min 1Q Median 3Q Max
## -70613529 -3304321 0 2922008 97196603
##
## Coefficients: (19 not defined because of singularities)
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -7159233878.15 582904326.06 -12.282 < 0.0000000000000002
## x -35.43 25.93 -1.366 0.173111
## x1 3575655.93 289052.76 12.370 < 0.0000000000000002
## x2Mecánica -5707708.18 1592202.09 -3.585 0.000405
## x3Beige 9457458.37 6840176.92 1.383 0.168001
## x3Blanco 357999.24 3383311.13 0.106 0.915815
## x3Crema 2934859.21 13155566.94 0.223 0.823647
## x3Dorado 617962.22 12454425.45 0.050 0.960466
## x3Gris 2068807.21 3283658.07 0.630 0.529245
## x3Marrón 1449787.91 8996702.30 0.161 0.872107
## x3Morado -1534694.74 12386929.16 -0.124 0.901496
## x3Negro -26893.83 4279459.09 -0.006 0.994991
## x3Otro 3877132.04 5835597.47 0.664 0.507046
## x3Plateado 1192767.10 3895973.55 0.306 0.759740
## x3Rojo 32253.48 3576008.98 0.009 0.992811
## x3Verde 1624711.67 7838752.15 0.207 0.835969
## x3Vinotinto -1871757.06 6338929.67 -0.295 0.768023
## x4Aipe 8596876.90 17914472.29 0.480 0.631726
## x4Ansermanuevo 8683487.15 17027232.04 0.510 0.610514
## x4Armenia 10145403.25 12654614.19 0.802 0.423473
## x4Barrancabermeja 6811857.56 15049793.06 0.453 0.651211
## x4Barranquilla 7017930.86 12553946.19 0.559 0.576643
## x4Bello 9647574.69 12570511.18 0.767 0.443517
## x4Bogotá 7673286.48 12140322.87 0.632 0.527927
## x4Bucaramanga 6393917.86 12736490.97 0.502 0.616095
## x4Cali 11795374.89 12159608.79 0.970 0.332954
## x4Cartago 6630575.01 16849396.87 0.394 0.694268
## x4Chía 24715022.85 13993647.19 1.766 0.078580
## x4Cúcuta 9278017.26 13284902.29 0.698 0.485579
## x4Envigado 11948326.04 13176143.36 0.907 0.365371
## x4Floridablanca 9382698.71 12759430.05 0.735 0.462808
## x4Funza 13051205.43 17089615.56 0.764 0.445765
## x4Fusagasugá 9843921.02 14785891.31 0.666 0.506171
## x4Girardot 15528343.24 17181584.05 0.904 0.366976
## x4Girón 8233292.99 17004177.15 0.484 0.628670
## x4Ibagué 7368381.83 12777785.85 0.577 0.564687
## x4Itagüí 7871825.82 13573899.69 0.580 0.562484
## x4La Ceja 12961841.20 17067674.02 0.759 0.448300
## x4Manizales 9786004.09 12366972.85 0.791 0.429512
## x4Medellín 9660860.37 12094791.31 0.799 0.425181
## x4Montería -1138154.56 16870628.49 -0.067 0.946266
## x4Neiva 8759416.27 12906296.31 0.679 0.497955
## x4Palestina 1401440.26 16902571.97 0.083 0.933987
## x4Palmira 8261377.73 17199701.80 0.480 0.631416
## x4Pereira 8666578.17 12685336.02 0.683 0.495110
## x4Piedecuesta 7577175.37 17051509.36 0.444 0.657157
## x4Pitalito 14945422.64 17088749.19 0.875 0.382637
## x4Popayán 12703130.12 17222868.44 0.738 0.461460
## x4Río de Oro 11537245.49 17055595.02 0.676 0.499376
## x4Rionegro 6044785.35 13214005.76 0.457 0.647740
## x4Sabaneta 7067933.94 14630497.47 0.483 0.629447
## x4San Gil 11080467.36 17038508.36 0.650 0.516079
## x4SanJuandePasto 6244958.86 14065527.67 0.444 0.657431
## x4SantaMarta 15102498.67 17013706.69 0.888 0.375567
## x4Sincelejo 6376543.63 16983606.16 0.375 0.707640
## x4Tuluá 5868558.61 14665647.14 0.400 0.689380
## x4Valledupar 12207852.04 17038759.90 0.716 0.474361
## x4Villavicencio 7996569.50 13083225.69 0.611 0.541613
## x4Yarumal 8243166.87 17089541.28 0.482 0.629975
## x4Yopal 9348381.63 17299056.98 0.540 0.589400
## x4Yumbo 11409997.56 17087021.96 0.668 0.504899
## x4Zipaquirá 9403607.23 16915330.59 0.556 0.578757
## x5Atlántico NA NA NA NA
## x5Bogotá NA NA NA NA
## x5Caldas NA NA NA NA
## x5Casanare NA NA NA NA
## x5Cauca NA NA NA NA
## x5Cesar NA NA NA NA
## x5Córdoba NA NA NA NA
## x5Cundinamarca NA NA NA NA
## x5Huila NA NA NA NA
## x5Magdalena NA NA NA NA
## x5Meta NA NA NA NA
## x5Nariño NA NA NA NA
## x5NortedeSantander NA NA NA NA
## x5Quindío NA NA NA NA
## x5Risaralda NA NA NA NA
## x5Santander NA NA NA NA
## x5Sucre NA NA NA NA
## x5Tolima NA NA NA NA
## x5ValledelCauca NA NA NA NA
##
## (Intercept) ***
## x
## x1 ***
## x2Mecánica ***
## x3Beige
## x3Blanco
## x3Crema
## x3Dorado
## x3Gris
## x3Marrón
## x3Morado
## x3Negro
## x3Otro
## x3Plateado
## x3Rojo
## x3Verde
## x3Vinotinto
## x4Aipe
## x4Ansermanuevo
## x4Armenia
## x4Barrancabermeja
## x4Barranquilla
## x4Bello
## x4Bogotá
## x4Bucaramanga
## x4Cali
## x4Cartago
## x4Chía .
## x4Cúcuta
## x4Envigado
## x4Floridablanca
## x4Funza
## x4Fusagasugá
## x4Girardot
## x4Girón
## x4Ibagué
## x4Itagüí
## x4La Ceja
## x4Manizales
## x4Medellín
## x4Montería
## x4Neiva
## x4Palestina
## x4Palmira
## x4Pereira
## x4Piedecuesta
## x4Pitalito
## x4Popayán
## x4Río de Oro
## x4Rionegro
## x4Sabaneta
## x4San Gil
## x4SanJuandePasto
## x4SantaMarta
## x4Sincelejo
## x4Tuluá
## x4Valledupar
## x4Villavicencio
## x4Yarumal
## x4Yopal
## x4Yumbo
## x4Zipaquirá
## x5Atlántico
## x5Bogotá
## x5Caldas
## x5Casanare
## x5Cauca
## x5Cesar
## x5Córdoba
## x5Cundinamarca
## x5Huila
## x5Magdalena
## x5Meta
## x5Nariño
## x5NortedeSantander
## x5Quindío
## x5Risaralda
## x5Santander
## x5Sucre
## x5Tolima
## x5ValledelCauca
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 11900000 on 252 degrees of freedom
## Multiple R-squared: 0.7299, Adjusted R-squared: 0.6645
## F-statistic: 11.16 on 61 and 252 DF, p-value: < 0.00000000000000022
AIC(m4)
## [1] 11179.3
Se observa en la tabla del summary del modelo 1 que se hace presente la multicolinealidad al incluir todos las variables, junto a una mayor complejidad en el modelo. Las únicas variables significativas con un intervalo de confianza del 95% son modelo (x1) y transmisión (x2). Este modelo logra explicar el 72.99% de la variabilidad en el precio de venta.
Así mismo posee un criterio de Akaike (AIC) de 11179.3, muestra de la complejidad del mismo.
mae1 <- predict(m4)
errores1 <- abs(y - mae1)
MAEE1 <- mean(errores1)
print(MAEE1)
## [1] 5223652
Tras calcular el MAE del modelo 1 de regresión lineal múltiple encontramos un valor de $5’223.652, monto por el que en promedio erra el modelo en la predicción.
par(mfrow=c(2,2))
plot(m4)
bptest(m4)
##
## studentized Breusch-Pagan test
##
## data: m4
## BP = 34.399, df = 61, p-value = 0.9976
shapiro.test(resid(m4))
##
## Shapiro-Wilk normality test
##
## data: resid(m4)
## W = 0.61944, p-value < 0.00000000000000022
residuos = residuals(m4)
media_residuos = mean(residuos)
print(media_residuos)
## [1] -0.0000000000008175315
Tras la revisión de gráficos para evaluar los supuestos de normalidad y homocedasticidad se encuentra que el modelo 1, cumple razonablemente con el supuesto de normalidad, donde los residuales se ajustan a a la línea en el gráfico Q-Q a pesar de una desviación en los extremos, pero al realizar el test Shapiro Wilk encontramos un Valor p menor a 5% por lo tanto los errores no siguen una distribución normal, violando este supuesto.
Para el supuesto de homocedasticiadad encontramos en los gráficos indicios de heterocedasticidad, al revisar los resultados de la prueba Breusch Pagan encontramos un valor p de 0.99 por lo tanto se cumple el supuesto de homocedasticiada.
Finalmente para el supuesto de media del error = 0 encontramos que el valor de la media en el modelo 1 es muy cercano a cero.
Para el segundo modelo de regresión lineal múltiple, se ha aplicado proceso de selección de variables, este indica que el modelo que incluye las variables kilometraje (x), modelo (x1) y transmisión (x2) es suficiente para explicar el precio de venta. El incorporar las variables de color, ciudad y departamento no generan ningún beneficio adicional al modelo en términos de ajuste.
m5=step(m4)
## Start: AIC=10286.21
## y ~ x + x1 + x2 + x3 + x4 + x5
##
##
## Step: AIC=10286.21
## y ~ x + x1 + x2 + x3 + x4
##
## Df Sum of Sq RSS AIC
## - x4 45 1889150040679216 37559897495718744 10212
## - x3 13 548670202287008 36219417657326536 10265
## <none> 35670747455039528 10286
## - x 1 264183714697172 35934931169736700 10286
## - x2 1 1819025591268792 37489773046308320 10300
## - x1 1 21660519330363536 57331266785403064 10433
##
## Step: AIC=10212.41
## y ~ x + x1 + x2 + x3
##
## Df Sum of Sq RSS AIC
## - x3 13 966929987698504 38526827483417240 10194
## <none> 37559897495718736 10212
## - x 1 338204685570440 37898102181289176 10213
## - x2 1 2131849887621872 39691747383340608 10228
## - x1 1 28409815384077688 65969712879796424 10387
##
## Step: AIC=10194.39
## y ~ x + x1 + x2
##
## Df Sum of Sq RSS AIC
## <none> 38526827483417248 10194
## - x 1 374346277953752 38901173761371000 10195
## - x2 1 2247019267486912 40773846750904160 10210
## - x1 1 31995031816266544 70521859299683792 10382
summary(m5)
##
## Call:
## lm(formula = y ~ x + x1 + x2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -67801596 -4005789 -967519 2918840 100935418
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -7048130077.23 443934538.83 -15.877 < 0.0000000000000002 ***
## x -35.39 20.39 -1.736 0.0836 .
## x1 3525641.23 219734.18 16.045 < 0.0000000000000002 ***
## x2Mecánica -5506174.38 1294933.12 -4.252 0.0000281 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 11150000 on 310 degrees of freedom
## Multiple R-squared: 0.7083, Adjusted R-squared: 0.7055
## F-statistic: 250.9 on 3 and 310 DF, p-value: < 0.00000000000000022
Se observa en la tabla del summary del modelo 2 que se hace presente la multicolinealidad al incluir la variable kilometraje y modelo como variables predictoras, estas presentan un coeficiente de correlación de -0.74. En este caso, la variable kilometraje (x) no es significativa estando la variable modelo.
Este modelo logra explicar el 70.83% de la variabilidad en el precio de venta.
Así mismo posee un criterio de Akaike (AIC) de 10194.30 de acuerdo a la selección de variables, inferior al modelo 1.
mae2 <- predict(m5)
errores2 <- abs(y - mae2)
MAEE2 <- mean(errores2)
print(MAEE2)
## [1] 5501909
Tras calcular el MAE del modelo 2 de regresión lineal múltiple encontramos un valor de $5’501.909, monto por el que en promedio erra el modelo en la predicción.
par(mfrow=c(2,2))
plot(m5)
bptest(m5)
##
## studentized Breusch-Pagan test
##
## data: m5
## BP = 2.1372, df = 3, p-value = 0.5444
shapiro.test(resid(m5))
##
## Shapiro-Wilk normality test
##
## data: resid(m5)
## W = 0.59398, p-value < 0.00000000000000022
residuos1 = residuals(m5)
media_residuos1 = mean(residuos1)
print(media_residuos1)
## [1] -0.0000000002728643
Tras la revisión de gráficos para evaluar los supuestos de normalidad y homocedasticidad se encuentra que el modelo 2, cumple razonablemente con el supuesto de normalidad, donde los residuales se ajustan a a la línea en el gráfico Q-Q a pesar de una desviación en los extremos, pero al realizar el test Shapiro Wilk encontramos un Valor p menor a 5% por lo tanto los errores no siguen una distribución normal, violando este supuesto.
Para el supuesto de homocedasticiadad encontramos en los gráficos indicios de heterocedasticidad, al revisar los resultados de la prueba Breusch Pagan encontramos un valor p de 0.54 por lo tanto se cumple el supuesto de homocedasticiada.
Finalmente para el supuesto de media del error = 0 encontramos que el valor de la media en el modelo 1 es muy cercano a cero.
Para el tercer modelo de regresión lineal múltiple se ha elegido a las variables kilometraje y transmisión(x2) como variables predictoras del precio de venta.
m6=lm(y~x+x2)
summary(m6)
##
## Call:
## lm(formula = y ~ x + x2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -55094243 -7063673 471227 7551066 104952732
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 74783433.83 1707239.90 43.804 < 0.0000000000000002 ***
## x -275.81 18.68 -14.762 < 0.0000000000000002 ***
## x2Mecánica -8145337.90 1734986.50 -4.695 0.00000401 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 15060000 on 311 degrees of freedom
## Multiple R-squared: 0.466, Adjusted R-squared: 0.4626
## F-statistic: 135.7 on 2 and 311 DF, p-value: < 0.00000000000000022
AIC(m6)
## [1] 11275.32
Se observa en la tabla del summary del modelo 3 que la variable kilometraje (x) es significativa para el modelo, a diferencia del modelo 2, del mismo modo la variable transmisión (x2) también es significativa con un intervalo de confianza del 99.9% (***).
Este modelo logra explicar el 46.6% de la variabilidad en el precio de venta.
Así mismo posee un criterio de Akaike (AIC) de 11275.32, superior al del modelo 1, teniendo menos variables predictoras.
mae3 <- predict(m6)
errores3 <- abs(y - mae3)
MAEE3 <- mean(errores3)
print(MAEE3)
## [1] 9720358
Tras calcular el MAE del modelo 3 de regresión lineal múltiple encontramos un valor de $9’720.358, monto por el que en promedio erra el modelo en la predicción.
par(mfrow=c(2,2))
plot(m6)
bptest(m6)
##
## studentized Breusch-Pagan test
##
## data: m6
## BP = 15.565, df = 2, p-value = 0.0004169
shapiro.test(resid(m6))
##
## Shapiro-Wilk normality test
##
## data: resid(m6)
## W = 0.83544, p-value < 0.00000000000000022
residuos2 = residuals(m6)
media_residuos2 = mean(residuos2)
print(media_residuos2)
## [1] 0.00000000006758067
Tras la revisión de gráficos para evaluar los supuestos de normalidad y homocedasticidad se encuentra que el modelo 2, posee considerables desviaciones en lo extremos del gráfico Q-Q, al realizar el test Shapiro Wilk encontramos un Valor p menor a 5% por lo tanto los errores no siguen una distribución normal, violando este supuesto.
Para el supuesto de homocedasticiadad encontramos en los gráficos indicios de heterocedasticidad al no evidenciar patrones aleatoris, al revisar los resultados de la prueba Breusch Pagan encontramos un valor p de 0.0004 por lo tanto se viola el supuesto de homocedasticiada.
Finalmente para el supuesto de media del error = 0 encontramos que el valor de la media en el modelo 1 es muy cercano a cero.
Todos los modelos presentados no cumplen con el supuesto de normalidad, solo el modelo 1 y 2 cumplen con el supuesto de homocedasticidad, en adición se cumple el supuesto de media del error = 0.
Aunque el modelo 1 presenta un R2 mayor (72%) en comparación al R2 del modelo 2 (70%), este valor es similar, en adición, el modelo 2 presenta un valor AIC menor, es menos complejo.
Por estas razones se elige al modelo 2 cómo el mejor modelo de regresión lineal múltiple.
Teniendo en cuenta que el modelo 2 no cumple con el supuesto de normalidad, se aplicara una transformación Lin-Log, aplicando logaritmo a las variables predictoras cuantitativas para intentar mejorar la normalidad de los residuos.
library(readxl)
constante=1
x_transformado <- x + constante
x1_transformado <- x1 + constante
x_log <- log(x_transformado)
x1_log <- log(x1_transformado)
m5l <- lm(y ~ x_log + x1_log + x2)
summary(m5l)
##
## Call:
## lm(formula = y ~ x_log + x1_log + x2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -67220484 -3925525 -574157 3292907 102290700
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -54722722055 2364116380 -23.147 < 0.0000000000000002 ***
## x_log -1274088 283432 -4.495 0.00000983 ***
## x1_log 7200717269 310564489 23.186 < 0.0000000000000002 ***
## x2Mecánica -5116952 1265454 -4.044 0.00006649 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10860000 on 310 degrees of freedom
## Multiple R-squared: 0.723, Adjusted R-squared: 0.7203
## F-statistic: 269.7 on 3 and 310 DF, p-value: < 0.00000000000000022
AIC(m5l)
## [1] 11071.25
Inicialmente observa en la tabla del summary del modelo 2 transformado que se elimina la multicolinealidad, ahora todas la variables predictoras son significativas.
Este modelo logra explicar el 72,3% de la variabilidad en el precio de venta, 1,4% más que el modelo sin transformación.
Posee un criterio de Akaike (AIC) de 11071.25 mayor al 10194.30 del modelo sin transformación.
mae4 <- predict(m5l)
errores4 <- abs(y - mae4)
MAEE4 <- mean(errores4)
print(MAEE4)
## [1] 5441419
Tras calcular el MAE del modelo 2 de regresión lineal múltiple encontramos un valor de $5’441.419,monto por el que en promedio erra el modelo en la predicción, este MAE es inferior al del modelo sin transformación que posee un valor de $5’501.909.
par(mfrow=c(2,2))
plot(m5l)
bptest(m5l)
##
## studentized Breusch-Pagan test
##
## data: m5l
## BP = 3.7809, df = 3, p-value = 0.2861
shapiro.test(resid(m5l))
##
## Shapiro-Wilk normality test
##
## data: resid(m5l)
## W = 0.60565, p-value < 0.00000000000000022
residuos4 = residuals(m5l)
media_residuos4 = mean(residuos4)
print(media_residuos4)
## [1] 0.0000000002721909
Tras la revisión de gráficos para evaluar los supuestos de normalidad y homocedasticidad se encuentra que el modelo 2 transformado, no mejora la distribución de los residuales, con un valor p de la prueba Shapiro Wilk que rechaza que los datos provienen de una distribución normal.
Continua cumpliendo la media = 0 de los errores y la homocedasticidad.
Aunque el modelo transformado (MRLM 2 Lin-Log) tiene un R2 ligeramente mayor, el modelo sin transformación (MRLM 2) tiene un AIC considerablemente inferior y un MAE comparable. Por lo tanto, se prioriza la simplicidad del modelo y un buen ajuste a los datos usando para la predicción el modelo sin transformación MRLM 2.
Caso1=predict(m5,list(x=100000, x1=2011,x2="Automática"))
Caso1
## 1
## 38395372
Promedio muestra con esas características: $32’966.667
Caso2=predict(m5,list(x=0, x1=2022,x2="Automática"))
Caso2
## 1
## 80716489
Promedio muestra con esas características: $90’316.666 (Excluyendo 2do carro más caro $159M)
Caso3=predict(m5,list(x=65000, x1=2017,x2="Automática"))
Caso3
## 1
## 60787892
Promedio muestra con esas características: $62’965.833