No.16244 Re: Dummy variable trap 【青木繁伸】 2012/01/17(Tue) 16:31
カテゴリーの数だけダミー変数を作ると,それらのダミー変数は相互に一次従属になるのです。定数項のありなしには 関係しません(原因がそこにはないので,いずれの場合にも起こります)。ただし,例外的に,ダミー変数の元になる変数を1個だけ使う場合で定数項を含まな い場合のみ,多重共線性は生じません(1つのダミー変数は定数項として扱われるので)。> set.seed(12345)
> d <- data.frame(x1=sample(3, 10, replace=TRUE), x2=sample(2, 10, replace=TRUE), y=rnorm(10))
> d$d11 <- (d$x1==1) + 0 # 1 つ目の変数に対応するダミー変数
> d$d12 <- (d$x1==2) + 0
> d$d13 <- (d$x1==3) + 0
> d$d21 <- (d$x2==1) + 0 # 2 つ目の変数に対応するダミー変数
> d$d22 <- (d$x2==2) + 0
> (d2 <- d[c(4:8, 3)])
d11 d12 d13 d21 d22 y
1 0 0 1 1 0 -0.1162478
2 0 0 1 1 0 1.8173120
3 0 0 1 0 1 0.3706279
4 0 0 1 1 0 0.5202165
5 0 1 0 1 0 -0.7505320
6 1 0 0 1 0 0.8168998
7 1 0 0 1 0 -0.8863575
8 0 1 0 1 0 -0.3315776
9 0 0 1 1 0 1.1207127
10 0 0 1 0 1 0.2987237
> lm(y ~ ., d2) # 元の 2 変数の全カテゴリーを使う定数項ありモデル
Call:
lm(formula = y ~ ., data = d2)
Coefficients: # 結果が NA になっている変数は従属なので R が自動的に除いて分析したということ
(Intercept) d11 d12 d13 d21 d22
0.3347 -0.8702 -1.3766 NA 0.5008 NA
> lm(y ~ .-1, d2) # 元の 2 変数の全カテゴリーを使う定数項なしモデル
Call:
lm(formula = y ~ . - 1, data = d2)
Coefficients:
d11 d12 d13 d21 d22
-0.5356 -1.0419 0.3347 0.5008 NA
> lm(y ~ d11+d12+d13, d2) # 元の 1 変数の全カテゴリーを使う定数項ありモデル
Call:
lm(formula = y ~ d11 + d12 + d13, data = d2)
Coefficients:
(Intercept) d11 d12 d13
0.6686 -0.7033 -1.2096 NA
> lm(y ~ d11+d12+d13-1, d2) # 元の 1 変数の全カテゴリーを使う定数項なしモデル
# この場合のみ,多重共線性は生じない(問題なく解が求まる)
Call:
lm(formula = y ~ d11 + d12 + d13 - 1, data = d2)
Coefficients:
d11 d12 d13
-0.03473 -0.54105 0.66856
● 「統計学関連なんでもあり」の過去ログ--- 045 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る