regresion - variables dummy concepto
R-Modelo con muchas variables ficticias (1)
Si tengo una columna en un conjunto de datos que tiene múltiples variables, ¿cómo podría crear estas variables ficticias?
Ejemplo: digamos que tengo una columna llamada color que tiene: rojo, verde, amarillo, azul, rosa y gris como opciones para el color de un automóvil.
Cuál es la mejor manera de convertir estas variables en factores. sin crear un grupo de variables ficticias a mano?
Editar: Así que hice lo que Greg me recomendó y esto es lo que tengo. Sin embargo, me preguntaba acerca de la salida de NA y no estaba seguro de por qué está allí.
> data$Trim<-factor(data$Trim)
> data$Model<-factor(data$Model)
> data$Type<-factor(data$Type)
> data=cbind(Price,Mileage,Buick,Cadillac,Chevrolet,Pontiac,SAAB,Saturn,Model,Trim,Type,Cylinder,Liter,Doors,Cruise,Sound,Leather)
> fit <- lm( Price ~ Mileage+Buick+Cadillac+Chevrolet+Pontiac+SAAB+Saturn+Model+Trim+Type+Cylinder+Liter+Doors+Cruise+Sound+Leather, x=TRUE )
> summary(fit)
Luego aparece un mensaje "Coeficientes: (21 no definido debido a singularidades)" y para algunas de las variables, el resultado es NA.
R creará variables ficticias automáticamente, aquí hay un ejemplo básico:
> mycars <- mtcars
> mycars$cyl <- factor(mycars$cyl)
> fit <- lm( mpg ~ wt+cyl, data=mycars, x=TRUE )
> summary(fit)
Call:
lm(formula = mpg ~ wt + cyl, data = mycars, x = TRUE)
Residuals:
Min 1Q Median 3Q Max
-4.5890 -1.2357 -0.5159 1.3845 5.7915
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 33.9908 1.8878 18.006 < 2e-16 ***
wt -3.2056 0.7539 -4.252 0.000213 ***
cyl6 -4.2556 1.3861 -3.070 0.004718 **
cyl8 -6.0709 1.6523 -3.674 0.000999 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.557 on 28 degrees of freedom
Multiple R-squared: 0.8374, Adjusted R-squared: 0.82
F-statistic: 48.08 on 3 and 28 DF, p-value: 3.594e-11
> head(fit$x)
(Intercept) wt cyl6 cyl8
Mazda RX4 1 2.620 1 0
Mazda RX4 Wag 1 2.875 1 0
Datsun 710 1 2.320 0 0
Hornet 4 Drive 1 3.215 1 0
Hornet Sportabout 1 3.440 0 1
Valiant 1 3.460 1 0
>
El x=TRUE
en la llamada a lm
le dice que devuelva la matriz x efectivamente utilizada, que incluye las variables ficticias. Si no quiere ver las variables ficticias creadas, entonces puede dejar eso fuera. Vea ?contrasts
para obtener más detalles si desea establecer cómo se crean las variables ficticias.