2017-11-05 17 views
1
私は、標準化係数を計算するために、次のコードを使用しようとしていた

自分で計算し標準化された係数と異なる結果を生成します回帰変数と従属変数を標準化した結果です。lm.betaは

2つの出力は、次のとおりです。

> lm.beta(lm1) 
    income 
0.7124308 

> lm1e$coef 
(Intercept) stdincome 
    619.82365 13.57419 

あなたが見ることができるように、結果の一つは0.7124308で、もう一つは13.57419.Theyが私の理解から等価であるべきです。

理由は何ですか?

答えて

1

変数をどのようにスケーリングしたかに誤りがあります。 lm.betaは、標準化されていない係数の標準化された係数への事後変換を行うので、式は異なります。しかし、変数の正しい事前回帰標準化は同じ結果をもたらします。

エラー:(score-mean(score)/sd(score))(score-mean(score))/sd(score)である必要があります。操作の順序が重要です!

それを確認してください:だから

> (score[1]-mean(score))/sd(score) 
[1] 1.923202 #Clearly standardized 
> (score[1]-mean(score)/sd(score)) 
[1] 656.4671 #Clearly NOT standardized! 

stdscore<-(score-mean(score))/sd(score) 
stdincome<-(income-mean(income))/sd(income) 
lm1e<-lm(stdscore~stdincome) 

lm.beta(lm1) 
income 
0.7124308 

lm1e$coef[2] 
stdincome 
0.7124308 

round(lm.beta(lm1),5) == round(lm1e$coef[2],5) 
income 
    TRUE