library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.2.3
## Warning: package 'ggplot2' was built under R version 4.2.3
## Warning: package 'tibble' was built under R version 4.2.3
## Warning: package 'purrr' was built under R version 4.2.3
## Warning: package 'dplyr' was built under R version 4.2.3
## Warning: package 'lubridate' was built under R version 4.2.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.3     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.0
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(GGally)
## Warning: package 'GGally' was built under R version 4.2.3
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
library(ggplot2)

Este informe se centra en el análisis de vehículos en este caso el Mazda 2 en la ciudad de Cali.

El objetivo principal es identificar tendencias y relaciones entre las distintas variables para comprender mejor los factores que influyen en la determinación de los precios de estos vehículos.

library(readxl)
base1_mazdacol <- read_excel("~/Univesidad/Noveno Semestre/Predicción economica/TALLER FINAL/base1_mazdacol.xlsx")
View(base1_mazdacol)
head(base1_mazdacol)
## # A tibble: 6 × 11
##   `web-scraper-order` `web-scraper-start-url`           link  `link-href` precio
##   <chr>               <chr>                             <chr> <chr>        <dbl>
## 1 1662991183-54       https://www.olx.com.co/items/q-m… $ 34… https://ww… 3.4 e7
## 2 1662991216-64       https://www.olx.com.co/items/q-m… $ 26… https://ww… 2.64e7
## 3 1662991275-85       https://www.olx.com.co/items/q-m… $ 42… https://ww… 4.25e7
## 4 1662991284-88       https://www.olx.com.co/items/q-m… $ 91… https://ww… 9.1 e7
## 5 1662991287-89       https://www.olx.com.co/items/q-m… $ 35… https://ww… 3.5 e7
## 6 1662991300-94       https://www.olx.com.co/items/q-m… $ 67… https://ww… 6.70e7
## # ℹ 6 more variables: kilometraje <dbl>, transmision <chr>, modelo <dbl>,
## #   color <chr>, ciudad <chr>, Dpto <chr>
# Inspeccionamos los datos
summary(base1_mazdacol)
##  web-scraper-order  web-scraper-start-url     link            link-href        
##  Length:314         Length:314            Length:314         Length:314        
##  Class :character   Class :character      Class :character   Class :character  
##  Mode  :character   Mode  :character      Mode  :character   Mode  :character  
##                                                                                
##                                                                                
##                                                                                
##      precio           kilometraje     transmision            modelo    
##  Min.   :  6800000   Min.   :     0   Length:314         Min.   :1995  
##  1st Qu.: 35000000   1st Qu.: 39125   Class :character   1st Qu.:2011  
##  Median : 42000000   Median : 79000   Mode  :character   Median :2015  
##  Mean   : 50467516   Mean   : 74996                      Mean   :2015  
##  3rd Qu.: 63000000   3rd Qu.:107375                      3rd Qu.:2018  
##  Max.   :169800000   Max.   :280000                      Max.   :2022  
##     color              ciudad              Dpto          
##  Length:314         Length:314         Length:314        
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
## 

Debemos transformar las variables categoricas, y para este paso es fundamental para ejecutar modelos lineales, como la regresión, ya que permite que estas variables sean interpretadas como variables dummy.

base1_mazdacol <- base1_mazdacol %>%
  mutate(
    color = as.factor(color),
    transmision = as.factor(transmision),
    ciudad = as.factor(ciudad)
  )

#ANALISIS UNIVARIADO

# Análisis descriptivo de la variable dependiente (Precio)
summary(base1_mazdacol$precio)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
##   6800000  35000000  42000000  50467516  63000000 169800000

#Correlación de las variables predictorias con precio

cor(base1_mazdacol$kilometraje,base1_mazdacol$precio) #Correlación Kilometro-Precio
## [1] -0.6543672

Indica que hay una correlación negativa moderada entre el kilometraje y el precio de los vehículos.Esto implica que aunque existe una tendencia de precios más bajos con más kilometraje, hay otros factores que también afectan el precio, por lo que no es una relación perfecta.

cor(base1_mazdacol$modelo,base1_mazdacol$precio) #Correlación modelo-Precio
## [1] 0.8295419

hay una relación fuerte entre ambas variables, es decir, los vehículos más nuevos suelen tener precios más altos.

#ANALISIS BIVARIADO

par(mar = c(4, 4, 2, 2))
plot(base1_mazdacol$precio,base1_mazdacol$kilometraje, main="Precio vs Kilometraje")

A partir del código y el gráfico generado, se espera observar una relación inversa entre el kilometraje y el precio, es decir, a medida que el kilometraje aumenta, el precio tiende a disminuir.

El gráfico podría mostrar una dispersión más densa en el rango de kilometrajes bajos y precios más altos, y la dispersión podría ser más amplia o más dispersa cuando los precios son bajos con altos kilometrajes.

podría indicar que la relación entre estas dos variables no es estrictamente lineal, y otros factores podrían estar influyendo en el precio.

par(mar = c(4, 4, 2, 2))
plot(base1_mazdacol$precio,base1_mazdacol$modelo, main="Precio vs modelo")

Es probable que el gráfico muestre una tendencia ascendente. Es decir, los vehículos más nuevos (con un año de modelo más reciente) suelen tener un precio más alto.

los vehículos más nuevos estén agrupados en la parte superior del gráfico, con precios más altos, mientras que los vehículos más antiguos estén en la parte inferior con precios más bajos.

MODELO DE REGRESION LINEAL SIMPLE

Modelo 1

modelo1 <- lm(precio ~ kilometraje, data = base1_mazdacol)
summary(modelo1)
## 
## Call:
## lm(formula = precio ~ kilometraje, data = base1_mazdacol)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -60471042  -6914624   -489462   6727120 108002424 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  7.227e+07  1.675e+06   43.15   <2e-16 ***
## kilometraje -2.907e+02  1.902e+01  -15.29   <2e-16 ***
## ---
## 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: < 2.2e-16

Elección de la Variable Predictora: La elección de kilometraje como variable predictora en este modelo tiene sentido, ya que el kilometraje de un vehículo es un factor importante que afecta su precio. Los vehículos con mayor kilometraje generalmente tienden a tener un precio más bajo, debido al mayor desgaste y posibles reparaciones necesarias.

BO=Es decir, si un vehículo no tuviera kilometraje, el modelo estima que su precio sería 72,270,000 COP. Aunque este valor no tiene mucho sentido práctico (ya que los vehículos siempre tienen kilometraje), se usa como base para la ecuación de la regresión.

B1=Este coeficiente indica que por cada aumento de 1 kilómetro en el kilometraje, el precio de un vehículo disminuye en promedio 290.7 pesos.

Para el coeficiente de kilometraje, el error estándar es 19.02.

Intercepto: t = 43.15, lo que indica que el intercepto es altamente significativo. Kilometraje: t = -15.29, lo que también indica que el coeficiente de kilometraje es altamente significativo.

*lo que indica que ambos coeficientes son estadísticamente significativos.

R2: Este valor indica que el 42.82% de la variabilidad del precio puede ser explicada por el kilometraje

AIC (modelo1)
## [1] 11294.82
BIC(modelo1)
## [1] 11306.07
par(mar = c(4, 4, 2, 2))
plot(modelo1)

Modelo 2

modelo2 <- lm(precio ~ modelo, data = base1_mazdacol)
summary(modelo2)
## 
## Call:
## lm(formula = precio ~ modelo, data = base1_mazdacol)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -71764290  -4601367   -772342   3182090 103056684 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -7.889e+09  3.026e+08  -26.07   <2e-16 ***
## modelo       3.940e+06  1.502e+05   26.24   <2e-16 ***
## ---
## 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: < 2.2e-16

Elección de la Variable Predictora

La elección de modelo como variable predictora es lógica y fundamentada, ya que el año del modelo suele ser uno de los principales determinantes del precio de un vehículo. En general, los vehículos más recientes tienen precios más altos debido a factores como avances tecnológicos, menor desgaste, y mayor valor percibido en el mercado. Por lo tanto, es razonable esperar una relación positiva entre el año del modelo y el precio.

INTERPRETACION

B0=Dado que un modelo de año 0 no tiene sentido práctico, este valor no tiene una interpretación realista directa. Sin embargo, es necesario para la ecuación del modelo.

B1=Este coeficiente indica que por cada incremento de un año en el modelo del vehículo, el precio aumenta en promedio 3,940,000 COP. Este resultado está en línea con las expectativas: los vehículos más nuevos tienden a tener precios más altos.

*Esto implica que el año del modelo tiene un impacto real y significativo en el precio, y que el efecto estimado no se debe al azar.

R2: 0.6881, Esto significa que el modelo explica el 68.81% de la variabilidad del precio de los vehículos utilizando solo la variable modelo.

AIC (modelo2)
## [1] 11104.46
BIC(modelo2)
## [1] 11115.71
par(mar = c(4, 4, 2, 2))
plot(modelo2)

Modelo 3

modelo3 <- lm(precio ~ transmision, data = base1_mazdacol)
summary(modelo3)
## 
## Call:
## lm(formula = precio ~ transmision, data = base1_mazdacol)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -36737286 -14043563  -3787286  13262714 113756437 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          56043563    1486374  37.705  < 2e-16 ***
## transmisionMecánica -12506278    2226020  -5.618 4.28e-08 ***
## ---
## 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: 4.276e-08

Elección de la Variable Predictora La variable transmision es una variable categórica con dos niveles:

Automática (referencia). Mecánica.

La elección de esta variable como predictora se basa en que el tipo de transmisión afecta significativamente el precio de los vehículos, dado que los vehículos con transmisión automática suelen tener un precio más alto que los de transmisión mecánica debido a su costo de fabricación y percepción de comodidad.

B0=Representa el precio promedio de los vehículos con transmisión automática (grupo de referencia). Es decir, en promedio, un vehículo automático tiene un precio de 56,043,563 pesos.

B1=Indica la diferencia promedio en el precio entre los vehículos mecánicos y los automáticos. Los vehículos con transmisión mecánica cuestan, en promedio, 12,506,278 COP menos que los automáticos.

*Son estadisrticamente significativos.

R2= 0.09187: Este valor indica que el modelo explica el 9.19% de la variabilidad en los precios de los vehículos utilizando solo el tipo de transmisión.

AIC (modelo3)
## [1] 11440.07
BIC(modelo3)
## [1] 11451.32
par(mar = c(4, 4, 2, 2))
plot(modelo3)

COMPARAR MODELOS Y SELECCIONAR EL MEJOR

# Comparar R^2 ajustado
modelos <- data.frame(
  Modelo = c("Kilometraje", "Modelo", "Transmisión"),
  R2_Ajustado = c(summary(modelo1)$adj.r.squared,
                  summary(modelo2)$adj.r.squared,
                  summary(modelo3)$adj.r.squared)
)
modelos
##        Modelo R2_Ajustado
## 1 Kilometraje  0.42636379
## 2      Modelo  0.68714016
## 3 Transmisión  0.08896275

El modelo basado en la variable modelo (año del vehículo) tiene el R² ajustado más alto (68.71%), lo que significa que explica la mayor proporción de la variabilidad del precio en comparación con las otras variables.

ignificancia estadística: Todos los coeficientes en el modelo basado en el modelo (año) son altamente significativos (p < 0.001), lo que confirma que la relación entre el año del modelo y el precio no es al azar. Capacidad predictiva: Con un R² ajustado de 0.6871, el modelo modelo tiene casi un 70% de capacidad para explicar las variaciones en el precio, superando ampliamente a los modelos basados en kilometraje (42.64%) y transmisión (8.90%).

VALIDACION CRUZADA DEL MEJOR MODELO

REGRESION LINEAL MULTIPLE

Modelo 4

modelo4 <- lm(precio ~ kilometraje + modelo, data = base1_mazdacol)
summary(modelo4)
## 
## Call:
## lm(formula = precio ~ kilometraje + modelo, data = base1_mazdacol)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -71805375  -4322906   -820863   2780591 102828488 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -7.290e+09  4.522e+08 -16.120   <2e-16 ***
## kilometraje -3.723e+01  2.094e+01  -1.778   0.0764 .  
## modelo       3.644e+06  2.239e+05  16.280   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 11450000 on 311 degrees of freedom
## Multiple R-squared:  0.6913, Adjusted R-squared:  0.6893 
## F-statistic: 348.2 on 2 and 311 DF,  p-value: < 2.2e-16

ELECCIÓN DE VARIABLES

El kilometraje es una variable lógica y relevante porque representa el uso y desgaste del vehículo. Vehículos con mayor kilometraje suelen tener un precio más bajo debido al desgaste mecánico y estético. Aunque su significancia estadística en este modelo es marginal (p = 0.0764), se incluye porque puede interactuar con otras variables, como el modelo, para mejorar la capacidad explicativa.

Modelo (año del vehículo):

Es una variable fundamental porque el año del modelo afecta directamente el valor de un vehículo en el mercado. Vehículos más recientes suelen tener precios más altos. En este modelo, el modelo es altamente significativo (p < 2e-16) y tiene una fuerte relación positiva con el precio.

B0=El valor estimado del intercepto es -7,290,000,000 COP, pero no tiene una interpretación práctica debido a la naturaleza de las variables predictoras (no tiene sentido que el modelo o el kilometraje sean 0 simultáneamente).

B1=Por cada kilómetro adicional recorrido, el precio promedio del vehículo disminuye en 37.23 COP, manteniendo constante el año del modelo. Aunque el efecto es lógico (más kilometraje reduce el precio), su significancia estadística es baja (p = 0.0764), lo que sugiere que podría no ser tan determinante cuando se considera junto al modelo.

B2=Por cada incremento de un año en el modelo, el precio promedio del vehículo aumenta en 3,644,000 COP, manteniendo constante el kilometraje. Este coeficiente es altamente significativo (p < 2e-16), confirmando la fuerte relación positiva entre el modelo y el precio.

R2=El modelo explica el 69.13% de la variabilidad del precio utilizando kilometraje y modelo como predictores. Esto es superior a los modelos simples y demuestra que combinar estas variables mejora la explicación del precio.

AIC (modelo4)
## [1] 11103.28
BIC(modelo4)
## [1] 11118.28
par(mar = c(4, 4, 2, 2))
plot(modelo4)

Modelo 5

modelo5 <- lm(precio ~ kilometraje + modelo + transmision, data = base1_mazdacol)
summary(modelo5)
## 
## Call:
## lm(formula = precio ~ kilometraje + modelo + transmision, data = base1_mazdacol)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -67801596  -4005789   -967519   2918840 100935418 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -7.048e+09  4.439e+08 -15.877  < 2e-16 ***
## kilometraje         -3.539e+01  2.039e+01  -1.736   0.0836 .  
## modelo               3.526e+06  2.197e+05  16.045  < 2e-16 ***
## transmisionMecánica -5.506e+06  1.295e+06  -4.252 2.81e-05 ***
## ---
## 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: < 2.2e-16

ELECCION DE VARIABLES Kilometraje:

Es un indicador del uso del vehículo. Se incluye porque los vehículos con mayor kilometraje suelen tener un menor valor debido al desgaste acumulado. Aunque su significancia en este modelo es marginal (p = 0.0836), su efecto combinado con otras variables puede ser importante.

Modelo (año del vehículo):

Representa el año de fabricación del vehículo. Es una variable clave porque los vehículos más recientes suelen ser más costosos. En este modelo, es altamente significativo (p < 2e-16) y tiene un fuerte efecto positivo sobre el precio.

Transmisión:

Es una variable categórica que indica si la transmisión es automática o mecánica. Se incluye porque los vehículos automáticos suelen tener precios más altos. En este modelo, la transmisión es significativa (p = 2.81e-05) y muestra un efecto importante sobre el precio.

B0=Representa el precio estimado cuando kilometraje = 0, modelo = 0, y la transmisión es automática (grupo de referencia). Aunque no tiene una interpretación práctica, sirve como punto base del modelo.

B1=Por cada kilómetro adicional recorrido, el precio del vehículo disminuye en promedio 35.39 COP, manteniendo constante el modelo y la transmisión. Aunque este coeficiente es lógico, su significancia estadística es baja (p = 0.0836), indicando que su efecto es menos relevante en este contexto.

B3=Los vehículos con transmisión mecánica tienen un precio promedio 5,506,000 COP menor que los automáticos, manteniendo constantes el kilometraje y el modelo. Este efecto es significativo (p = 2.81e-05) y consistente con la percepción de mercado sobre el valor relativo de las transmisiones.

R2=El modelo explica el 70.83% de la variabilidad del precio utilizando las tres variables predictoras.

AIC (modelo5)
## [1] 11087.49
BIC(modelo5)
## [1] 11106.23
par(mar = c(4, 4, 2, 2))
plot(modelo5)

# Comparar R^2 ajustado incluyendo los modelos múltiples
modelos_multiples <- data.frame(
  Modelo = c("Kilometraje", "Modelo", "Transmisión", "Kilometraje + Modelo", "Kilometraje + Modelo + Transmisión"),
  R2_Ajustado = c(summary(modelo1)$adj.r.squared,
                  summary(modelo2)$adj.r.squared,
                  summary(modelo3)$adj.r.squared,
                  summary(modelo4)$adj.r.squared,
                  summary(modelo5)$adj.r.squared)
)
modelos_multiples
##                               Modelo R2_Ajustado
## 1                        Kilometraje  0.42636379
## 2                             Modelo  0.68714016
## 3                        Transmisión  0.08896275
## 4               Kilometraje + Modelo  0.68929250
## 5 Kilometraje + Modelo + Transmisión  0.70546834

El mejor modelo es el de Kilometraje + Modelo + Transmisión, ya que presenta el mayor R² ajustado (0.7055), lo que indica que explica el 70.55% de la variabilidad del precio de los vehículos, superior a los demás modelos.

Este modelo tiene el mayor R² ajustado, lo que indica que, al considerar el número de predictores, es el más efectivo para explicar las variaciones en el precio. Supera al modelo de Kilometraje + Modelo (0.6893), mostrando que la variable transmisión aporta información adicional relevante.

TRANSFORMACION DE MODELO5

modelo5TRANS <- lm(log(precio) ~ kilometraje + modelo + transmision, data = base1_mazdacol)
summary(modelo5TRANS)
## 
## Call:
## lm(formula = log(precio) ~ kilometraje + modelo + transmision, 
##     data = base1_mazdacol)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.40126 -0.05946  0.00066  0.07333  1.04225 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         -1.236e+02  8.045e+00 -15.361  < 2e-16 ***
## kilometraje         -2.627e-07  3.696e-07  -0.711 0.477655    
## modelo               7.013e-02  3.982e-03  17.611  < 2e-16 ***
## transmisionMecánica -8.161e-02  2.347e-02  -3.477 0.000578 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.202 on 310 degrees of freedom
## Multiple R-squared:  0.7213, Adjusted R-squared:  0.7186 
## F-statistic: 267.4 on 3 and 310 DF,  p-value: < 2.2e-16
par(mar = c(4, 4, 2, 2))
plot(modelo5)