SPSSでの標準化係数
SPSSでの標準化係数
ダミー変数の標準化偏回帰係数 - 裏 RjpWiki さんからたどって
重回帰分析で標準化回帰係数βを出力するR関数 - こにしき(言葉、日本社会、教育)
さんの記事を見た。
SPSS20は使おうと思えば使えるので、やってみた。
まず、
#### y = x + z ... の重回帰分析
y <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
x <- c(2, 1, 4, 3, 6, 5, 8, 7, 10, 9)
z <- factor(c("A","A","B","B","B","B","C","C","C","C"))
というデータをSPSSに入力する。
x.yは連続変数(スケール)に指定
zは文字型の名義変数に指定した
ところが、線形モデルに、そもそも文字型を投入できないことが判明!
名義変数に指定しているというのに、なんという不親切な仕様。
仕方がないので、Zの(A,B,C)=(1.2.3)に変更し、数値型/名義変数にした。
係数a |
||||||||
モデル |
標準化されていない係数 |
標準化係数 |
t 値 |
有意確率 |
B の 95.0% 信頼区間 |
|||
B |
標準誤差 |
ベータ |
下限 |
上限 |
||||
1 |
(定数) |
-1.065 |
1.273 |
|
-.836 |
.431 |
-4.076 |
1.947 |
X |
.548 |
.316 |
.548 |
1.735 |
.126 |
-.199 |
1.296 |
|
Z |
1.613 |
1.213 |
.420 |
1.330 |
.225 |
-1.256 |
4.481 |
あれれ、Zが1つしか結果を持たない。
何のために名義変数にしたんだよ。意味無いじゃん。どうもそのまま
1.2.3の連続変数としてZを解析している。実際Rで1.2.3の連続変数で
解析した結果と一致する。
仕方ないので、自分でダミー変数を作成する。すなわち
B= 0 0 1 1 1 1 0 0 0 0
C= 0 0 0 0 0 0 1 1 1 1
これでやり直すと
モデル |
標準化されていない係数 |
標準化係数 |
t 値 |
有意確率 |
B の 95.0% 信頼区間 |
|||
B |
標準誤差 |
ベータ |
下限 |
上限 |
||||
1 |
(定数) |
.714 |
.952 |
|
.750 |
.482 |
-1.616 |
3.045 |
X |
.524 |
.348 |
.524 |
1.506 |
.183 |
-.327 |
1.375 |
|
B |
1.429 |
1.429 |
.244 |
1.000 |
.356 |
-2.067 |
4.924 |
|
C |
3.333 |
2.623 |
.569 |
1.271 |
.251 |
-3.084 |
9.751 |
> res.scale
Call:
lm(formula = Y ~ X + Z.B + Z.C)
Coefficients:
(Intercept) X Z.B Z.C
1.860e-17 5.238e-01 2.437e-01 5.685e-01
結果はSPSSと一致した。
しかし、そもそもカテゴリー変数の標準化係数には意味が無いと
どこかで聞いたことがあるし、自分でも意味が無いと思う。
> aa <- scale(c(1,1,1,1,1,0,0,0,0,0))
> bb <- scale(c(1,0,0,0,0,0,0,0,0,0))
> aa[,1]
[1] 0.9486833 0.9486833 0.9486833 0.9486833 0.9486833 -0.9486833 -0.9486833 -0.9486833 -0.9486833
[10] -0.9486833
> bb[,1]
[1] 2.8460499 -0.3162278 -0.3162278 -0.3162278 -0.3162278 -0.3162278 -0.3162278 -0.3162278 -0.3162278
[10] -0.3162278
N=10の場合、半分くらい1のダミー変数ではプラマイ1くらい
対して1個だけ1のダミー変数では+2.8と-0.3に標準化される。
この状況で1変化した場合の影響って言われても、これでは余計
に比較しにくい。
連続変数同士の比較には有用と思うが、カテゴリー変数の場合
元の1/0の方がよほど変数同士の影響の比較ができるので、使う
状況は限られそうに思う。