Punto 1

Numeral A

load("C:/Users/Andre/Downloads/moluscos.RData")
head(BD_moluscos)
c_agua molusco cons_o
100 A 7.16
100 A 8.26
100 A 6.78
100 A 14.00
100 A 13.60
100 A 11.10
## tibble [48 × 3] (S3: tbl_df/tbl/data.frame)
##  $ c_agua : num [1:48] 100 100 100 100 100 100 100 100 100 100 ...
##  $ molusco: chr [1:48] "A" "A" "A" "A" ...
##  $ cons_o : num [1:48] 7.16 8.26 6.78 14 13.6 11.1 8.93 9.66 6.14 6.14 ...

El dataset original está integrado por tres variables y 48 registros. Las variables “cantidad de agua” y “consumo de oxígeno” son cuantitativas continuas, y la variable “molusco” es cualitativa nominal.

Variable Valores_únicos
Consumo de agua 3
Molusco 2
Consumo de oxígeno 41

Al explorar los valores únicos se observa que la variable “consumo de agua” sólo toma uno de tres valores. De modo que se comporta más como una variable categórica que como una cuantitativa. Por su parte, la variable “molusco” sólo toma uno de dos valores. Esto cumple con las características esperadas para el diseño de experimentos previsto.

BD_moluscos$molusco <- as.factor(BD_moluscos$molusco)
BD_moluscos$c_agua <- as.factor(BD_moluscos$c_agua)

Una vez hechos los ajustes, se obtiene el siguiente resumen:

##  c_agua   molusco     cons_o      
##  50 :16   A:24    Min.   : 1.800  
##  75 :16   B:24    1st Qu.: 6.312  
##  100:16           Median : 9.700  
##                   Mean   : 9.305  
##                   3rd Qu.:11.232  
##                   Max.   :18.800

  • Una tercera parte de las observaciones corresponde a cada uno de los tres niveles de consumo de agua, a saber: 50, 75 y 100.
  • La mitad de los registros corresponde al molusco “A” y la mitad corresponde al molusco “B”.
  • El “consumo de oxígeno” mínimo es 1.800, el máximo es 18.800, y el promedio es 9.305.
  • La distribución de la variable “consumo de oxígeno” es aproximadamente normal.
library(ggplot2)
library(hrbrthemes)
library(dplyr)
library(tidyr)
library(viridis)

p4 <- ggplot(data=BD_moluscos, aes(x=cons_o, group=c_agua, fill=factor(c_agua))) +
    geom_density(adjust=1.5, alpha=.4) +
    theme_ipsum()
p4 <- p4   + theme(legend.position="bottom")


p5 <- ggplot(data=BD_moluscos, aes(x=cons_o, group=molusco, fill=molusco)) +
      geom_density(adjust=1.5, alpha=.4) +
    theme_ipsum()
p5 <- p5   + theme(legend.position="bottom")


ggarrange(p4, p5,  ncol=2, nrow =1, labels = c("Consumo O VS. Cantidad Agua ","Consumo O VS. Moluscos"))

En las gráficas de exploración bivariada se observa lo siguiente:

  • Las gráficas de distribución muestran un comportamiento aproximadamente normal. Sin embargo, se puede resaltar que el consumo de oxígeno de una concentración de agua de mar de 75 es leptocúrtica.

  • La superposición entre las gráficas de densidad de consumo de oxígeno por tipo de molusco parecieran sugerir que no hay una gran diferencia en el consumo de oxígeno de los dos tipos de molusco.

  • Aunque también hay alguna superposición entre las gráficas de densidad de consumo de oxígeno por nivel de concentración de agua, al menos una de ellas pareciera distinguirse de las otras dos, lo que podría aportar poder de discriminación.

mod1 <- lm(cons_o ~ molusco + c_agua, BD_moluscos)
summary(mod1)
## 
## Call:
## lm(formula = cons_o ~ molusco + c_agua, data = BD_moluscos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.1750 -1.9877 -0.7019  2.1244  6.1450 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  12.9463     0.8521  15.193  < 2e-16 ***
## moluscoB     -1.3913     0.8521  -1.633  0.10966    
## c_agua75     -5.2581     1.0436  -5.038 8.49e-06 ***
## c_agua100    -3.5794     1.0436  -3.430  0.00132 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.952 on 44 degrees of freedom
## Multiple R-squared:  0.3986, Adjusted R-squared:  0.3575 
## F-statistic: 9.719 on 3 and 44 DF,  p-value: 4.866e-05
ggplot(BD_moluscos,aes(x=factor(c_agua),y=cons_o,fill=factor(c_agua)))+
geom_boxplot()+theme_bw()+scale_fill_brewer()+facet_grid(~molusco)

Un análisis de la gráfica que combia las tres variables permite evidenciar que:

  • El consumo de oxígeno pareciera ser distinto para las distintas concentraciones de agua de mar, y especialmente alta para la concentración del 50%.

  • El patrón enunciado en el punto anterior se mantiene para los dos grupos de moluscos.

Numeral B

BD_moluscos$c_agua <- as.factor(BD_moluscos$c_agua)
tapply(BD_moluscos$cons_o, BD_moluscos$c_agua, mean)
##       50       75      100 
## 12.25062  6.99250  8.67125
names(BD_moluscos)
## [1] "c_agua"  "molusco" "cons_o"
BD_moluscos$c_agua <- as.factor(BD_moluscos$c_agua)

El modelo de diseño de experimentos estimado para evaluar el efecto de la concentración de agua de mar y los tipos de molusco sobre el consumo oxigeno es el siguiente:

model1 <- lm(cons_o ~ ., data=BD_moluscos)
model1
## 
## Call:
## lm(formula = cons_o ~ ., data = BD_moluscos)
## 
## Coefficients:
## (Intercept)     c_agua75    c_agua100     moluscoB  
##      12.946       -5.258       -3.579       -1.391
summary(model1)
## 
## Call:
## lm(formula = cons_o ~ ., data = BD_moluscos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.1750 -1.9877 -0.7019  2.1244  6.1450 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  12.9463     0.8521  15.193  < 2e-16 ***
## c_agua75     -5.2581     1.0436  -5.038 8.49e-06 ***
## c_agua100    -3.5794     1.0436  -3.430  0.00132 ** 
## moluscoB     -1.3913     0.8521  -1.633  0.10966    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.952 on 44 degrees of freedom
## Multiple R-squared:  0.3986, Adjusted R-squared:  0.3575 
## F-statistic: 9.719 on 3 and 44 DF,  p-value: 4.866e-05

En una primera impresión de los resultados, a partir de la interpretación de los coeficientes del modelo, se tiene que el valor promedio del consumo de oxígeno para cada una de las combinaciones de las variables regresoras es el siguiente:

table <- data.frame(
c("11.555", "6.297", "7.976"),
c("12.946", "7.688", "9.367")
)
rownames(table) <- c("c_agua_50", "c_agua_75", "c_agua_100")
colnames(table) <- c("Molusco_B", "Molusco_A")
table
Molusco_B Molusco_A
c_agua_50 11.555 12.946
c_agua_75 6.297 7.688
c_agua_100 7.976 9.367

Con los resultados obtenidos hasta ahora se pude decir que la combinación que tiene el mayor nivel de consumo de oxígeno promedio es “concentración de agua de mar 50%” y “molusco A” , alcanzando 12,946. En contraparte, la combinación que tiene el menor nivel de consumo promedio es concentración de agua de mar 75%“” y “molusco B”.

Al examinar con mayor detalle el valor de probabilidad de los coeficientes, se tiene que el valor de probabilidad de la variable moluscos es 0.10966, y por tanto no es significativa.

Ahora, para evaluar si la diferencia entre las medias de todas las combinaciones es significativa, se realiza el análisis de varianzas.

anova(model1)
Df Sum Sq Mean Sq F value Pr(>F)
c_agua 2 230.81603 115.408015 13.245654 0.0000314
molusco 1 23.22692 23.226919 2.665809 0.1096627
Residuals 44 383.36745 8.712897 NA NA

Dado que la hipótesis nula es que no existen diferencia estadística entre las medias de los grupos, el valor de probabilidad del estadístico F arroja que solo la variable “concentración de agua de mar” tiene diferencias significativa entre las medias de sus grupos.

Para determinar las diferencias específicas entre los niveles de concentración de agua de mar, se plantea el uso de la prueba de Tukey. Así, se podrá identificar a cuáles grupos específicos responden las posibles diferencias en media identificadas por el test Anova.

TukeyHSD(aov(model1))
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = model1)
## 
## $c_agua
##             diff        lwr       upr     p adj
## 75-50  -5.258125 -7.7893709 -2.726879 0.0000250
## 100-50 -3.579375 -6.1106209 -1.048129 0.0037144
## 100-75  1.678750 -0.8524959  4.209996 0.2527584
## 
## $molusco
##         diff       lwr       upr     p adj
## B-A -1.39125 -3.108545 0.3260451 0.1096627

Por un lado, el test de Tukey indica que no existen diferencia en el nivel de consumo de oxígeno entre los dos tipos de moluscos.

Por otro lado, para la opciones entre la variable “concentración de agua de mar”, los resultados indican que no existe diferencia significativa entre los niveles 75 y 100, contrario a los demás grupos comparados, donde si se observan diferencias.

Si se grafican estos resultados, se tiene lo siguiente:

anova = aov(model1)
intervals = TukeyHSD(anova)
par(mfrow=c(2,1))
plot(intervals)

Utilizando la lógica de los intervalos de confianza, si el cero está contenido en un intervalo, no se puede rechazar la hipótesis nula de que esta diferencia entre las opciones comparadas es igual a cero.

Punto 2

## 'data.frame':    45 obs. of  5 variables:
##  $ Biomasa  : num  765 954 828 755 896 ...
##  $ pH       : num  5 4.7 4.2 4.4 5.55 5.5 4.25 4.45 4.75 4.6 ...
##  $ Salinidad: int  33 35 32 30 33 33 36 30 38 30 ...
##  $ Zinc     : num  16.5 14 15.3 17.3 22.3 ...
##  $ Potasio  : num  1442 1299 1154 1045 522 ...

Se tiene una base de datos integrada por 5 variables cuantitativas continuas.

summary(Salinidad)
##     Biomasa             pH          Salinidad          Zinc        
##  Min.   : 369.8   Min.   :3.200   Min.   :24.00   Min.   : 0.2105  
##  1st Qu.: 654.8   1st Qu.:3.450   1st Qu.:27.00   1st Qu.:13.9852  
##  Median : 991.8   Median :4.450   Median :30.00   Median :19.2420  
##  Mean   :1082.2   Mean   :4.609   Mean   :30.27   Mean   :17.8308  
##  3rd Qu.:1346.9   3rd Qu.:5.350   3rd Qu.:33.00   3rd Qu.:22.6758  
##  Max.   :2337.3   Max.   :7.450   Max.   :38.00   Max.   :31.2865  
##     Potasio      
##  Min.   : 350.7  
##  1st Qu.: 527.0  
##  Median : 773.3  
##  Mean   : 797.4  
##  3rd Qu.: 954.1  
##  Max.   :1441.7

De la exploración inicial de los registros se tiene que: - La Biomasa tiene un valor mínimo de 369.8, máximo de 2337.3 y promedio de 1082.2. - El pH tiene un valor mínimo de 3.20, máximo de 7.45 y promedio de 4.61. - La Salinidad tiene un valor mínimo de 24, máximo de 38 y promedio de 30.27. - El Zinc tiene un valor mínimo de 0.21, máximo de 31.28 y promedio de 17.83 - El Potasio tiene un valor mínimo de 350.7 , máximo de 1441.7 y promedio de 797.4

Numeral A

ggpairs(Salinidad, lower = list(continuous = "smooth"),
        diag = list(continuous = "barDiag"), axisLabels = "none")

En el gráfico se pueden observar un histograma de cada variable, un gráfico de dispersión para cada pareja de datos y los coeficientes de correlación entre las covariables.

Al considerar los histogramas, pareciera que ninguna de las variables parece distribuirse de forma completamente normal. Al analizar los diagramas de dispersión entre covariables es posible reconocer un caso de relación fuerte y directamente proporcional, y dos casos de relación lineal moderada e inversamente proporcional, los cuales se examinarán a continuación.

corrplot.mixed(cor(Salinidad), order = 'AOE')

En el gráfico se pueden observar los tres casos de asociación lineal más importantes anunciados. Por un lado, se tiene una relación lineal fuerte y directa entre el pH y la Biomasa (r=0.93). Por otro lado, se observan dos casos de relación lineal moderada e inversa, una entre el Zinc y la Biomasa (r=-0.78) y la otra entre el Zinc y el pH (r=-0.72).

Es de especial interés la relación identificada entre el Zinc y el pH porque su inclusión en el modelo podría generar problemas de multicolinealidad.

Numeral B.

A continuación se presenta el modelo de regresión lineal múltiple propuesto para explicar la biomasa en función de las covariables.

model<-lm(Biomasa ~ ., data = Salinidad)
summary(model)
## 
## Call:
## lm(formula = Biomasa ~ ., data = Salinidad)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -293.98  -88.83   -9.48   88.20  387.27 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 1492.8076   453.6013   3.291 0.002091 ** 
## pH           262.8829    33.7304   7.794 1.51e-09 ***
## Salinidad    -33.4997     8.6525  -3.872 0.000391 ***
## Zinc         -28.9727     5.6643  -5.115 8.20e-06 ***
## Potasio       -0.1150     0.0819  -1.404 0.167979    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 158.9 on 40 degrees of freedom
## Multiple R-squared:  0.9231, Adjusted R-squared:  0.9154 
## F-statistic:   120 on 4 and 40 DF,  p-value: < 2.2e-16

En primer lugar, el valor de probabilidad de la prueba t determina el significancia de cada una de las covariables. Siendo que la \(H_0\) es que los coeficientes son cero, los resultado obtenidos para las variables pH, Salinidad y Zinc permiten asumir que se trata de coeficientes distintos de cero. Por el contrario, el resultado del Potasio lo clasifica como una variable no significativa para el modelo y por tanto se lo excluye de la siguiente parte del análisis.

En segundo lugar, el significado de los coeficientes de correlación parciales significativos es el siguiente:

El \(B_0\) mide el valor promedio de la Biomasa si el PH, la Salinidad y el Zinc son cero. En ese caso el valor promedio de la Biomasa sería 1492.81.

El \(B_1\) mide el cambio en el valor promedio de la Biomasa por unidad de cambio del PH con la Salinidad y el Zinc constantes. Así, por cada unidad adicional de pH, en las condiciones anunciadas, se incrementa la Biomasa en promedio en 262.88.

El \(B_2\) mide el cambio en el valor promedio de la Biomasa por cada una unidad de cambio de la Salinidad con el pH y el Zinc constantes. Así, por cada unidad adicional de Salinidad, en las condiciones anunciadas, la Biomasa disminuye en promedio en 33.49.

El \(B_3\) mide el cambio en el valor promedio de la Biomasa por cada una unidad de cambio del Zinc con el pH y la Salinidad constantes. Así, por cada unidad adicional de Zinc, en las condiciones anunciadas, la Biomasa disminuye en promedio en 28.97

En tercer lugar, el \(R^2\) = 0.9231 y \(R^2 Ajustado\) = 0.9154 son medidas de bondad del ajuste del modelo a los datos analizados, y tomando este último de referencia, indica que el modelo puede explicar el 91,54% de la variación de la Biomasa en función de las variables regresoras.

model<-lm(log(Biomasa)~log(pH) + log(Salinidad) + log(Zinc) + log(Potasio), data = Salinidad)
#summary(model)
library(dgof)

table2 <- data.frame(c("t", "KS", "Goldfeld-Quandt", "Durbin Watson"),
                     c(t.test(summary(model)$residuals)$p.value, 
                       ks.test(model$residuals,"pnorm")$p.value,
                       lmtest::gqtest(model)$p.value,
                       lmtest::dwtest(model)$p.value))

colnames(table2) <- c("Prueba"," P-Valor")
table2
Prueba P-Valor
t 1.0000000
KS 0.0000332
Goldfeld-Quandt 0.1897359
Durbin Watson 0.0019595

Una evaluación de los supuestos de los residuos a través de pruebas estadísticas conduce a la conclusión de que el modelo no cumple los supuestos de normalidad e independencia de los residuos. Este resultado debería se un insumo para la búsqueda de alternativas para obtener un mejor modelo, cuestión que se intentó solucionar con diferentes transformaciones sin obtener un resultado satisfactorio.

Punto 3

Numeral 1

Por medio de web scraping descargar la base de datos de precios de vehículos Mazda 2 para Colombia del portal olx, on las variables: precio, modelo, transmisión y ciudad.

Se empleó la herramienta Web Scraper para extraer el registro de los anuncios publicados para el vehículo Mazda 2 con las variables requeridas; a continuación se presenta el proceso de limpieza y transformación del datafram resultante, de al forma que permita realizar construir y analizar el modelo propuesto.

mazda <- read_excel("C:/Users/Andre/Downloads/mazda2.xlsx")
mazda$kilometraje=as.numeric(str_replace_all(mazda$kilometraje, "[km ,.]", ""))
mazda$precio=as.numeric(str_replace_all(mazda$precio,"[$,.]",""))
mazda$anio=as.numeric(mazda$anio)
mazda=filter(mazda,grepl("2",modelo,ignore.case=TRUE))
mazda=filter(mazda,modelo!="B2200")
mazda$modelo <- gsub("Mazda 2", "SEDAN", mazda$modelo)
mazda$modelo <- gsub("2 SEDAN", "SEDAN", mazda$modelo)
mazda$modelo <- gsub("2 HATCHBACK", "HATCHBACK", mazda$modelo)
mazda$modelo <- gsub("2", "SEDAN", mazda$modelo)
  
mazda$descripcion=toupper(mazda$descripcion)
mazda$modelo <- gsub("TRUE", "GRAND", mazda$modelo)
  
Tipo <- grepl("GRAND TOURING|GT|TURIN|TURÍN|TURING|TOURING",mazda$descripcion)
mazda=cbind(mazda,Tipo)
mazda$Tipo<- gsub("TRUE", "GT", mazda$Tipo)
mazda$Tipo<- gsub("FALSE", "CLASSIC", mazda$Tipo)
  
submodelo_LX <- grepl(" LX ",mazda$descripcion)
submodelo_LX<- gsub(TRUE, "LX",submodelo_LX)
submodelo_LX<- gsub(FALSE,"",submodelo_LX)
submodelo_MT <- grepl(" MT ",mazda$descripcion)
submodelo_MT<- gsub(TRUE, "MT",submodelo_MT)
submodelo_MT<- gsub(FALSE,"",submodelo_MT)
submodelo_AT <- grepl(" AT ",mazda$descripcion)
submodelo_AT<- gsub(TRUE, "AT",submodelo_AT)
submodelo_AT<- gsub(FALSE,"",submodelo_AT)
submodelo= gsub(" ","",paste(mazda$submodelo_AT,mazda$submodelo_LX,mazda$submodelo_MT))

mazda=cbind(mazda,submodelo_LX,submodelo_MT,submodelo_AT)
submodelo=str_remove_all(paste(submodelo_LX,submodelo_MT,submodelo_AT)," ")
mazda=cbind(mazda,submodelo)

mazda$submodelo_AT=NULL
mazda$submodelo_LX=NULL
mazda$submodelo_MT=NULL

mazda <- mazda %>% 
  mutate(submodelo = ifelse(submodelo == '',"Basic",submodelo))

mazda$`web-scraper-order`=NULL
mazda$`web-scraper-start-url`=NULL
mazda$link=NULL
mazda$`link-href`=NULL
mazda$ciudad=NULL
mazda$descripcion=NULL

Numeral 2

Realizar una exploración de datos para evaluar la posible relación entre precio con las demás variables.

ggplot(mazda,aes(x=transmision,y=precio,fill=factor(transmision)))+
geom_boxplot()+theme_bw()+scale_fill_brewer()

ggplot(mazda,aes(x=submodelo,y=precio,fill=factor(submodelo)))+
geom_boxplot()+theme_bw()+scale_fill_brewer()

par(mfrow=c(1:2))
plot(mazda$anio,mazda$precio,xlab="Anio",ylab="Precio")
plot(mazda$kilometraje,mazda$precio,xlab="Kilometraje",ylab="Precio")

Al realizar un análisis bivariado entre la transmisión y el precio, es posible observar que los vehículos con una transmisión mecánica tienen un precio significativamente menor que los que poseen otro tipo de tranmisión (Automática o Automática Secuencial); además, los modelos AT y LX también tienen un precio significativamente superior con respecto a los modelos Basic y MT.

Por otra parte, si realizamos un análisis de las variables cuantitativas, podemos observar que existe una relación directamente proporcional entre el año del vehículo y su preccio, así como una relación inversamente proporcional entre el kilometraje recorrido y el precio.

Numeral 3

Proponer un modelo de regresión lineal múltiple e interpretar los resultados (betas).

str(mazda)
## 'data.frame':    336 obs. of  7 variables:
##  $ precio     : num  22000000 55000000 42000000 57000000 47000000 40000000 44000000 38500000 32000000 28000000 ...
##  $ anio       : num  2011 2016 2014 2017 2016 ...
##  $ kilometraje: num  102000 94000 60000 58600 80000 ...
##  $ modelo     : chr  "SEDAN" "SEDAN" "SEDAN" "HATCHBACK" ...
##  $ transmision: chr  "Mecánica" "Automática" "Mecánica" "Mecánica" ...
##  $ Tipo       : chr  "CLASSIC" "GT" "CLASSIC" "GT" ...
##  $ submodelo  : chr  "Basic" "Basic" "Basic" "Basic" ...
model_mazda=lm(precio~.,mazda)
summary(model_mazda)
## 
## Call:
## lm(formula = precio ~ ., data = mazda)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -11850902  -2539609   -342374   2653192  15669256 
## 
## Coefficients:
##                                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                      -6.433e+09  1.969e+08 -32.669  < 2e-16 ***
## anio                              3.219e+06  9.755e+04  33.001  < 2e-16 ***
## kilometraje                      -2.807e+01  7.488e+00  -3.748 0.000211 ***
## modeloSEDAN                       1.062e+05  4.750e+05   0.224 0.823207    
## transmisionAutomática Secuencial  1.306e+05  9.243e+05   0.141 0.887701    
## transmisionMecánica              -2.965e+06  5.135e+05  -5.774 1.82e-08 ***
## TipoGT                            4.989e+06  7.111e+05   7.016 1.36e-11 ***
## submodeloBasic                   -2.252e+06  1.458e+06  -1.544 0.123535    
## submodeloLX                       5.436e+06  1.601e+06   3.395 0.000772 ***
## submodeloMT                      -9.976e+05  2.167e+06  -0.460 0.645578    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4239000 on 322 degrees of freedom
##   (4 observations deleted due to missingness)
## Multiple R-squared:  0.9485, Adjusted R-squared:  0.947 
## F-statistic: 658.5 on 9 and 322 DF,  p-value: < 2.2e-16
cor(mazda$precio,mazda$anio)
## [1] 0.9555599
cor(mazda$precio,mazda$kilometraje)
## [1] -0.7442694
cor(mazda$anio,mazda$kilometraje)
## [1] -0.7327831

Al depurar la base de datos, se obtiene un total de 7 variables, de las cuales 2 son numéricas: precio, y kilometraje y 5 categóricas: anio, modelo, transmisión, tipo y submodelo.

Luego, al analizar los p-values de estas variables en un modelo de regresión lineal en el que la variable independiente es el precio, es posible afirmar que las variables con un alto nivel de significancia para el modelo son: Intercepto, Año, Kilometraje, Contar con una transmisión Mecánica, ser del tipo GT y ser un submodelo LX.

Además, los coeficientes de correlación entre las 3 variables numéricas son:

Precio~Anio = 0.9555599 Precio~Kilometraje= -0.7442694 Kilometraje~Anio= -0.7327831

plot(model_mazda)

table3 <- data.frame(c("t", "Shapiro", "Goldfeld-Quandt", "Durbin Watson"),
                     c(t.test(summary(model_mazda)$residuals)$p.value, 
                       shapiro.test(model_mazda$residuals)$p.value,
                       lmtest::gqtest(model_mazda)$p.value,
                       lmtest::dwtest(model_mazda)$p.value))

colnames(table3) <- c("Prueba"," P-Valor")
table3
Prueba P-Valor
t 1.0000000
Shapiro 0.0043513
Goldfeld-Quandt 0.4122219
Durbin Watson 0.0663778

Por último, se realizan las 4 gráficas de validación de supuestos del modelo, así como las 4 pruebas estadísticas correspondientes, donde es posible afirmar que el modelo cumple la mayor parte de los supuestos, exceptuando la normalidad, por lo cual podría ser pertinente analizar posibles transformaciones en las variables del modelo que permitiesen satisfacer la totalidad de los supuestos.

Numeral 4

Validar el poder predictivo del modelo con Validación Cruzada.

mazda= mazda %>%
drop_na()

set.seed(125)
train_control <- trainControl(method = "repeatedcv",number = 10, repeats = 3)
model <- train(precio ~., data = mazda,method = "lm",trControl = train_control)
print(model)
## Linear Regression 
## 
## 332 samples
##   6 predictor
## 
## No pre-processing
## Resampling: Cross-Validated (10 fold, repeated 3 times) 
## Summary of sample sizes: 300, 300, 297, 299, 298, 299, ... 
## Resampling results:
## 
##   RMSE     Rsquared   MAE    
##   4253764  0.9490331  3300234
## 
## Tuning parameter 'intercept' was held constant at a value of TRUE
4270221/mean(mazda$precio)
## [1] 0.08354829
3322876/mean(mazda$precio)
## [1] 0.06501317

Al realizar validación cruzada, es posible observar un coeficiente de determinación (\(R^2\)) de 0.9486, de lo cual se puede afirmar que el modelo permite explicar el 94.86% de las variaciones en el precio del vehículo Mazda 2 en función de las variables predictoras. Además, el valor del RMSE es de 4.270.221, correspondiente a un 8.35% del promedio del precio y del MAE de 3.322.876, siendo un 6.5% del promedio del precio.

Numeral 5

Discutir potenciales usos del modelo como herramienta práctica (Como monetizar los resultados de este modelo).

Los usos potenciales del modelo serían: permitir la obtención de información sobre cualquier artículo cuyo precio esté disponible online, extraer sus características, y estar en capacidad de predecir el valor para la adquisición de dicho producto; para este caso tenemos automóviles, sin embargo, podrían ser viviendas, celulares, computadores, entre otros artículos.