r-statistics-fanの日記

統計好きの現場の臨床医の覚書のようなもの

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

1.429

1.429

.244

1.000

.356

-2.067

4.924

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の方がよほど変数同士の影響の比較ができるので、使う

状況は限られそうに思う。