No.15313 Re: GLMの標準(化)偏回帰変数 【青木繁伸】 2011/09/05(Mon) 16:50
重回帰分析のときと同じように考えて見ればよいと思います。
重回帰分析の場合,従属変数と独立変数を標準化(平均値0,分散1)して重回帰分析を行ったときの偏回帰係数が標準化偏回帰係数です。元のデータを使って得られる偏回帰係数との関係を見れば,http://aoki2.si.gunma-u.ac.jp/lecture/Regression/mreg/mreg2.html のようになっているので,結局の所は一々データを標準化して分析し直すなんてことは必要ないということです。
ロジスティック回帰分析の場合について,以下のようなデータを分析してみましょう。x1 x2 y x1s x2sx1s,x2s はx1, x2 を標準化したものです。
1 62.3 55.8 1 1.4679428 1.4703804
2 50.0 46.7 0 -0.0578907 -1.2418754
3 52.5 48.9 0 0.2522381 -0.5861652
4 57.5 52.1 1 0.8724956 0.3675951
5 49.5 49.5 0 -0.1199165 -0.4073351
6 51.7 51.3 0 0.1529969 0.1291550
7 54.4 55.6 1 0.4879359 1.4107704
8 57.2 53.0 0 0.8352801 0.6358402
9 52.4 52.7 1 0.2398329 0.5464252
10 46.4 51.5 1 -0.5044761 0.1887651
11 33.6 48.7 1 -2.0923354 -0.6457752
12 38.1 44.6 0 -1.5341036 -1.8677805
まずは,x1, x2 を使って分析します。> ans <- glm(y~x1+x2, family=binomial(link="logit"), data=df)
> summary(ans)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -66.1574 44.9378 -1.472 0.141
x1 -0.3952 0.2544 -1.553 0.120
x2 1.6828 1.0594 1.588 0.112次に,x1s, x2s を使って分析します。> anss <- glm(y~x1s+x2s, family=binomial(link="logit"), data=df)
> summary(anss)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.5053 1.1791 -0.429 0.668
x1s -3.1860 2.0510 -1.553 0.120
x2s 5.6460 3.5545 1.588 0.112
x1,x2 の標準偏差はそれぞれ 8.061168 と 3.355141
2つの分析結果の係数とこの標準偏差にどのような関係があるかを見いだしましょう。
x1 については,-0.3952*8.061168 = -3.185774
x2 については,1.6828*3.355141 = 5.646031
というような関係にあることがわかります。
ポアソン分布を用いる場合はどうなるか,やってみて下さい。
No.15315 Re: GLMの標準(化)偏回帰変数 【まつ】 2011/09/05(Mon) 17:23
さっそくありがとうございます。確かに青木先生の方法で,ポアソン分布でやってみると,標準化偏回帰係数は求められました(一致しました)。
疑問なのですが,青木先生の以下のサイトでは,
http://aoki2.si.gunma-u.ac.jp/lecture/Regression/mreg/mreg2.html
標準化偏回帰係数=偏回帰係数*(独立変数の標準偏差/従属変数の標準偏差)
となっておりますが,上の計算の場合,従属変数の標準偏差で割る必要はないのでしょうか?
この質問をする前は,従属変数の標準偏差で割っており,どうも値が合わないなぁと思っていた次第です。
No.15317 Re: GLMの標準(化)偏回帰変数 【青木繁伸】 2011/09/05(Mon) 17:25
> 上の計算の場合,従属変数の標準偏差で割る必要はないのでしょうか?
ロジスティック回帰分析の場合,従属変数は0/1データなので,標準化しても意味がないのです。
No.15319 Re: GLMの標準(化)偏回帰変数 【まつ】 2011/09/05(Mon) 17:41
すみません。こんがらがってきました。
例えば,以下のようなコードを走らすと,
従属変数の標準偏差で割らなくても一致するのはなぜでしょうか?
## 正規分布を誤差分布にした例
# 独立変数を適当に作る
x1 <- 1:20 + rnorm(20,0,2)
x2 <- rnorm(20, 0, 3)*0.1
c.x1 <- 0.2 # x1の真の偏回帰係数
c.x2 <- 0.8 # x2の真の偏回帰係数
# 従属変数を作る
yy <- rnorm (20, x1*c.x1 + x2*c.x2 + 0.1, 2)
# 回帰結果を格納する
res <- glm(yy ~ x1 +x2, family=gaussian) # lmで良いですが。
# 独立変数を標準化して,回帰を行う
xx1 <- (x1-mean(x1))/sd(x1)
xx2 <- (x2-mean(x2))/sd(x2)
res2 <- glm(yy ~ xx1 +xx2,family=gaussian)
summary(res2)
# 独立変数の標準偏差をかけたものと一致する。
res$coefficients[2]*(sd(x1))
res$coefficients[3]*(sd(x2))
No.15322 Re: GLMの標準(化)偏回帰変数 【青木繁伸】 2011/09/05(Mon) 18:07
この場合,予測値は全く同じになりますよね。独立変数だけを線形変換すると係数に反映されます。例えばx1を10倍すると係数は1/10になります(そうならないと予測できない)。
従属変数も標準化した場合,定数項が0になるというところが違ってきます。
No.15324 Re: GLMの標準(化)偏回帰変数 【まつ】 2011/09/05(Mon) 18:31
青木様,ありがとうございます。
標準化偏回帰係数の求め方自体で勘違いをしておりました。説明変数だけでなく,目的変数も標準化する必要があるのですね。大変失礼致しました。
重ねて御礼申し上げます。
No.15328 Re: GLMの標準(化)偏回帰変数 【まつ】 2011/09/05(Mon) 19:08
度々すみません。
ポアソン分布を用いる場合,従属変数を標準化すると,負の値が出てくる(+整数値にならない)ため,うまく回帰を当てはめるとこができず,一致するかどうか確認できません。
http://aoki2.si.gunma-u.ac.jp/lecture/Regression/mreg/mreg2.html
この関係が成り立つと考えてよいのでしょうか?
No.15329 Re: GLMの標準(化)偏回帰変数 【青木繁伸】 2011/09/05(Mon) 20:02
> ポアソン分布を用いる場合,従属変数を標準化すると,負の値が出てくる
ですから,その場合も,従属変数は標準化しない。
要するに,独立変数間の総体的重要度を知りたいだけなら,従属変数を標準化する必要はない。
No.15330 Re: GLMの標準(化)偏回帰変数 【まつ】 2011/09/05(Mon) 20:08
> 要するに,独立変数間の総体的重要度を知りたいだけなら,従属変数を標準化する必要はない。
ありがとうございます。本質的に,この式が正規分布以外も成り立つのか不安でしたので,確認しておきたかった次第です(正規分布が誤差である文脈でよく聞くので他の分布に適応可能か不安でした)。
大変勉強になりました。
この短い時間に素早いご回答頂き,誠にありがとうございました。
● 「統計学関連なんでもあり」の過去ログ--- 044 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る