안녕하세요. Growth Scientist입니다.
오늘은 주어진 회귀모델에 대한 표준화 회귀계수를 구해볼거예요.
'표준화'라는 말은 다른 두 객체를 비교할 수 있도록
하나의 기준으로 재구성하는 것을 말하죠?
회귀계수에서도 마찬가지로 단위가 각각 다른 설명변수들에 대해
하나의 기준으로 일치시키는 표준화 작업으로 반응변수에 미치는
영향력 크기를 한 눈에 비교할 수 있어요.
지금까지 하고있는 프로젝트로 예를 들어볼까요?
저는 반응변수 비만<BMI> 미치는 설명변수들로
나이, 주관적 비만의식, 인슐린수치, 성별을 선정했어요.
네 변수 모두 단위가 달라 회귀계수의 정확한 비교를 할 수 없겠죠?
가령, 100cm = 1m는 같은데 그 수치가 달라 숫자로만 보면
100배의 크기를 가진다고 오해할 수 있으니까요.
그래서 단위의 영향력을 제거하여 정확한 크기를
나타내는 것이 표준화 회귀계수입니다.
그럼 직접 실습하며 비교해봅시다!
DATA : 국민건강영양조사<2019>- hn_dat
Y <- hn_dat$HE_BMI #BMI
X1 <- hn_dat$age #연령
X2 <- hn_dat$BO1;#주관적 체형인식
X3 <- hn_dat$ainc #소득
X4 <- hn_dat$BP1 #스트레스 인지율
X5 <- hn_dat$LQ_8HT #행복감
X6 <- hn_dat$educ #학력
X7 <- hn_dat$LQ_3HT #우울감
X8 <- hn_dat$BO2_1 #체중 조절 여부
X9 <- hn_dat$HE_insulin #인슐린 수치
X10 <- hn_dat$sex;X10 #성별
[ 표준화 회귀계수 ]
표준화 회귀계수를 구성하는 방법엔 여러가지가 있는데,
먼저 이론적인 공식을 보면서 코딩이 어떻게 되는지 살펴볼게요.
어디서 많이 본 형태죠?
~N(0,1)인 정규분포를 만들 때 쓰는 공식입니다.
핵심 아이디어는 Normal 분포를 만들때랑 똑같아요.
위 공식을 그대로 코드에 적용시켜보면 이렇게 돼요.
표준화 코딩으로 model1_std라는 모델을 만들고
summary<model1_std>를 통해 표준화 회귀계수를 구할 수 있어요.
왼쪽과 오른쪽의 회귀계수를 비교해보면 다르다는 것을 느낄 수 있죠.기본 모델의 β1 = 0.0007인데 표준화 회귀계수의 β1 = 0.086이에요.
변수들의 영향력 크기를 따져봤을 때,
기본 모델은 주관적 비만인식(X2) > 성별(X10) > 인슐린 수치(X9) > 연령(X1)
표준화 회귀계수는 주관적 비만인식(X2) > 성별(X10) > 연령(X1) > 인슐린 수치(X9) 순으로 영향력을 가지네요.
※ 본 모델은 역수변환 모델로, 1/Y이 작아지면 Y는 커집니다.
사실 이러한 코딩을 매번 쓰는 건 사실상 어렵고 귀찮아요.
그래서 lm.best 패키지를 쓰는 것을 추천드려요.
install.packages('lm.beta')
library(lm.best)
lm.best(model)
분명 손으로 코딩한 표준화 회귀계수와 똑같이 나와야하는데, 다르게 나왔어요.
심지어 절편(Intercept)과 X10에서 NA(결측치)가 나왔어요.
X10(성별)의 경우 0과 1로 코딩이 되어있기 때문에, 값이 안나온 듯하고,
절편의 NA 값은 데이터프레임에서 섞여있는 결측치로 인해 정확한 측정이 안된듯 해요.
만약 다른 원인이라면 댓글에 남겨주세요!
오늘은 표준화 회귀계수를 구하는 법에 대해서 알아보았는데요.
요약하면, 표준화 회귀계수는 단위를 통일시킴으로 반응변수에 미치는
설명변수의 영향력의 크기를 알아보기 쉽게하는 방법이에요.
다음 포스팅에서는 회귀 모형의 훈련과 예측을 해볼게요.
그럼 BYE~
'Data Analysis > [Project] Regression With R' 카테고리의 다른 글
[R 프로그래밍 회귀분석] 모형 학습과 테스트 (0) | 2022.07.08 |
---|---|
[R 프로그래밍 회귀분석] 다중공선성과 더빈왓슨 검정 (0) | 2022.07.05 |
[R 프로그래밍 회귀분석] BOXCOX 변수변환 (0) | 2022.07.02 |
[R 프로그래밍 회귀분석] 잔차도 분석 (0) | 2022.07.01 |
[R 프로그래밍 회귀분석] 부분 F 검정과 ANOVA를 통한 모델 비교 (0) | 2022.06.29 |