library(readxl)
base1_mazdacol <- read_excel("~/Downloads/base1_mazdacol.xlsx")
View(base1_mazdacol)

#Modelo simple No.1 ##Y=precio ##X1=kilkometraje

y=base1_mazdacol$precio
x=base1_mazdacol$kilometraje
plot(x,y)

cor(x,y)
## [1] -0.6543672

###Se evidencia una relación inversa, pues el coeficientede correlacion de pearson es de -0.65: es decir que a mayor kilometraje, menor precio

require(ggplot2)
## Loading required package: ggplot2
require(plotly)
## Loading required package: plotly
## 
## Attaching package: '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
require(datarium)
## Loading required package: datarium
g1=ggplot(data=base1_mazdacol,mapping = aes(x=kilometraje,y=precio))+geom_point()+theme_bw()+
  geom_smooth()
ggplotly(g1)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
g1=ggplot(data = base1_mazdacol,mapping = aes(x=kilometraje))+geom_histogram(fill="purple")+theme_bw()
ggplotly(g1)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
mod_simple=lm(y~x)
mod_simple
## 
## Call:
## lm(formula = y ~ x)
## 
## Coefficients:
## (Intercept)            x  
##  72271766.3       -290.7

###Y=72271766.3-290.7X, quiere decir que por cada kilometro adicional se espera que el precio baje 290 mil pesos

summary(mod_simple)
## 
## 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)  7.227e+07  1.675e+06   43.15   <2e-16 ***
## x           -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

###Este modelo explica el 43% de la variabilidad del precio de los vehiculos

#Modelo simple No. 2 ##Y=precio ##X=modelo(año)

y=base1_mazdacol$precio
x2=base1_mazdacol$modelo
plot(x2,y)

###Se observa a simple vista que el ambas variables presentan una relacion directa, es decir que entre mas reciente sea el modelo del vehiculo (x2), mayor será el precio. Sin embargo, se corrobará esto.

cor(x2,y)
## [1] 0.8295419

###El coeficiente de correlación de pearson respalda lo dicho anteriormente. Pues, este arrojó un resultado de 0.82. Lo que significa una relación positiva y muy cercana a 1

require(ggplot2)
require(plotly)
require(datarium)
g1=ggplot(data=base1_mazdacol,mapping = aes(x=modelo,y=precio))+geom_point()+theme_bw()+
  geom_smooth()
ggplotly(g1)
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
g1=ggplot(data = base1_mazdacol,mapping = aes(x=modelo))+geom_histogram(fill="purple")+theme_bw()
ggplotly(g1)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
mod_simple=lm(y~x2)
mod_simple
## 
## Call:
## lm(formula = y ~ x2)
## 
## Coefficients:
## (Intercept)           x2  
##  -7.889e+09    3.940e+06

###El modelo establece que por cada año que aumente el modelo del vehiculo, el precio de este aumentará 3 millones

summary(mod_simple)
## 
## Call:
## lm(formula = y ~ x2)
## 
## 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 ***
## x2           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

###Este modelo explica el 68% de la variabilidad de los datos del precio

#Modelo simplre No.3 ##Y=precio ##X3=transmision

y=base1_mazdacol$precio
x3=base1_mazdacol$transmision
knitr::opts_chunk$set(echo = TRUE)
library(ggplot2)
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  
##                                                          
##                                                          
## 
ggplot(base1_mazdacol, aes(x = transmision, y = precio)) +
  geom_boxplot() +
  labs(x = "transmision", y = "precio") +
  theme_minimal()

###Este grafico de dispersion de los datos con variable categoricas. Se muestra que. la mayoria de los vehiculos con transmision automatica se venden por mas de 50 millones de pesos, mientras que los de transmision mecanica se venden por debajo de este rango de precio

modelo <- lm(y ~ x3, data = base1_mazdacol)
summary(modelo)
## 
## Call:
## lm(formula = y ~ x3, 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 ***
## x3Mecá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

###Este modelo no es del todo adecuado para la justificacion de la variablidad del precio,pues explica unicamente el 9% de las variaciones

###ya establecidos los tres modelos, se selecciona al modelo que tiene como variable independiente el modelo, pues este explica un mayor porcentaje de la variabilidad de los precios con respecto a los demas modelos. Por lo cual este será el utilizado para la predicción

##Cual seria el valor estimado de ganancia para un lote de 20 carros nuevos modelo 2026?

#Escenario Promedio
y_mod=predict(mod_simple,list(x2=2026))
ganancia_carro=y_mod
ganancia_total_media=ganancia_carro*20

#Escenario Bajo y Alto
MAE=mean(abs(mod_simple$residuals))
y_mod_min=y_mod-MAE
y_mod_max=y_mod+MAE

ganancia_total_inf=y_mod_min*20
ganancia_total_sup=y_mod_max*20

c(ganancia_total_inf,ganancia_total_media,ganancia_total_sup)
##          1          1          1 
## 1771472453 1886511782 2001551112

###Dado el modelo de predicción en el peor escenario se esperan vender los 20 carros por un total de 1.771.472.453 pesos; es decir cada carro a 88.573.622 pesos. En el escenario promedio se espera vender los vehiculos en 1.886.511.782 pesos a 94.325.589 pesos cada uno. Ya en el mejor escenario se plantea vender los carros en 2.001.551.112 pesos; a 100.077.555 pesos cada uno.

###Este modelo de predicción se acerca bastante a la realidad, pues actualmente el Mazda 2 nuevo modelo 2025 tiene un precio de 80 millones aproximadamente

#Modelo de regresion lineal multiple

y=base1_mazdacol$precio
x1=base1_mazdacol$kilometraje
X2=base1_mazdacol$modelo
plot(base1_mazdacol[,5:6:8])
## Warning in 5:6:8: numerical expression has 2 elements: only the first used

###Omitimos las posibles interpretaciones con la variable transmision por ser una variable cualitativa y momentaneamente se estan evaluando las variables cuantitativas. ###Se aprecia que la relacion que se presenta entre el modelo del vehiculo y el precio de este mismo es una relacion positiva, pues a mayor modelo (es decir más nuevo), mayor preciotendrá. Igualmente ya se demostrará esto

knitr::opts_chunk$set(echo = TRUE)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
base1_mazdacol <- base1_mazdacol %>%
  mutate(modelo_1 = ifelse(modelo == 1, 1, 0),
         modelo_2 = ifelse(modelo == 2, 1, 0),
         modelo_3 = ifelse(modelo == 3, 1, 0),
         transmision_Automatica = ifelse(transmision == "Automatica", 1, 0),
         transmision_Manual = ifelse(transmision == "Manual", 1, 0))
correlation_matrix <- cor(base1_mazdacol[, c("kilometraje", "modelo_1", "modelo_2", "modelo_3", "transmision_Automatica", "transmision_Manual")])
## Warning in cor(base1_mazdacol[, c("kilometraje", "modelo_1", "modelo_2", : the
## standard deviation is zero
summary(modelo)
## 
## Call:
## lm(formula = y ~ x3, 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 ***
## x3Mecá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

###El modelo Precio= Kilometraje + Modelo, da una explicación del 69% a la variabilidad de los precios. Este modelo toma la siguiente forma “y= -7.290 - 3.723x1 + 3.644x2”

y=base1_mazdacol$precio
x1=base1_mazdacol$kilometraje
x2=base1_mazdacol$modelo
x3=base1_mazdacol$transmision
mod_muliple1=lm(y~x1+x2+x3)
summary(mod_muliple1)
## 
## Call:
## lm(formula = y ~ x1 + x2 + x3)
## 
## 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 ***
## x1          -3.539e+01  2.039e+01  -1.736   0.0836 .  
## x2           3.526e+06  2.197e+05  16.045  < 2e-16 ***
## x3Mecá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

###Este modelo en el cual se tienen en cuenta ya la variable cualitativa “transmision”. En este caso. de le logradar explicacion del 70% a la variabilidad de los datos. A pesar de no ser mucha la diferencia con el modelo anterios, este presenta una mayor precisión.

mod_multiple2=step(mod_muliple1)
## Start:  AIC=10194.39
## y ~ x1 + x2 + x3
## 
##        Df  Sum of Sq        RSS   AIC
## <none>               3.8527e+16 10194
## - x1    1 3.7435e+14 3.8901e+16 10195
## - x3    1 2.2470e+15 4.0774e+16 10210
## - x2    1 3.1995e+16 7.0522e+16 10382
summary(mod_multiple2)
## 
## Call:
## lm(formula = y ~ x1 + x2 + x3)
## 
## 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 ***
## x1          -3.539e+01  2.039e+01  -1.736   0.0836 .  
## x2           3.526e+06  2.197e+05  16.045  < 2e-16 ***
## x3Mecá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
plot(x1,y)

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

plot(x1,log(y))

mod_trans=lm(log(y)~x1+x2+x3)
summary(mod_trans)
## 
## Call:
## lm(formula = log(y) ~ x1 + x2 + x3)
## 
## 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 ***
## x1          -2.627e-07  3.696e-07  -0.711 0.477655    
## x2           7.013e-02  3.982e-03  17.611  < 2e-16 ***
## x3Mecá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(mfrow=c(2,2))
plot(mod_trans)