4

複数の変数を持つデータセットに列がある場合、これらのダミー変数を作成するにはどうすればよいですか。

例:車の色のオプションとして、色という名前の列があるとします。赤、緑、黄色、青、ピンク、灰色です。

これらの変数を因子に変える最良の方法は何ですか。手作業でダミー変数の束を作成せずに?

編集:それで私はグレッグが推薦したことをしました、そしてこれは私が持っているものです。私はNA出力について疑問に思っていましたが、なぜそこにあるのかわかりませんでした。

 > 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)

次に、「係数:(21は特異点のために定義されていません)」というメッセージが表示され、一部の変数の出力はNAです。

4

1 に答える 1

11

R は自動的にダミー変数を作成します。以下に基本的な例を示します。

> 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
> 

へのx=TRUE呼び出しlmの は、ダミー変数を含む、実際に使用される x 行列を返すように指示します。作成されたダミー変数を見たくない場合は、省略できます。?contrastsダミー変数の作成方法を設定する場合は、詳細を参照してください。

于 2012-11-19T20:14:57.650 に答える