No.04207 Re: ダミー変数の中から不要なものを取り除きたい 【青木繁伸】 2007/08/22(Wed) 15:09
香川大学堀先生のページ
http://www.ec.kagawa-u.ac.jp/~hori/spss/eig0vec.txt
これをRで行うように書いた関数は,
http://aoki2.si.gunma-u.ac.jp/R/find_multico.html
SAS とか R では,従属な変数は取り除いてから分析してくれると思いますがいかが?
No.04208 Re: ダミー変数の中から不要なものを取り除きたい 【青木繁伸】 2007/08/22(Wed) 15:35
例題を分析してみました
オリジナルデータ(x1 は a,b,c の3カテゴリー,x2 は a,b,c,d の4カテゴリー)x1 x2 yx1, x2 ともに a をベースラインとしてダミー変数化すると以下のようになり,x1-b と x2-c が従属であることが分かる
c b 4
a a 1
b c 5
c d 11
b c 5
a a 2
b c 6
a b 0x1-b x1-c x2-b x2-c x2-dR では,x1, x2, は factor として読み込まれるので特に何の操作もせずに単純に重回帰分析するだけでよい
0 1 1 0 0
0 0 0 0 0
1 0 0 1 0
0 1 0 0 1
1 0 0 1 0
0 0 0 0 0
1 0 0 1 0
0 0 1 0 0> dfx2c の行に,見事に NA が並んでいる(すなわち,x2c は分析に使われなかったことを意味する)
x1 x2 y
1 c b 4
2 a a 1
3 b c 5
4 c d 11
5 b c 5
6 a a 2
7 b c 6
8 a b 0
> ans <- lm(y~x1+x2, df)
> summary(ans)
Call:
lm(formula = y ~ x1 + x2, data = df)
Residuals:
1 2 3 4 5 6 7 8
-8.004e-17 -5.000e-01 -3.333e-01 2.073e-17 -3.333e-01 5.000e-01 6.667e-01 4.848e-17
Coefficients: (1 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.5000 0.4410 3.402 0.04241 *
x1b 3.8333 0.5693 6.734 0.00669 **
x1c 4.0000 0.8819 4.536 0.02006 *
x2b -1.5000 0.7638 -1.964 0.14429
x2c NA NA NA NA
x2d 5.5000 1.1667 4.714 0.01807 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6236 on 3 degrees of freedom
Multiple R-Squared: 0.986, Adjusted R-squared: 0.9674
F-statistic: 52.93 on 4 and 3 DF, p-value: 0.004094
複雑なモデルも何のその> summary(lm(y~x2+x1:x2, df))
Call:
lm(formula = y ~ x2 + x1:x2, data = df)
Residuals:
1 2 3 4 5 6 7 8
3.112e-17 -5.000e-01 -3.333e-01 3.588e-17 -3.333e-01 5.000e-01 6.667e-01 -1.584e-16
Coefficients: (7 not defined because of singularities)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.5000 0.4410 3.402 0.04241 *
x2b -1.5000 0.7638 -1.964 0.14429
x2c 3.8333 0.5693 6.734 0.00669 **
x2d 9.5000 0.7638 12.438 0.00112 **
x2a:x1b NA NA NA NA
x2b:x1b NA NA NA NA
x2c:x1b NA NA NA NA
x2d:x1b NA NA NA NA
x2a:x1c NA NA NA NA
x2b:x1c 4.0000 0.8819 4.536 0.02006 *
x2c:x1c NA NA NA NA
x2d:x1c NA NA NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6236 on 3 degrees of freedom
Multiple R-Squared: 0.986, Adjusted R-squared: 0.9674
F-statistic: 52.93 on 4 and 3 DF, p-value: 0.004094
No.04209 Re: ダミー変数の中から不要なものを取り除きたい 【ロック】 2007/08/22(Wed) 15:54
ご返信ありがとうございました。大変参考になりました。
この課題に対して自分でプログラムを作っていて,一応ベタベタな方法を見つけました。以下のような流れです。
1.ダミー変数を1列追加する。
2.ダミー変数全体の相関行列を求める。
3.相関行列の逆行列を計算する。
4.逆行列が解けないときは追加したダミー変数は使用しない。
逆行列が解ければ追加したダミー変数は使用する。
5.1〜4を繰り返します。
● 「統計学関連なんでもあり」の過去ログ--- 040 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る