2017-11-05 24 views
1
나는 표준화 계수를 계산하기 위해 다음 코드를 사용하려고했다

자신에 의해 계산 표준화 계수와 다른 결과를 회귀 변수와 종속 변수를 표준화 한 결과입니다.lm.beta는

두 개의 출력은 다음과 같습니다

> lm.beta(lm1) 
    income 
0.7124308 

> lm1e$coef 
(Intercept) stdincome 
    619.82365 13.57419 

당신이 볼 수 있듯이, 그 결과 중 하나는 0.7124308이며, 또 다른 하나는 13.57419.They 내 이해에서 동일해야합니다.

왜 그런가?

답변

1

변수의 크기를 조정하는 방법에 오류가 있습니다. lm.beta은 표준화되지 않은 계수를 표준화 된 계수로 사후 변환 (post hoc transformation)하므로 수식이 다릅니다. 그러나 변수의 올바른 사전 회귀 표준화는 동일한 결과를 가져옵니다.

오류 : (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