Wilson Sandoval Rodríguez
17/11/2020
\[y=\beta_{0}+\beta_{1} x_{1}+\beta_{2} x_{2}+\ldots+\beta_{k} x_{k}+\varepsilon\]
La palabra indicadora, dummy, ficticia o binaria es la denominación genérica para una variable que toma valores de 0 o de 1 y que se utiliza para re-expresar variables cualitativas.
Ejemplo:
ajustar el modelo siguiente:
\[\begin{align} Precio_i &\sim N(\mu_i, \sigma^2), \\ \mu_i &= \beta_0 + \beta_1 Area_i + \beta_2 PisciPequena_i + \beta_3 PisiGrande_i, \\ \sigma^2 &= \text{constante} \end{align}\]
Precio <- c(12, 15, 25, 11, 16, 7)
Area <- c(3, 4, 1, 6, 5, 3)
Pisci <- factor(x=c('Grande', 'Sin', 'Pequena', 'Pequena', 'Sin', 'Grande'),
levels=c('Sin','Pequena','Grande'))## (Intercept) Area PisciPequena PisciGrande
## 1 1 3 0 1
## 2 1 4 0 0
## 3 1 1 1 0
## 4 1 6 1 0
## 5 1 5 0 0
## 6 1 3 0 1
## attr(,"assign")
## [1] 0 1 2 2
## attr(,"contrasts")
## attr(,"contrasts")$Pisci
## [1] "contr.treatment"
Para ajustar un modelo de regresión lineal con variables cualitativas se procede de la forma usual como se ajustan modelos con lm, no es necesario crear de antemano la matriz \(X\)
Utilizar la base de datos del paquete . El objetivo es ajustar el siguiente modelo para explicar el precio del auto en función del tamaño del motor y del tipo de auto, es decir, el objetivo es ajustar el siguiente modelo.
## 'data.frame': 93 obs. of 27 variables:
## $ Manufacturer : Factor w/ 32 levels "Acura","Audi",..: 1 1 2 2 3 4 4 4 4 5 ...
## $ Model : Factor w/ 93 levels "100","190E","240",..: 49 56 9 1 6 24 54 74 73 35 ...
## $ Type : Factor w/ 6 levels "Compact","Large",..: 4 3 1 3 3 3 2 2 3 2 ...
## $ Min.Price : num 12.9 29.2 25.9 30.8 23.7 14.2 19.9 22.6 26.3 33 ...
## $ Price : num 15.9 33.9 29.1 37.7 30 15.7 20.8 23.7 26.3 34.7 ...
## $ Max.Price : num 18.8 38.7 32.3 44.6 36.2 17.3 21.7 24.9 26.3 36.3 ...
## $ MPG.city : int 25 18 20 19 22 22 19 16 19 16 ...
## $ MPG.highway : int 31 25 26 26 30 31 28 25 27 25 ...
## $ AirBags : Factor w/ 3 levels "Driver & Passenger",..: 3 1 2 1 2 2 2 2 2 2 ...
## $ DriveTrain : Factor w/ 3 levels "4WD","Front",..: 2 2 2 2 3 2 2 3 2 2 ...
## $ Cylinders : Factor w/ 6 levels "3","4","5","6",..: 2 4 4 4 2 2 4 4 4 5 ...
## $ EngineSize : num 1.8 3.2 2.8 2.8 3.5 2.2 3.8 5.7 3.8 4.9 ...
## $ Horsepower : int 140 200 172 172 208 110 170 180 170 200 ...
## $ RPM : int 6300 5500 5500 5500 5700 5200 4800 4000 4800 4100 ...
## $ Rev.per.mile : int 2890 2335 2280 2535 2545 2565 1570 1320 1690 1510 ...
## $ Man.trans.avail : Factor w/ 2 levels "No","Yes": 2 2 2 2 2 1 1 1 1 1 ...
## $ Fuel.tank.capacity: num 13.2 18 16.9 21.1 21.1 16.4 18 23 18.8 18 ...
## $ Passengers : int 5 5 5 6 4 6 6 6 5 6 ...
## $ Length : int 177 195 180 193 186 189 200 216 198 206 ...
## $ Wheelbase : int 102 115 102 106 109 105 111 116 108 114 ...
## $ Width : int 68 71 67 70 69 69 74 78 73 73 ...
## $ Turn.circle : int 37 38 37 37 39 41 42 45 41 43 ...
## $ Rear.seat.room : num 26.5 30 28 31 27 28 30.5 30.5 26.5 35 ...
## $ Luggage.room : int 11 15 14 17 13 16 17 21 14 18 ...
## $ Weight : int 2705 3560 3375 3405 3640 2880 3470 4105 3495 3620 ...
## $ Origin : Factor w/ 2 levels "USA","non-USA": 2 2 2 2 2 1 1 1 1 1 ...
## $ Make : Factor w/ 93 levels "Acura Integra",..: 1 2 4 3 5 6 7 9 8 10 ...
## [1] "Compact" "Large" "Midsize" "Small" "Sporty" "Van"
\[\begin{align*} \mu_i = &\beta_0 + \beta_1 EngSize_i + \beta_2 TypeC_i + \beta_3 TypeS_i + \\ &\beta_4 TypeM_i + \beta_5 TypeL_i + \beta_6 TypeV_i, \\ \end{align*}\]
## [1] "Small" "Compact" "Large" "Midsize" "Sporty" "Van"
Diagrama de dispersión
## Warning: replacing previous import 'lifecycle::last_warnings' by
## 'rlang::last_warnings' when loading 'pillar'
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:MASS':
##
## select
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
##
## Call:
## lm(formula = Price ~ EngineSize + Type, data = Cars93)
##
## Residuals:
## Min 1Q Median 3Q Max
## -15.742 -4.568 -0.845 2.473 34.031
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.794 2.348 1.190 0.23732
## EngineSize 4.621 1.110 4.164 7.4e-05 ***
## TypeCompact 4.644 2.484 1.870 0.06489 .
## TypeLarge 2.053 3.916 0.524 0.60138
## TypeMidsize 10.286 2.700 3.810 0.00026 ***
## TypeSporty 5.078 2.634 1.928 0.05721 .
## TypeVan 1.517 3.332 0.455 0.65006
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.068 on 86 degrees of freedom
## Multiple R-squared: 0.4995, Adjusted R-squared: 0.4646
## F-statistic: 14.3 on 6 and 86 DF, p-value: 3.071e-11
Cómo se interpretan los coeficientes?
¿cómo saber si una variable cualitativa es significativa para un modelo?
Cuando se incluye una variable cualitativa de \(K\) niveles en un modelo de regresión,
aparecen
\(k-1\) variables indicadoras y por lo
tanto \(K-1\) valores-P en la tabla
resumen.
Usar esos valores-P nos puede llevar a conclusiones erróneas.
Para saber si una variable cualitativa es significativa para un modelo hay dos formas:
En la forma 1 debemos ajustar el modelo y usar la función anova para ver si la variable cualitativa es significativa en el modelo.
Al usar la función anova sobre un modelo mod obtenido con la función lm, aparecerán tantas filas (con valor-P) como número de variables tenga el modelo ajustado. El conjunto de hipótesis para cada una de las filas es:
\[\begin{align} H_0&: \text{la variable de la FILA no aporta información para el modelo}\\ H_a&: \text{la variable de la FILA si aporta información para el modelo} \end{align}\]
## Analysis of Variance Table
##
## Response: Price
## Df Sum Sq Mean Sq F value Pr(>F)
## EngineSize 1 3063.8 3063.78 61.3270 1.16e-11 ***
## Type 5 1223.8 244.77 4.8994 0.000542 ***
## Residuals 86 4296.4 49.96
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1