蝸牛の歩み

蝸牛の如く,ゆっくりでも着実に前へ・・・

標準偏回帰係数(標準化回帰係数)

重回帰の標準偏回帰係数を求めるために,ちまちまと電卓で計算したりしていたのだが,どうにも面倒くさい.それに,本当にそれで合っているのか不安な部分もある.ググってみるとSPSSでなら出力されるようだったので,メディアセンターの教育用端末にインストールされているSPSSで計算してきた.電卓での計算が正しかったことも確かめられた.
あとになって,Rでの計算法を見つけた.

標準化偏回帰係数を得る

●ベクトルとして計算させると楽である。例えば,従属変数をy,独立変数をx1, x2, x3とすれば,
res <- lm(y~x1+x2+x3)で線型回帰を行った後,
sdd <- c(0,sd(x1),sd(x2),sd(x3))として各独立変数の不偏標準偏差ベクトルを作り(0は切片用),
stb <- coef(res)*sdd/sd(y)として,偏回帰係数ベクトルに不偏標準偏差ベクトルを掛けて,従属変数の不偏標準偏差で割ってやれば,stbに標準化偏回帰係数のベクトルが得られる。

発想の転換で,scale を使って標準化したデータセットで同じ分析を行う。計算時間はもったいないけど,複雑なモデルだと間違いは少ないかも。
d がデータフレームだとして,

ds <- data.frame(scale(d)) # 標準化する
lm(y ~ x1+x2+x5, d)
lm(y ~ x1+x2+x5, ds) # 第二引数だけが違う
# 厳密に言えば,後者のモデルの最後に -1 を付けておくのがいいのかもしれない

前者は回帰係数,後者は標準化回帰係数が得られる(^_^) -- 青木繁伸 2004-11-26 (金) 19:20:51