lm.beta
라고하는 QuantPsyc
패키지에 편의 기능이 있습니다. 그러나 가장 쉬운 방법은 변수를 표준화하는 것입니다. 그런 다음 계수는 자동으로 표준화 된 "베타"계수 (즉, 표준 편차의 관점에서 계수)가됩니다. 예를 들어
,
lm(scale(your.y) ~ scale(your.x), data=your.Data)
당신에게 표준화 된 계수를 제공 할 것입니다.
정말 같은가요? 다음은 모두 동일하다는 것을 보여 그들이 있어야 같이 모두 동일하다는 것을 나타낸다
library("QuantPsyc")
mod <- lm(weight ~ height, data=women)
coef_lmbeta <- lm.beta(mod)
coef_lmbeta
> height
0.9955
mod2 <- lm(scale(weight) ~ scale(height), data=women)
coef_scale <- coef(mod2)[2]
coef_scale
> scale(height)
0.9955
all.equal(coef_lmbeta, coef_scale, check.attributes=F)
[1] TRUE
.
어색한 변수 이름을 피하는 방법은 무엇입니까? scale(height)
과 같이 이러한 변수가 아닌 변수 이름을 처리하지 않으려는 경우, 하나의 옵션은 데이터 집합 자체에서 lm
호출 외부의 변수를 표준화하는 것입니다. 예 :
women2 <- lapply(women, scale) # standardizes all variables
mod3 <- lm(weight ~ height, data=women2)
coef_alt <- coef(mod3)[2]
coef_alt
> height
0.9955
all.equal(coef_lmbeta, coef_alt)
[1] TRUE
여러 변수를 편리하게 표준화하려면 어떻게해야합니까? 데이터 집합의 모든 변수를 표준화하지 않으려는 경우 수식에서 발생하는 모든 변수를 선택할 수 있습니다. (women
만 height
를 포함하고 weight
때문이다) 예를 들어, 지금 mtcars
-dataset 참조 :
는 다음과 같은 말하는 회귀 모델을 내가 평가 싶어 :
modelformula <- mpg ~ cyl + disp + hp + drat + qsec
우리는 사실을 사용할 수 있습니다 all.vars
을 그 나에게 변수 이름의 벡터를 준다.
all.vars(modelformula)
[1] "mpg" "cyl" "disp" "hp" "drat" "qsec"
이에 따라 데이터 집합을 부분 집합화할 수 있습니다. 예를 들어,
mycars <- lapply(mtcars[, all.vars(modelformula)], scale)
은 모든 변수가 표준화 된 데이터 세트를 제공합니다. mycars
을 사용한 선형 회귀는 표준화 된 베타를 제공합니다. 이러한 모든 변수를 표준화하는 것이 합리적인지 확인하십시오!
이 함수를 사용하십시오.'stdcoeff <- function (MOD) {b <- summary (MOD) $ coef [-1, 1]; sx <- sd (MOD $ model [-1]); sy <- sd (MOD $ model [1]); 베타 <- b * sx/sy; return (beta)}''MOD'는'lm' 함수에 의해 생성 된 모델입니다. 그래서'stdcoeff (lm (...))'로 사용하게 될 것입니다. (필자는 쓰지 않았습니다. 그물, 그래서 답변으로 게시하지 않음) –
grrr .... 게시하기 전에 도움말 파일을 읽는 * 사람 *에게 발생하지 않습니까? –
나는 [이 방법] (http://www.stat.columbia.edu/~gelman/research/published/standardizing7.pdf)을 좋아했다. 쉬운 해석을 위해 입력 변수를 표준 편차의 2 배로 재조정합니다. 'standardize' 함수는'arm' 패키지에 있습니다. – BlankUsername