Consideré más conveniente dedicar tiempo a llevar a cabo este análisis y no grabarlo a través de un video porque creo que resulta más cómodo y permanente tener un documento que repasar un video. Pero esto puede ser un sesgo generacional.
En muchas ocasiones, el ajuste de un modelo de regresión lineal múltiple es fácil, y más con las herramientas que se tienen disponible actualmente. Sin embargo, la dificultad no está en ajustar el modelo, sino en el proceso de análisis y decisiones que se tienen que tomar en el camino. Las estrategias de modelado, así como la validación de los supuestos y del modelo ajustado pueden ser más relevantes.
En este notebook, se presentará el procedimiento de análisis que yo sugiero para ajustar un modelo de regresión lineal múltiple, siguiendo los pasos delineados previamente en clase con detalle.
Como ejemplo, se considerará un conjunto de datos que muestra Indicadores de consumo de gasolina en automóviles en México hasta modelos 2018.Los datos disponibles están relacionados con la marca, submarca, modelo, caracteristicas del motor y consumos energéticos en ciudad, carretera y promedio, y con la calificacion de sus emisiones de gas y contaminantes.
El objetivo del análisis es explicar el rendimiento de los autos en función a sus características. Los datos fueron obtenidos de Kagle.
El conjunto de datos consta de las siguientes variables:
En el siguiente análisis, se seguiran los siguientes pasos:
Partimos del siguiente objetivo: queremos entender la relación entre Rendimiento Ajustado (rend_Ajustado) y el resto de las variables. Escogí el rendimiento ajustado porque parece ser una medida que ya toma en cuenta el rendimiento total y que se ajusta para que descuente factores posiblemente que no fueron observados.
En el contexto de estos datos, el objetivo inicial por el que fueron recopilados estos datos era hacer un análisis comparativo de autos más allá de sus equipamientos. Sin embargo, para propósitos de este ejercicio, el objetivo se cambió, aunque esto puede afectar la conveniencia o ausencia de ciertos datos relevantes para el análisis.
La definición de algunas variables no es clara, no se sabe cómo fueron calculadas o como deben interpretarse, así que partimos de algunos supuestos.
Comencemos con ver la estrutuctura de los datos y sus valores. Aquí se usó el parámetro fileEncoding porque el archivo fue exportado con ese formato de codificación (algunas variables tienen acento, por lo que si no se importa correctamente puede ser que altere el formato de los datos).
autos <- read.csv("Autos.csv", fileEncoding = "ISO-8859-1", na.strings = "?")
str(autos) #muestra la estructura general de los datos
'data.frame': 4617 obs. of 18 variables:
$ Marca : chr "FORD" "FORD" "FORD" "FORD" ...
$ Submarca : chr "FUSION" "FUSION" "FUSION" "FUSION" ...
$ Version : chr "HIBRIDO 4PTS 2.0L 4CIL 188HP AUT (CVT)" "HIBRIDO 4PTS 2.0L 4CIL 188HP AUT (eCVT)" "HIBRIDO 4X2 4PTAS 2.0L 4CIL 141(+47e)HP E-CVT" "HIBRIDO 4PTAS 2.0L 4CIL 188HP AUT eCVT" ...
$ Modelo : int 2015 2016 2017 2018 2011 2012 2013 2014 2012 2011 ...
$ Transmision : chr "CVT" "CVT" "CVT" "AUT" ...
$ Combustible : chr "Gasolina" "Gasolina" "Gasolina" "Gasolina" ...
$ Cilindros : int 4 4 4 4 4 4 4 4 4 4 ...
$ Potencia : int 188 188 188 188 156 156 90 90 90 110 ...
$ Tamaño : num 2 2 2 2 2.5 2.5 1.5 1.5 1.5 1.3 ...
$ Categoria : chr "AUTOS COMPACTOS" "AUTOS COMPACTOS" "AUTOS COMPACTOS" "AUTOS COMPACTOS" ...
$ Rend_Ciudad : num 27.4 27.4 25.6 25.6 24 ...
$ Ren_Carretera : num 28.6 28.6 24.8 24.8 21.9 ...
$ Rend_Comb : num 28.9 28.9 25.2 25.2 23 ...
$ Rend_Ajustado : num 21.7 21.7 18.9 18.9 17.3 ...
$ CO2 : int 107 107 123 123 135 135 119 119 127 134 ...
$ Nox : int 5 0 2 2 5 6 7 7 7 10 ...
$ Calificacion_Gas : int 10 10 10 10 9 9 10 10 9 9 ...
$ Calificacion_ContamAire: int 9 9 9 9 9 9 9 9 9 9 ...
la matriz de datos tiene 4,617 observaciones y 18 variables. Notar que se usa el signo de interrogación (?) como una especia de dato faltante, por eso se tuvo que poner esa condición en la lectura de los datos.
summary(autos)
Marca Submarca Version Modelo Transmision
Length:4617 Length:4617 Length:4617 Min. :2011 Length:4617
Class :character Class :character Class :character 1st Qu.:2012 Class :character
Mode :character Mode :character Mode :character Median :2014 Mode :character
Mean :2014
3rd Qu.:2016
Max. :2018
Combustible Cilindros Potencia Tamaño Categoria Rend_Ciudad
Length:4617 Min. : 3.000 Min. : 60 Min. :0.898 Length:4617 Min. : 3.10
Class :character 1st Qu.: 4.000 1st Qu.:150 1st Qu.:1.800 Class :character 1st Qu.: 8.20
Mode :character Median : 4.000 Median :220 Median :2.500 Mode :character Median :10.42
Mean : 5.329 Mean :255 Mean :2.870 Mean :10.60
3rd Qu.: 6.000 3rd Qu.:330 3rd Qu.:3.600 3rd Qu.:12.81
Max. :12.000 Max. :888 Max. :8.400 Max. :27.46
Ren_Carretera Rend_Comb Rend_Ajustado CO2 Nox Calificacion_Gas
Min. : 6.70 Min. : 4.96 Min. : 3.720 Min. :107.0 Min. : 0.0 Min. : 0.000
1st Qu.:13.48 1st Qu.:10.46 1st Qu.: 7.850 1st Qu.:200.0 1st Qu.: 10.0 1st Qu.: 3.000
Median :16.39 Median :12.87 Median : 9.650 Median :243.0 Median : 17.0 Median : 5.000
Mean :16.61 Mean :13.18 Mean : 9.888 Mean :256.5 Mean : 30.8 Mean : 4.885
3rd Qu.:19.60 3rd Qu.:15.61 3rd Qu.:11.710 3rd Qu.:299.0 3rd Qu.: 28.0 3rd Qu.: 7.000
Max. :31.30 Max. :28.93 Max. :21.700 Max. :627.0 Max. :724.0 Max. :10.000
Calificacion_ContamAire
Min. :1.000
1st Qu.:7.000
Median :9.000
Mean :7.896
3rd Qu.:9.000
Max. :9.000
NA's :1238
Podemos ver que la variable que mide la contaminación del aire tiene cerca de la cuarta parte de observaciones con NA’s. Hay que tomar esto en consideración cuando se incluya esta variable en el modelo, pues la regresión se ajustará sólo con los datos disponibles, y eliminará todos los renglones que tenga esta variable con datos perdidos.
Las variables Marca, Submarca y Versión sólo ayudan a identificar diferentes tipos de autos, son variables categóricas que si se incorporan al modelo, deben hacerlo como factores. Sin embargo, hay más de 500 submarcas, y tampoco consideraremos la versión, que tiene que ver con detalles más relacionados con características del vehículo que ya están en otras variables. Nos quedaremos al nivel de marca.
Por otra parte, los factores asociados a la Transmisión, Combustible, Categoría, son variables que servirán para clasificar a los datos, y que naturalmente pueden ser considerados como predictores.
Podemos ver que los datos tienen predictores categóricos y también numéricos.
Podemos hacer una reordenación de los datos, y una gráfica de pares de variables, para identificar primeras relaciones entre las variables. En el siguiente dataframe, quitamos las variables que no nos servirán para el modelo, ponemos la variable de respuesta como primera variable, y el resto de las variables las dejamos en el orden en que están.
autos <- autos %>%
select(Rend_Ajustado, everything()) %>% # reordenamiento de variables
mutate(Modelo = factor(Modelo), # el año del modelo es un factor, y no un número
Marca = factor(Marca),
Transmision = factor(Transmision),
Combustible = factor(Combustible),
Categoria = factor(Categoria)) %>%
select(-Submarca, -Version)
head(autos)
Rend_Ajustado Marca Modelo Transmision Combustible Cilindros Potencia Tamaño Categoria Rend_Ciudad
1 21.70 FORD 2015 CVT Gasolina 4 188 2.0 AUTOS COMPACTOS 27.44
2 21.70 FORD 2016 CVT Gasolina 4 188 2.0 AUTOS COMPACTOS 27.44
3 18.92 FORD 2017 CVT Gasolina 4 188 2.0 AUTOS COMPACTOS 25.62
4 18.92 FORD 2018 AUT Gasolina 4 188 2.0 AUTOS COMPACTOS 25.62
5 17.26 FORD 2011 CVT Gasolina 4 156 2.5 AUTOS COMPACTOS 24.00
6 17.26 FORD 2012 CVT Gasolina 4 156 2.5 AUTOS COMPACTOS 24.00
Ren_Carretera Rend_Comb CO2 Nox Calificacion_Gas Calificacion_ContamAire
1 28.57 28.93 107 5 10 9
2 28.57 28.93 107 0 10 9
3 24.77 25.23 123 2 10 9
4 24.77 25.23 123 2 10 9
5 21.90 23.01 135 5 9 9
6 21.90 23.01 135 6 9 9
pairs(autos[,-c(2:6)], pch=16, cex=0.4)
La primera columna de gráficas de este scatterplot contiene las gráficas de respuesta marginales, que muestran las relaciones de cada predictor con la respuesta.
En la gráfica hay varias cosas que podemos observar para hacer una depuración inicial del conjunto de datos:
El rendimiento combinado y el rendimiento ajustado son prácticamente colineales. Entonces una variable parece ser redundante, y por lo tanto, podemos quitar el rendimiento combinado.
La variable CO2 parece guardar una relación funcional exacta salvo algún factor con la variable de Rendimiento Ajustado, aunque no es una relación lineal, pero que también guarda una fuerte relación con la variable Calificacion_Gas. Entonces CO2 podría ser una variable también a eliminar del conjunto de datos.
Podemos ver que el rendimiento en carretera están fuertemente correlacionados, pero no necesariamente siguen una relación funcional exacta. Lo más que podemos decir es que las medias condicionales de las dos variables parecen ser lineas rectas, pero pueden retener información importante para explicar variación con respecto al rendimiento ajustado.
Después de las consideraciones anteriores, se puede actualizar la gráfica eliminando las variables que consideramos redundantes.
autos2 <- autos %>%
select(-Rend_Comb, -CO2)
pairs(autos2[,-c(2:5,9)], pch=16, cex=0.4)
Con el conjunto de datos elegido, podemos hacer algunas gráficas adicionales para ver correlaciones, el impacto de las variables factores en la variable de respuesta, y algunos histogramas para ver el comportamiento de las distribuciones marginales.
La siguiente gráfica muestra las correlaciones entre variables, pero además las agrupa de acuerdo a su nivel de correlación (eso es lo que hace la opción hclust).
corrplot(cor(autos2[,-c(2:5,9)], use = "complete.obs"), method = "ellipse",
diag = T, order = "hclust",tl.cex = 0.5)
El año del Modelo del vehículo parece marcar un ligero cambio a partir de 2015.
boxplot(autos2$Rend_Ajustado ~ autos2$Modelo)
En todos los casos en donde se hace un análisis contra una variable que divide los datos en grupos, se puede hacer una prueba de igualdad de medias. EL siguiente análisis de varianza, evaluá la hipótesis de igualdad de medias.
summary(aov(Rend_Ajustado ~ Modelo + Transmision + Combustible, data = autos2))
Df Sum Sq Mean Sq F value Pr(>F)
Modelo 7 2727 389.5 70.41 < 2e-16 ***
Transmision 24 5549 231.2 41.79 < 2e-16 ***
Combustible 1 79 78.5 14.19 0.000167 ***
Residuals 4584 25360 5.5
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
En este caso, la hipótesis de medias iguales se rechaza.
El tipo de transmisión parece tener efectos diversos sobre el rendimiento:
boxplot(autos2$Rend_Ajustado ~ autos2$Transmision, cex=0.6, horizontal=T, las=2,
cex.axis=0.4)
El tipo de combustible usado también tiene un ligero efecto sobre el rendimiento, pero es significativo, por lo que debe ser tomado en cuenta en la modelación.
boxplot(autos2$Rend_Ajustado ~ autos2$Combustible)
summary(aov(Rend_Ajustado ~ Combustible, data=autos2))
Df Sum Sq Mean Sq F value Pr(>F)
Combustible 1 300 300.28 41.47 0.000000000132 ***
Residuals 4615 33414 7.24
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Por último, los autos subcompactos y compactos tienen un mayor rendimiento que las otras categorías de vehículos.
boxplot(autos2$Rend_Ajustado ~ autos2$Categoria, las = 2, cex.axis = 0.5)
En conclusión, todos los factores paracen tener un efecto en la variable de respuesta, por lo que deben ser tomados en cuenta para la construcción de un modelo.
Podemos hacer el análisis de varianza considerando tanto las variables como sus posibles interacciones de manera conjunta, en donde podemos reafirmar la significancia de las relaciones:
summary(aov(Rend_Ajustado ~ Modelo*Transmision*Combustible, data = autos2))
Df Sum Sq Mean Sq F value Pr(>F)
Modelo 7 2727 389.5 72.350 < 2e-16 ***
Transmision 24 5549 231.2 42.947 < 2e-16 ***
Combustible 1 79 78.5 14.584 0.000136 ***
Modelo:Transmision 51 573 11.2 2.087 0.0000105159845 ***
Modelo:Combustible 7 141 20.2 3.744 0.000475 ***
Transmision:Combustible 12 403 33.6 6.238 0.0000000000493 ***
Modelo:Transmision:Combustible 24 69 2.9 0.537 0.967609
Residuals 4490 24173 5.4
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Noten que la interacción de las tres variables simultánea no es significativa, pero las interacciones a pares sí lo son.
Por último, podemos hacer unos histogramas para ver las distribuciones marginales de las variables cuantitativas.
par(mfrow=c(3,3))
# Histogramas de las variables de respuesta contra las variables cuantitativas
hist(autos2$Rend_Ajustado, prob=T) #variable de respuesta
hist(autos2$Cilindros, prob=T)
hist(autos2$Potencia, prob=T)
hist(autos2$Tamaño, prob=T)
hist(autos2$Ren_Carretera, prob=T)
hist(autos2$Rend_Ciudad, prob=T)
hist(autos2$Calificacion_ContamAire, prob=T)
De manera individual todas las variables no siguen una distribución normal. Es posible intentar algunas transformaciones que ayuden a obtener normalidad. Por ejemplo, tomando la raíz cuadrada de las variables que presentan un ligero sesgo hacia la derecha (los rendimientos) y tomando el logaritmo de la potencia, obtenemos los siguientes histogramas:
par(mfrow=c(3,3))
# Histogramas de las variables de respuesta contra las variables cuantitativas
hist(sqrt(autos2$Rend_Ajustado), prob=T) #variable de respuesta
hist(autos2$Cilindros, prob=T)
hist(log(autos2$Potencia), prob=T)
hist(autos2$Tamaño, prob=T)
hist(sqrt(autos2$Ren_Carretera), prob=T)
hist(sqrt(autos2$Rend_Ciudad), prob=T)
hist(autos2$Calificacion_ContamAire, prob=T)
Estas transformaciones son parte de la familia de transformaciones Box-Cox, pero podemos ver la mejora inmediata. Podemos hacer los ajustes al conjunto de datos, y aprovechamos para hacer algunos cambios de nombres de variables
autos3 <- autos2 %>%
mutate(Rend_adj = sqrt(Rend_Ajustado),
logPotencia = log(Potencia),
Rend_Carr = sqrt(Ren_Carretera),
Rend_Ciud = sqrt(Rend_Ciudad)) %>%
select(-c(Rend_Ajustado,Ren_Carretera,Rend_Ciudad,Potencia)) %>%
select(Rend_adj,everything())
Podemos ya con lo que se ha avanzado hacer un modelo inicial, que incluya a las variables e incluso algunas de sus interacciones. Por ejemplo, podríamos considerar el tipo de relación que tiene el número de cilindros, el tamaño del vehículo y la potencia. Es aquí donde el analista tiene que entender bien qué variables debe incluir en el modelo, porque puede dejar afuera interacciones importantes o bien, quedarse con un conjunto muy grande de variables.
# El punto inidica que se agregan todas las variables que están en el conjunto, y
# para agregar una interacción
autos3 <- autos3[complete.cases(autos3),] #Sólo considera los casos de datos completos.
m1 <- lm(Rend_adj ~ . + Tamaño:Cilindros + logPotencia:Tamaño + logPotencia:Cilindros + logPotencia:Cilindros:Tamaño, data=autos3)
summary(m1)
Call:
lm(formula = Rend_adj ~ . + Tamaño:Cilindros + logPotencia:Tamaño +
logPotencia:Cilindros + logPotencia:Cilindros:Tamaño, data = autos3)
Residuals:
Min 1Q Median 3Q Max
-0.153594 -0.023623 -0.003244 0.018834 0.193144
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.30646379 0.12558084 10.403 < 2e-16 ***
MarcaALFA ROMEO -0.04356297 0.01877133 -2.321 0.020363 *
MarcaAUDI -0.05309792 0.00801794 -6.622 4.11e-11 ***
MarcaBENTLEY -0.09720859 0.01094898 -8.878 < 2e-16 ***
MarcaBMW 0.06053799 0.00681968 8.877 < 2e-16 ***
MarcaBUICK -0.07829853 0.00918328 -8.526 < 2e-16 ***
MarcaCADILLAC -0.05664498 0.00740051 -7.654 2.54e-14 ***
MarcaCHEVROLET -0.06042279 0.00644088 -9.381 < 2e-16 ***
MarcaCHRYSLER -0.05420850 0.00902578 -6.006 2.11e-09 ***
MarcaDODGE -0.04478621 0.00694669 -6.447 1.31e-10 ***
MarcaFIAT -0.05013127 0.00887870 -5.646 1.78e-08 ***
MarcaFORD -0.03667915 0.00672819 -5.452 5.36e-08 ***
MarcaGMC -0.05965145 0.00967205 -6.167 7.79e-10 ***
MarcaGML -0.11698196 0.02905481 -4.026 5.80e-05 ***
MarcaHONDA -0.00760610 0.00669910 -1.135 0.256294
MarcaHYUNDAI -0.03705793 0.00846541 -4.378 1.24e-05 ***
MarcaINFINITI -0.05200390 0.00807701 -6.439 1.38e-10 ***
MarcaJAGUAR 0.01252278 0.01262905 0.992 0.321473
MarcaJEEP -0.02522999 0.00745531 -3.384 0.000722 ***
MarcaKIA -0.02015036 0.00919555 -2.191 0.028499 *
MarcaLAND ROVER 0.05412143 0.01726432 3.135 0.001734 **
MarcaLEXUS 0.01014975 0.02849979 0.356 0.721763
MarcaLINCOLN -0.05598173 0.00826445 -6.774 1.48e-11 ***
MarcaMAZDA 0.00083584 0.00686863 0.122 0.903152
MarcaMERCEDES 0.03167007 0.00739934 4.280 1.92e-05 ***
MarcaMERCURY -0.03462157 0.02862672 -1.209 0.226590
MarcaMINI 0.04501395 0.00810617 5.553 3.03e-08 ***
MarcaMITSUBISHI -0.05715701 0.00840930 -6.797 1.26e-11 ***
MarcaNISSAN -0.03924388 0.00689815 -5.689 1.39e-08 ***
MarcaPEUGEOT -0.05481702 0.01021507 -5.366 8.59e-08 ***
MarcaPORSCHE -0.06250544 0.00721103 -8.668 < 2e-16 ***
MarcaRENAULT -0.05598935 0.01081932 -5.175 2.42e-07 ***
MarcaROLLSROYCE 0.06713287 0.03006791 2.233 0.025635 *
MarcaSEAT -0.06000046 0.00802742 -7.474 9.88e-14 ***
MarcaSMART 0.04419603 0.01302094 3.394 0.000696 ***
MarcaSUBARU -0.05596648 0.00803376 -6.966 3.91e-12 ***
MarcaSUZUKI -0.06501403 0.00764428 -8.505 < 2e-16 ***
MarcaTOYOTA -0.04952540 0.00733838 -6.749 1.75e-11 ***
MarcaVOLVO -0.02054215 0.00847636 -2.423 0.015427 *
MarcaVW -0.08106712 0.00695979 -11.648 < 2e-16 ***
Modelo2012 0.00705645 0.00296460 2.380 0.017358 *
Modelo2013 0.00894705 0.00297886 3.004 0.002689 **
Modelo2014 0.00894614 0.00309482 2.891 0.003869 **
Modelo2015 0.03364336 0.00323986 10.384 < 2e-16 ***
Modelo2016 0.01974855 0.00294619 6.703 2.39e-11 ***
Modelo2017 0.03014135 0.00318415 9.466 < 2e-16 ***
Modelo2018 0.03550430 0.00493297 7.197 7.57e-13 ***
TransmisionASG -0.01907136 0.02366805 -0.806 0.420425
TransmisionAUT -0.02997601 0.01248708 -2.401 0.016425 *
TransmisionCVT -0.00500183 0.01283677 -0.390 0.696822
TransmisionDCT 0.00152773 0.02693693 0.057 0.954775
TransmisionDSG -0.00845814 0.01353877 -0.625 0.532188
TransmisionDUALOGIC -0.05889343 0.02630463 -2.239 0.025229 *
TransmisionG TRONIC -0.03859900 0.01898510 -2.033 0.042120 *
TransmisionM5 -0.03541781 0.01451242 -2.441 0.014719 *
TransmisionM6 -0.04992154 0.01652179 -3.022 0.002534 **
TransmisionMAN -0.02358954 0.01255635 -1.879 0.060375 .
TransmisionMULTIT -0.04846402 0.01637240 -2.960 0.003097 **
TransmisionMULTITRONIC -0.04912634 0.01546061 -3.178 0.001499 **
TransmisionPDK -0.01945747 0.01325381 -1.468 0.142182
TransmisionR TRONIC 0.00776081 0.03110991 0.249 0.803017
TransmisionS TRONIC -0.02146848 0.01444609 -1.486 0.137346
TransmisionSTRONIC -0.03480931 0.01390744 -2.503 0.012365 *
TransmisionTIP -0.02355150 0.01395719 -1.687 0.091619 .
TransmisionTIP 8 0.07555283 0.04178219 1.808 0.070658 .
TransmisionTIPT -0.02964939 0.01376898 -2.153 0.031364 *
TransmisionTIPTRONIC -0.02871381 0.01385117 -2.073 0.038248 *
TransmisionZF SPEED QUICKSHIFT 0.00024219 0.01857534 0.013 0.989598
CombustibleGasolina -0.15226613 0.02505820 -6.076 1.37e-09 ***
Cilindros -0.01603200 0.02855111 -0.562 0.574482
Tamaño -0.24805914 0.03562048 -6.964 3.98e-12 ***
CategoriaAUTOS DE LUJO -0.00304556 0.00302355 -1.007 0.313876
CategoriaAUTOS DEPORTIVOS -0.01145467 0.00348281 -3.289 0.001016 **
CategoriaAUTOS SUBCOMPACTOS 0.00619933 0.00348262 1.780 0.075156 .
CategoriaCAMIONETAS DE USO MULTIPLE (SUV) -0.00403883 0.00283795 -1.423 0.154787
Nox 0.00015714 0.00008789 1.788 0.073893 .
Calificacion_Gas 0.03520602 0.00130418 26.995 < 2e-16 ***
Calificacion_ContamAire 0.00890079 0.00110699 8.041 1.23e-15 ***
logPotencia -0.10319250 0.02057278 -5.016 5.56e-07 ***
Rend_Carr 0.23956290 0.00491447 48.746 < 2e-16 ***
Rend_Ciud 0.42041050 0.00549066 76.568 < 2e-16 ***
Cilindros:Tamaño 0.02213901 0.00637034 3.475 0.000517 ***
Tamaño:logPotencia 0.04155591 0.00582171 7.138 1.16e-12 ***
Cilindros:logPotencia 0.00281311 0.00488704 0.576 0.564908
Cilindros:Tamaño:logPotencia -0.00364317 0.00104098 -3.500 0.000472 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.03939 on 3294 degrees of freedom
Multiple R-squared: 0.9913, Adjusted R-squared: 0.991
F-statistic: 4447 on 84 and 3294 DF, p-value: < 2.2e-16
Notamos que en este modelo la interacción de las tres variables logPotencia, Cilindros y Tamaño es significativa, pero la interacción entre logPotencia y Cilindros no lo es. Cuando esto pasa, hay que dejar la interacción completa de las tres variables como parte del modelo.
El modelo tiene un procentaje de explicación altadel 99.1%.
El modelo que se considerará será el modelo que incluye a las variables: Transmisión, Combustible, Cilindros, Potencia, Tamaño, Categoría, Rend_Ciudad, Ren_Carretera, Nox, Calificacion_Gas y Calificacion_ContamAire.
Extensiones a este modelo, podrían considerar interacciones de los factores con las variables continuas, y entre ellas mismas, pero el modelo sería muy grande. Esto es algo que se podría experimentar en un análisis más profundo.
A partir del modelo ajustado, podemos buscar un modelo que sea más chico, fácil de interpretar, y que explique prácticamente lo mismo que el modelo grande.
La función stepAIC del paquete MASS automatiza el proceso de selección de variables, en los dos sentidos: lo puede hacer a partir de un modelo e ir agregando componentes (forward) o quitando componentes (backward), o ambas a la vez (stepwise).
# lower es el modelo más chico a considerar, y upper es el modelo más grande a considerar
# direction indica si debe agregar, quitar o las dos cosas conforme logra mejorar el criterio del modelo
m2 <- stepAIC(m1,
scope = list(lower = ~ 1,
upper = ~ . + Tamaño*Cilindros*logPotencia),
direction = "both",
steps = 5) # muestra el proceso de ajuste
Start: AIC=-21773.75
Rend_adj ~ Marca + Modelo + Transmision + Combustible + Cilindros +
Tamaño + Categoria + Nox + Calificacion_Gas + Calificacion_ContamAire +
logPotencia + Rend_Carr + Rend_Ciud + Tamaño:Cilindros +
logPotencia:Tamaño + logPotencia:Cilindros + logPotencia:Cilindros:Tamaño
Df Sum of Sq RSS AIC
<none> 5.1099 -21774
- Nox 1 0.0050 5.1149 -21772
- Cilindros:Tamaño:logPotencia 1 0.0190 5.1289 -21763
- Categoria 4 0.0286 5.1385 -21763
- Combustible 1 0.0573 5.1672 -21738
- Transmision 21 0.1528 5.2627 -21716
- Calificacion_ContamAire 1 0.1003 5.2102 -21710
- Modelo 7 0.3078 5.4177 -21590
- Calificacion_Gas 1 1.1304 6.2403 -21100
- Marca 39 2.5865 7.6964 -20468
- Rend_Carr 1 3.6862 8.7960 -19940
- Rend_Ciud 1 9.0947 14.2045 -18321
# modelo resultante
summary(m2)
Call:
lm(formula = Rend_adj ~ Marca + Modelo + Transmision + Combustible +
Cilindros + Tamaño + Categoria + Nox + Calificacion_Gas +
Calificacion_ContamAire + logPotencia + Rend_Carr + Rend_Ciud +
Tamaño:Cilindros + logPotencia:Tamaño + logPotencia:Cilindros +
logPotencia:Cilindros:Tamaño, data = autos3)
Residuals:
Min 1Q Median 3Q Max
-0.153594 -0.023623 -0.003244 0.018834 0.193144
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.30646379 0.12558084 10.403 < 2e-16 ***
MarcaALFA ROMEO -0.04356297 0.01877133 -2.321 0.020363 *
MarcaAUDI -0.05309792 0.00801794 -6.622 4.11e-11 ***
MarcaBENTLEY -0.09720859 0.01094898 -8.878 < 2e-16 ***
MarcaBMW 0.06053799 0.00681968 8.877 < 2e-16 ***
MarcaBUICK -0.07829853 0.00918328 -8.526 < 2e-16 ***
MarcaCADILLAC -0.05664498 0.00740051 -7.654 2.54e-14 ***
MarcaCHEVROLET -0.06042279 0.00644088 -9.381 < 2e-16 ***
MarcaCHRYSLER -0.05420850 0.00902578 -6.006 2.11e-09 ***
MarcaDODGE -0.04478621 0.00694669 -6.447 1.31e-10 ***
MarcaFIAT -0.05013127 0.00887870 -5.646 1.78e-08 ***
MarcaFORD -0.03667915 0.00672819 -5.452 5.36e-08 ***
MarcaGMC -0.05965145 0.00967205 -6.167 7.79e-10 ***
MarcaGML -0.11698196 0.02905481 -4.026 5.80e-05 ***
MarcaHONDA -0.00760610 0.00669910 -1.135 0.256294
MarcaHYUNDAI -0.03705793 0.00846541 -4.378 1.24e-05 ***
MarcaINFINITI -0.05200390 0.00807701 -6.439 1.38e-10 ***
MarcaJAGUAR 0.01252278 0.01262905 0.992 0.321473
MarcaJEEP -0.02522999 0.00745531 -3.384 0.000722 ***
MarcaKIA -0.02015036 0.00919555 -2.191 0.028499 *
MarcaLAND ROVER 0.05412143 0.01726432 3.135 0.001734 **
MarcaLEXUS 0.01014975 0.02849979 0.356 0.721763
MarcaLINCOLN -0.05598173 0.00826445 -6.774 1.48e-11 ***
MarcaMAZDA 0.00083584 0.00686863 0.122 0.903152
MarcaMERCEDES 0.03167007 0.00739934 4.280 1.92e-05 ***
MarcaMERCURY -0.03462157 0.02862672 -1.209 0.226590
MarcaMINI 0.04501395 0.00810617 5.553 3.03e-08 ***
MarcaMITSUBISHI -0.05715701 0.00840930 -6.797 1.26e-11 ***
MarcaNISSAN -0.03924388 0.00689815 -5.689 1.39e-08 ***
MarcaPEUGEOT -0.05481702 0.01021507 -5.366 8.59e-08 ***
MarcaPORSCHE -0.06250544 0.00721103 -8.668 < 2e-16 ***
MarcaRENAULT -0.05598935 0.01081932 -5.175 2.42e-07 ***
MarcaROLLSROYCE 0.06713287 0.03006791 2.233 0.025635 *
MarcaSEAT -0.06000046 0.00802742 -7.474 9.88e-14 ***
MarcaSMART 0.04419603 0.01302094 3.394 0.000696 ***
MarcaSUBARU -0.05596648 0.00803376 -6.966 3.91e-12 ***
MarcaSUZUKI -0.06501403 0.00764428 -8.505 < 2e-16 ***
MarcaTOYOTA -0.04952540 0.00733838 -6.749 1.75e-11 ***
MarcaVOLVO -0.02054215 0.00847636 -2.423 0.015427 *
MarcaVW -0.08106712 0.00695979 -11.648 < 2e-16 ***
Modelo2012 0.00705645 0.00296460 2.380 0.017358 *
Modelo2013 0.00894705 0.00297886 3.004 0.002689 **
Modelo2014 0.00894614 0.00309482 2.891 0.003869 **
Modelo2015 0.03364336 0.00323986 10.384 < 2e-16 ***
Modelo2016 0.01974855 0.00294619 6.703 2.39e-11 ***
Modelo2017 0.03014135 0.00318415 9.466 < 2e-16 ***
Modelo2018 0.03550430 0.00493297 7.197 7.57e-13 ***
TransmisionASG -0.01907136 0.02366805 -0.806 0.420425
TransmisionAUT -0.02997601 0.01248708 -2.401 0.016425 *
TransmisionCVT -0.00500183 0.01283677 -0.390 0.696822
TransmisionDCT 0.00152773 0.02693693 0.057 0.954775
TransmisionDSG -0.00845814 0.01353877 -0.625 0.532188
TransmisionDUALOGIC -0.05889343 0.02630463 -2.239 0.025229 *
TransmisionG TRONIC -0.03859900 0.01898510 -2.033 0.042120 *
TransmisionM5 -0.03541781 0.01451242 -2.441 0.014719 *
TransmisionM6 -0.04992154 0.01652179 -3.022 0.002534 **
TransmisionMAN -0.02358954 0.01255635 -1.879 0.060375 .
TransmisionMULTIT -0.04846402 0.01637240 -2.960 0.003097 **
TransmisionMULTITRONIC -0.04912634 0.01546061 -3.178 0.001499 **
TransmisionPDK -0.01945747 0.01325381 -1.468 0.142182
TransmisionR TRONIC 0.00776081 0.03110991 0.249 0.803017
TransmisionS TRONIC -0.02146848 0.01444609 -1.486 0.137346
TransmisionSTRONIC -0.03480931 0.01390744 -2.503 0.012365 *
TransmisionTIP -0.02355150 0.01395719 -1.687 0.091619 .
TransmisionTIP 8 0.07555283 0.04178219 1.808 0.070658 .
TransmisionTIPT -0.02964939 0.01376898 -2.153 0.031364 *
TransmisionTIPTRONIC -0.02871381 0.01385117 -2.073 0.038248 *
TransmisionZF SPEED QUICKSHIFT 0.00024219 0.01857534 0.013 0.989598
CombustibleGasolina -0.15226613 0.02505820 -6.076 1.37e-09 ***
Cilindros -0.01603200 0.02855111 -0.562 0.574482
Tamaño -0.24805914 0.03562048 -6.964 3.98e-12 ***
CategoriaAUTOS DE LUJO -0.00304556 0.00302355 -1.007 0.313876
CategoriaAUTOS DEPORTIVOS -0.01145467 0.00348281 -3.289 0.001016 **
CategoriaAUTOS SUBCOMPACTOS 0.00619933 0.00348262 1.780 0.075156 .
CategoriaCAMIONETAS DE USO MULTIPLE (SUV) -0.00403883 0.00283795 -1.423 0.154787
Nox 0.00015714 0.00008789 1.788 0.073893 .
Calificacion_Gas 0.03520602 0.00130418 26.995 < 2e-16 ***
Calificacion_ContamAire 0.00890079 0.00110699 8.041 1.23e-15 ***
logPotencia -0.10319250 0.02057278 -5.016 5.56e-07 ***
Rend_Carr 0.23956290 0.00491447 48.746 < 2e-16 ***
Rend_Ciud 0.42041050 0.00549066 76.568 < 2e-16 ***
Cilindros:Tamaño 0.02213901 0.00637034 3.475 0.000517 ***
Tamaño:logPotencia 0.04155591 0.00582171 7.138 1.16e-12 ***
Cilindros:logPotencia 0.00281311 0.00488704 0.576 0.564908
Cilindros:Tamaño:logPotencia -0.00364317 0.00104098 -3.500 0.000472 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.03939 on 3294 degrees of freedom
Multiple R-squared: 0.9913, Adjusted R-squared: 0.991
F-statistic: 4447 on 84 and 3294 DF, p-value: < 2.2e-16
El modelo obtenido tiene 85 coeficientes, que es grande para desplegar e interpretar. Aun así, podemos encontrar intervalos de confianza para los coeficientes:
confint(m2, level = 0.95)
2.5 % 97.5 %
(Intercept) 1.06023940684 1.5526881818
MarcaALFA ROMEO -0.08036762411 -0.0067583246
MarcaAUDI -0.06881856693 -0.0373772787
MarcaBENTLEY -0.11867608918 -0.0757410811
MarcaBMW 0.04716674562 0.0739092295
MarcaBUICK -0.09630404298 -0.0602930143
MarcaCADILLAC -0.07115504651 -0.0421349188
MarcaCHEVROLET -0.07305132401 -0.0477942461
MarcaCHRYSLER -0.07190521276 -0.0365117821
MarcaDODGE -0.05840647326 -0.0311659420
MarcaFIAT -0.06753960155 -0.0327229411
MarcaFORD -0.04987100420 -0.0234872913
MarcaGMC -0.07861528294 -0.0406876096
MarcaGML -0.17394928038 -0.0600146486
MarcaHONDA -0.02074092040 0.0055287140
MarcaHYUNDAI -0.05365592029 -0.0204599343
MarcaINFINITI -0.06784037500 -0.0361674237
MarcaJAGUAR -0.01223880895 0.0372843697
MarcaJEEP -0.03984750832 -0.0106124793
MarcaKIA -0.03817993723 -0.0021207769
MarcaLAND ROVER 0.02027153956 0.0879713113
MarcaLEXUS -0.04572934145 0.0660288410
MarcaLINCOLN -0.07218571691 -0.0397777503
MarcaMAZDA -0.01263137001 0.0143030564
MarcaMERCEDES 0.01716230184 0.0461778448
MarcaMERCURY -0.09074954354 0.0215064004
MarcaMINI 0.02912030356 0.0609075913
MarcaMITSUBISHI -0.07364499380 -0.0406690327
MarcaNISSAN -0.05276898593 -0.0257187793
MarcaPEUGEOT -0.07484554836 -0.0347884873
MarcaPORSCHE -0.07664398835 -0.0483668824
MarcaRENAULT -0.07720263170 -0.0347760711
MarcaROLLSROYCE 0.00817918184 0.1260865503
MarcaSEAT -0.07573969839 -0.0442612178
MarcaSMART 0.01866607069 0.0697259901
MarcaSUBARU -0.07171814247 -0.0402148218
MarcaSUZUKI -0.08000205837 -0.0500260069
MarcaTOYOTA -0.06391364993 -0.0351371506
MarcaVOLVO -0.03716161304 -0.0039226800
MarcaVW -0.09471307862 -0.0674211676
Modelo2012 0.00124379933 0.0128691029
Modelo2013 0.00310644799 0.0147876544
Modelo2014 0.00287818193 0.0150140931
Modelo2015 0.02729102527 0.0399956974
Modelo2016 0.01397200675 0.0255250906
Modelo2017 0.02389824239 0.0363844503
Modelo2018 0.02583229349 0.0451763006
TransmisionASG -0.06547693684 0.0273342101
TransmisionAUT -0.05445922921 -0.0054927938
TransmisionCVT -0.03017067912 0.0201670277
TransmisionDCT -0.05128709425 0.0543425635
TransmisionDSG -0.03500339805 0.0180871170
TransmisionDUALOGIC -0.11046850806 -0.0073183439
TransmisionG TRONIC -0.07582279502 -0.0013751966
TransmisionM5 -0.06387207585 -0.0069635398
TransmisionM6 -0.08231556802 -0.0175275197
TransmisionMAN -0.04820858512 0.0010295086
TransmisionMULTIT -0.08056513287 -0.0163629082
TransmisionMULTITRONIC -0.07943971369 -0.0188129756
TransmisionPDK -0.04544400612 0.0065290724
TransmisionR TRONIC -0.05323590734 0.0687575188
TransmisionS TRONIC -0.04979270871 0.0068557399
TransmisionSTRONIC -0.06207740050 -0.0075412163
TransmisionTIP -0.05091715063 0.0038141550
TransmisionTIP 8 -0.00636886216 0.1574745246
TransmisionTIPT -0.05664601824 -0.0026527705
TransmisionTIPTRONIC -0.05587157355 -0.0015560450
TransmisionZF SPEED QUICKSHIFT -0.03617818814 0.0366625710
CombustibleGasolina -0.20139735281 -0.1031349089
Cilindros -0.07201171758 0.0399477193
Tamaño -0.31789964976 -0.1782186281
CategoriaAUTOS DE LUJO -0.00897378767 0.0028826764
CategoriaAUTOS DEPORTIVOS -0.01828337057 -0.0046259716
CategoriaAUTOS SUBCOMPACTOS -0.00062899244 0.0130276527
CategoriaCAMIONETAS DE USO MULTIPLE (SUV) -0.00960315766 0.0015254889
Nox -0.00001519185 0.0003294724
Calificacion_Gas 0.03264893677 0.0377631050
Calificacion_ContamAire 0.00673034260 0.0110712394
logPotencia -0.14352923115 -0.0628557685
Rend_Carr 0.22992717020 0.2491986317
Rend_Ciud 0.40964504232 0.4311759504
Cilindros:Tamaño 0.00964877086 0.0346292413
Tamaño:logPotencia 0.03014138068 0.0529704423
Cilindros:logPotencia -0.00676884169 0.0123950528
Cilindros:Tamaño:logPotencia -0.00568419848 -0.0016021491
Suponiendo que el modelo ajustado es considerado como el mejor modelo, todavía falta revisar si los supuestos del modelo se cumplen de manera adecuada.
La primera herramienta que tenemos para verificar si el modelo es correcto son los residuales y los apalancamientos, que nos sirven para identficar desviaciones de los supuestos.
Vemos las gráficas de diagnóstico y podemos hacer ajustes para mejorar el modelo. Podemos generar las gráficas de diagnóstico más comunes.
par(mfrow=c(2,3))
plot(m2, ask = F, which = 1:6, cex=0.5, pch = 16)
Warning: not plotting observations with leverage one:
1471
Warning: not plotting observations with leverage one:
1471
Hay una observación que tienen un valor de apalancamiento muy grande (uno) y que tiene un efecto importante en el modelo ajustado. Podemos comparar el modelo ajustado sin este dato y ver cómo cambia, y también ver qué dato es:
autos3[1471,] #dato que marca con apalancamiento grande
Rend_adj Marca Modelo Transmision Combustible Cilindros Tamaño Categoria Nox Calificacion_Gas
1882 2.84605 AUDI 2011 TIP 8 Gasolina 8 4.2 AUTOS DE LUJO 7 4
Calificacion_ContamAire logPotencia Rend_Carr Rend_Ciud
1882 9 5.918894 3.726929 2.742262
m3 <- update(m2,data=autos3[-1471,]) #elimina el dato extraño
summary(m3)
Call:
lm(formula = Rend_adj ~ Marca + Modelo + Transmision + Combustible +
Cilindros + Tamaño + Categoria + Nox + Calificacion_Gas +
Calificacion_ContamAire + logPotencia + Rend_Carr + Rend_Ciud +
Tamaño:Cilindros + logPotencia:Tamaño + logPotencia:Cilindros +
logPotencia:Cilindros:Tamaño, data = autos3[-1471, ])
Residuals:
Min 1Q Median 3Q Max
-0.153594 -0.023625 -0.003256 0.018846 0.193144
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.30646379 0.12558084 10.403 < 2e-16 ***
MarcaALFA ROMEO -0.04356297 0.01877133 -2.321 0.020363 *
MarcaAUDI -0.05309792 0.00801794 -6.622 4.11e-11 ***
MarcaBENTLEY -0.09720859 0.01094898 -8.878 < 2e-16 ***
MarcaBMW 0.06053799 0.00681968 8.877 < 2e-16 ***
MarcaBUICK -0.07829853 0.00918328 -8.526 < 2e-16 ***
MarcaCADILLAC -0.05664498 0.00740051 -7.654 2.54e-14 ***
MarcaCHEVROLET -0.06042279 0.00644088 -9.381 < 2e-16 ***
MarcaCHRYSLER -0.05420850 0.00902578 -6.006 2.11e-09 ***
MarcaDODGE -0.04478621 0.00694669 -6.447 1.31e-10 ***
MarcaFIAT -0.05013127 0.00887870 -5.646 1.78e-08 ***
MarcaFORD -0.03667915 0.00672819 -5.452 5.36e-08 ***
MarcaGMC -0.05965145 0.00967205 -6.167 7.79e-10 ***
MarcaGML -0.11698196 0.02905481 -4.026 5.80e-05 ***
MarcaHONDA -0.00760610 0.00669910 -1.135 0.256294
MarcaHYUNDAI -0.03705793 0.00846541 -4.378 1.24e-05 ***
MarcaINFINITI -0.05200390 0.00807701 -6.439 1.38e-10 ***
MarcaJAGUAR 0.01252278 0.01262905 0.992 0.321473
MarcaJEEP -0.02522999 0.00745531 -3.384 0.000722 ***
MarcaKIA -0.02015036 0.00919555 -2.191 0.028499 *
MarcaLAND ROVER 0.05412143 0.01726432 3.135 0.001734 **
MarcaLEXUS 0.01014975 0.02849979 0.356 0.721763
MarcaLINCOLN -0.05598173 0.00826445 -6.774 1.48e-11 ***
MarcaMAZDA 0.00083584 0.00686863 0.122 0.903152
MarcaMERCEDES 0.03167007 0.00739934 4.280 1.92e-05 ***
MarcaMERCURY -0.03462157 0.02862672 -1.209 0.226590
MarcaMINI 0.04501395 0.00810617 5.553 3.03e-08 ***
MarcaMITSUBISHI -0.05715701 0.00840930 -6.797 1.26e-11 ***
MarcaNISSAN -0.03924388 0.00689815 -5.689 1.39e-08 ***
MarcaPEUGEOT -0.05481702 0.01021507 -5.366 8.59e-08 ***
MarcaPORSCHE -0.06250544 0.00721103 -8.668 < 2e-16 ***
MarcaRENAULT -0.05598935 0.01081932 -5.175 2.42e-07 ***
MarcaROLLSROYCE 0.06713287 0.03006791 2.233 0.025635 *
MarcaSEAT -0.06000046 0.00802742 -7.474 9.88e-14 ***
MarcaSMART 0.04419603 0.01302094 3.394 0.000696 ***
MarcaSUBARU -0.05596648 0.00803376 -6.966 3.91e-12 ***
MarcaSUZUKI -0.06501403 0.00764428 -8.505 < 2e-16 ***
MarcaTOYOTA -0.04952540 0.00733838 -6.749 1.75e-11 ***
MarcaVOLVO -0.02054215 0.00847636 -2.423 0.015427 *
MarcaVW -0.08106712 0.00695979 -11.648 < 2e-16 ***
Modelo2012 0.00705645 0.00296460 2.380 0.017358 *
Modelo2013 0.00894705 0.00297886 3.004 0.002689 **
Modelo2014 0.00894614 0.00309482 2.891 0.003869 **
Modelo2015 0.03364336 0.00323986 10.384 < 2e-16 ***
Modelo2016 0.01974855 0.00294619 6.703 2.39e-11 ***
Modelo2017 0.03014135 0.00318415 9.466 < 2e-16 ***
Modelo2018 0.03550430 0.00493297 7.197 7.57e-13 ***
TransmisionASG -0.01907136 0.02366805 -0.806 0.420425
TransmisionAUT -0.02997601 0.01248708 -2.401 0.016425 *
TransmisionCVT -0.00500183 0.01283677 -0.390 0.696822
TransmisionDCT 0.00152773 0.02693693 0.057 0.954775
TransmisionDSG -0.00845814 0.01353877 -0.625 0.532188
TransmisionDUALOGIC -0.05889343 0.02630463 -2.239 0.025229 *
TransmisionG TRONIC -0.03859900 0.01898510 -2.033 0.042120 *
TransmisionM5 -0.03541781 0.01451242 -2.441 0.014719 *
TransmisionM6 -0.04992154 0.01652179 -3.022 0.002534 **
TransmisionMAN -0.02358954 0.01255635 -1.879 0.060375 .
TransmisionMULTIT -0.04846402 0.01637240 -2.960 0.003097 **
TransmisionMULTITRONIC -0.04912634 0.01546061 -3.178 0.001499 **
TransmisionPDK -0.01945747 0.01325381 -1.468 0.142182
TransmisionR TRONIC 0.00776081 0.03110991 0.249 0.803017
TransmisionS TRONIC -0.02146848 0.01444609 -1.486 0.137346
TransmisionSTRONIC -0.03480931 0.01390744 -2.503 0.012365 *
TransmisionTIP -0.02355150 0.01395719 -1.687 0.091619 .
TransmisionTIPT -0.02964939 0.01376898 -2.153 0.031364 *
TransmisionTIPTRONIC -0.02871381 0.01385117 -2.073 0.038248 *
TransmisionZF SPEED QUICKSHIFT 0.00024219 0.01857534 0.013 0.989598
CombustibleGasolina -0.15226613 0.02505820 -6.076 1.37e-09 ***
Cilindros -0.01603200 0.02855111 -0.562 0.574482
Tamaño -0.24805914 0.03562048 -6.964 3.98e-12 ***
CategoriaAUTOS DE LUJO -0.00304556 0.00302355 -1.007 0.313876
CategoriaAUTOS DEPORTIVOS -0.01145467 0.00348281 -3.289 0.001016 **
CategoriaAUTOS SUBCOMPACTOS 0.00619933 0.00348262 1.780 0.075156 .
CategoriaCAMIONETAS DE USO MULTIPLE (SUV) -0.00403883 0.00283795 -1.423 0.154787
Nox 0.00015714 0.00008789 1.788 0.073893 .
Calificacion_Gas 0.03520602 0.00130418 26.995 < 2e-16 ***
Calificacion_ContamAire 0.00890079 0.00110699 8.041 1.23e-15 ***
logPotencia -0.10319250 0.02057278 -5.016 5.56e-07 ***
Rend_Carr 0.23956290 0.00491447 48.746 < 2e-16 ***
Rend_Ciud 0.42041050 0.00549066 76.568 < 2e-16 ***
Cilindros:Tamaño 0.02213901 0.00637034 3.475 0.000517 ***
Tamaño:logPotencia 0.04155591 0.00582171 7.138 1.16e-12 ***
Cilindros:logPotencia 0.00281311 0.00488704 0.576 0.564908
Cilindros:Tamaño:logPotencia -0.00364317 0.00104098 -3.500 0.000472 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.03939 on 3294 degrees of freedom
Multiple R-squared: 0.9913, Adjusted R-squared: 0.991
F-statistic: 4500 on 83 and 3294 DF, p-value: < 2.2e-16
par(mfrow=c(2,3))
plot(m3, ask = F, which = 1:6, cex=0.5, pch = 16)
No parece haber ninguna mejora quitando el dato correspondiente, por lo que se dejará en el conjunto.
Las gráficas muestran las siguientes características:
Primero, intentamos encontrar una transformación de la variable de respuesta que ayude a corregir el problema de heteroscedasticidad. Para este fin, se puede usar la transformación de Box-Cox, que es una transformación de la forma
\[Y^{(\lambda)} = \frac{Y^{\lambda}-1}{\lambda}\]
boxcox(m2, lambda=seq(0,1,1/20))
La transformación sugerida para la respuesta es sacar usar \(\lambda\approx 0.5\), pero ya habiamos obtenido la raiz cuadrada de la variable original, por lo que la variable original es la raíz cuarta.
autos3$Rend_adj <- 2*(sqrt(autos3$Rend_adj)-1)
Reajustamos el modelo con el cambio hecho, y podemos ver que hay una ligera mejora en la \(R^2\)
m2 <- update(m2)
summary(m2)
Call:
lm(formula = Rend_adj ~ Marca + Modelo + Transmision + Combustible +
Cilindros + Tamaño + Categoria + Nox + Calificacion_Gas +
Calificacion_ContamAire + logPotencia + Rend_Carr + Rend_Ciud +
Tamaño:Cilindros + logPotencia:Tamaño + logPotencia:Cilindros +
logPotencia:Cilindros:Tamaño, data = autos3)
Residuals:
Min 1Q Median 3Q Max
-0.133853 -0.012290 -0.001431 0.010261 0.087858
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.31005897 0.06900771 4.493 7.26e-06 ***
MarcaALFA ROMEO -0.02137755 0.01031500 -2.072 0.038299 *
MarcaAUDI -0.02606290 0.00440592 -5.915 3.65e-09 ***
MarcaBENTLEY -0.07920785 0.00601656 -13.165 < 2e-16 ***
MarcaBMW 0.03345118 0.00374747 8.926 < 2e-16 ***
MarcaBUICK -0.04055257 0.00504629 -8.036 1.28e-15 ***
MarcaCADILLAC -0.02897724 0.00406664 -7.126 1.27e-12 ***
MarcaCHEVROLET -0.02870370 0.00353932 -8.110 7.07e-16 ***
MarcaCHRYSLER -0.02675399 0.00495974 -5.394 7.37e-08 ***
MarcaDODGE -0.02177786 0.00381726 -5.705 1.27e-08 ***
MarcaFIAT -0.01989511 0.00487892 -4.078 4.65e-05 ***
MarcaFORD -0.01851286 0.00369720 -5.007 5.81e-07 ***
MarcaGMC -0.02939337 0.00531487 -5.530 3.44e-08 ***
MarcaGML -0.04294431 0.01596586 -2.690 0.007186 **
MarcaHONDA -0.00230007 0.00368121 -0.625 0.532136
MarcaHYUNDAI -0.01697340 0.00465181 -3.649 0.000268 ***
MarcaINFINITI -0.02287433 0.00443839 -5.154 2.70e-07 ***
MarcaJAGUAR -0.00408538 0.00693977 -0.589 0.556109
MarcaJEEP -0.01391816 0.00409676 -3.397 0.000688 ***
MarcaKIA -0.00891960 0.00505303 -1.765 0.077623 .
MarcaLAND ROVER 0.02284829 0.00948689 2.408 0.016077 *
MarcaLEXUS 0.00731412 0.01566087 0.467 0.640508
MarcaLINCOLN -0.03606361 0.00454138 -7.941 2.73e-15 ***
MarcaMAZDA -0.00002434 0.00377437 -0.006 0.994855
MarcaMERCEDES 0.01778111 0.00406600 4.373 1.26e-05 ***
MarcaMERCURY -0.01161876 0.01573062 -0.739 0.460198
MarcaMINI 0.02309375 0.00445441 5.184 2.30e-07 ***
MarcaMITSUBISHI -0.02759738 0.00462098 -5.972 2.59e-09 ***
MarcaNISSAN -0.01822455 0.00379059 -4.808 1.59e-06 ***
MarcaPEUGEOT -0.02231551 0.00561327 -3.975 7.17e-05 ***
MarcaPORSCHE -0.03481339 0.00396252 -8.786 < 2e-16 ***
MarcaRENAULT -0.02460435 0.00594531 -4.138 3.58e-05 ***
MarcaROLLSROYCE 0.04277593 0.01652257 2.589 0.009670 **
MarcaSEAT -0.03242133 0.00441113 -7.350 2.49e-13 ***
MarcaSMART 0.02306164 0.00715512 3.223 0.001280 **
MarcaSUBARU -0.02538113 0.00441462 -5.749 9.78e-09 ***
MarcaSUZUKI -0.02944570 0.00420060 -7.010 2.88e-12 ***
MarcaTOYOTA -0.02614307 0.00403250 -6.483 1.03e-10 ***
MarcaVOLVO -0.01174011 0.00465783 -2.521 0.011765 *
MarcaVW -0.03857765 0.00382446 -10.087 < 2e-16 ***
Modelo2012 0.00260118 0.00162907 1.597 0.110423
Modelo2013 0.00450924 0.00163691 2.755 0.005906 **
Modelo2014 0.00393301 0.00170063 2.313 0.020801 *
Modelo2015 0.01692857 0.00178033 9.509 < 2e-16 ***
Modelo2016 0.00965275 0.00161895 5.962 2.75e-09 ***
Modelo2017 0.01471304 0.00174971 8.409 < 2e-16 ***
Modelo2018 0.01540464 0.00271071 5.683 1.44e-08 ***
TransmisionASG -0.01205851 0.01300579 -0.927 0.353909
TransmisionAUT -0.01465084 0.00686175 -2.135 0.032823 *
TransmisionCVT -0.00501025 0.00705391 -0.710 0.477581
TransmisionDCT 0.00589443 0.01480207 0.398 0.690497
TransmisionDSG -0.00590767 0.00743967 -0.794 0.427208
TransmisionDUALOGIC -0.02663460 0.01445461 -1.843 0.065472 .
TransmisionG TRONIC -0.03356691 0.01043247 -3.218 0.001305 **
TransmisionM5 -0.01664703 0.00797469 -2.087 0.036921 *
TransmisionM6 -0.02448868 0.00907886 -2.697 0.007025 **
TransmisionMAN -0.01117598 0.00689982 -1.620 0.105382
TransmisionMULTIT -0.02624299 0.00899677 -2.917 0.003559 **
TransmisionMULTITRONIC -0.02744923 0.00849573 -3.231 0.001246 **
TransmisionPDK -0.00636935 0.00728308 -0.875 0.381888
TransmisionR TRONIC 0.00377888 0.01709515 0.221 0.825068
TransmisionS TRONIC -0.01199976 0.00793825 -1.512 0.130722
TransmisionSTRONIC -0.01812319 0.00764225 -2.371 0.017776 *
TransmisionTIP -0.02246098 0.00766959 -2.929 0.003429 **
TransmisionTIP 8 0.04158285 0.02295966 1.811 0.070212 .
TransmisionTIPT -0.01265022 0.00756617 -1.672 0.094630 .
TransmisionTIPTRONIC -0.01307766 0.00761133 -1.718 0.085857 .
TransmisionZF SPEED QUICKSHIFT 0.01137143 0.01020730 1.114 0.265340
CombustibleGasolina -0.06992166 0.01376969 -5.078 4.03e-07 ***
Cilindros 0.02449220 0.01568907 1.561 0.118596
Tamaño -0.06218154 0.01957375 -3.177 0.001503 **
CategoriaAUTOS DE LUJO -0.00047040 0.00166147 -0.283 0.777099
CategoriaAUTOS DEPORTIVOS -0.00495992 0.00191384 -2.592 0.009595 **
CategoriaAUTOS SUBCOMPACTOS 0.00361405 0.00191373 1.888 0.059048 .
CategoriaCAMIONETAS DE USO MULTIPLE (SUV) -0.00309138 0.00155948 -1.982 0.047527 *
Nox 0.00016854 0.00004830 3.489 0.000490 ***
Calificacion_Gas 0.02498922 0.00071666 34.869 < 2e-16 ***
Calificacion_ContamAire 0.00556899 0.00060830 9.155 < 2e-16 ***
logPotencia -0.01961639 0.01130491 -1.735 0.082797 .
Rend_Carr 0.12981516 0.00270054 48.070 < 2e-16 ***
Rend_Ciud 0.21796543 0.00301716 72.242 < 2e-16 ***
Cilindros:Tamaño 0.00027716 0.00350056 0.079 0.936897
Tamaño:logPotencia 0.01103599 0.00319908 3.450 0.000568 ***
Cilindros:logPotencia -0.00393922 0.00268547 -1.467 0.142508
Cilindros:Tamaño:logPotencia -0.00014948 0.00057202 -0.261 0.793862
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.02164 on 3294 degrees of freedom
Multiple R-squared: 0.9918, Adjusted R-squared: 0.9916
F-statistic: 4753 on 84 and 3294 DF, p-value: < 2.2e-16
par(mfrow=c(2,3))
plot(m2)
Warning: not plotting observations with leverage one:
1471
Por último, podemos hacer una prueba formal sobre la distribución de los residuales
par(mfrow=c(1,2))
hist(m2$residuals, breaks=100)
qqnorm(m2$residuals)
shapiro.test(m2$residuals)
Shapiro-Wilk normality test
data: m2$residuals
W = 0.97281, p-value < 2.2e-16
Finalmente nos quedamos con este modelo. La exploración podría continuar dependiendo de la precisión y análisis que necesitemos.
Suponemos que necesitamos el modelo para predecir nuevos valores. Para predecir un nuevo valor con este modelo, necesitamos especificar todos los valores correspondientes a los predictores del modelo, que son 12 variables. Por ejemplo:
casos.nuevos <- data.frame(Marca = c("AUDI","BMW","CHEVROLET"),
Modelo = c("2011","2012","2013"),
Transmision = c("CVT","CVT","AUT"),
Combustible = c("Diesel", "Diesel", "Gasolina"),
Cilindros = c(2,4,6),
logPotencia = log(c(100,200,150)),
Tamaño = c(1,2,10),
Categoria = c("AUTOS DEPORTIVOS", "AUTOS COMPACTOS", "CAMIONETAS DE USO MULTIPLE (SUV)"),
Rend_Ciud = c(10,20,30),
Rend_Carr = c(12,25,40),
Nox = c(0,0,4),
Calificacion_Gas = c(8,7,5),
Calificacion_ContamAire = c(7,8,9))
predict(m2, newdata = casos.nuevos, se.fit = T, interval = "pred", level = 0.99) #intervalo para predicción
$fit
fit lwr upr
1 4.160543 4.070808 4.250279
2 8.064278 7.884255 8.244300
3 11.938594 11.641054 12.236133
$se.fit
1 2 3
0.02727294 0.06641100 0.11339835
$df
[1] 3294
$residual.scale
[1] 0.02164304
predict(m2, newdata = casos.nuevos, se.fit = T, interval = "confidence", level = 0.99) #intervalo para valor medio
$fit
fit lwr upr
1 4.160543 4.090252 4.230835
2 8.064278 7.893115 8.235440
3 11.938594 11.646330 12.230858
$se.fit
1 2 3
0.02727294 0.06641100 0.11339835
$df
[1] 3294
$residual.scale
[1] 0.02164304
El rendimiento ajustado depende significativamente de la Marca, el modelo, algunos tipos de transmisión, el tipo de combistible, el tamaño, algunos valores de la categoría, el rendimiento en ciudad y carretera, el logaritmo de la potencia, la calificación y la emisión de Nox. El modelo es significativo y tiene un nivel de explicación alto.