안녕하세요. Growth Scientist입니다.
지난번 잔차도 분석에 이어서, 오늘은 오차의 정규성을 교정하기 위해
BOXCOX 메소드를 활용한 변수변환에 대해서 소개할거예요.
변수변환은 정규성 이외에도 회귀모형의 선형성, 등분산성을 위해서도 이용할 수 있는데요.
반응변수 Y를 Log, 역수, sqrt(루트)와 같이 수학적으로 변형시키는 방법이에요.
그렇다면 들어가기 전, 변수 변환의 효과에 대해서 살펴볼까요?
[ 변수변환 효과 ]
변수변환은 데이터의 선형성을 위해서 실시되기도 해요.
포유류의 몸무게와 뇌몸무게를 비교한 scatter plot을 봅시다.
자료를 보니 2개 정도의 극단치가 보이네요. 가장 구석에 있는 저 동물은 아프리카 코끼리예요.
자료끼리의 텀을 살펴보면 x와 y값 모두 차이가 큰 것을 볼 수 있죠.이럴땐 큰수를 작은수로 줄여주는 Log, Inverse, Sqrt 변환을 쓰면 좋아요. 저는 각각의 변수에 Log변환을 해볼게요
※ 변수변환의 이해
Log 10 = 1
Log 100 = 2
90의 차이 -> 1의 차이
이러한 방식으로 자료의 분포를 보며 적절하게 변환시켜주면 됩니다.
하지만 변환 시에도 주의해야할 점이 있는데, 포스팅 마지막 부분에 설명드릴게요.
[ 변수변환 실습 ]
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 #성별
저번 포스팅에서 잔차도를 분석할 때, QQPlot을 기억하시나요?
아래의 그림처럼 정규성이 잘 지켜지키 않고있죠.
이럴 땐 보통 반응변수(Y)에 대한 변수변환을 실시하는데
흔히 BOX-COX 그래프를 그려 Log, Inverse, Sqrt 등의 적절한 변수변환 방법을 채택합니다.
BOX-COX 변환은 Y가 정규분포를 따르는 최대 가능도를 알려주는 방법인데요.
감마(λ)가 0일 때와 0이 아닐 때를 구분하여 반응변수를 위 식에 맞게 변환해주면 됩니다.
BOX-COX 그래프의 명령은 boxcox(model)이에요.
위 그래프에선 최대 가능도(Log-likelihood)를 나타내는 λ가 -0.8정도네요.
최대 가능도는 해당 모델이 가장 높은 정규성을 보일 확률을 나타내요.
여기서 문제는 아래와 같은 식을 구성했을 때, 추정된 회귀식에서 Y를 어떻게 해석해야 하는가예요.
X가 한단위 증가할때, Y는 어떤식으로 변하는지 직관적으로 알려주기 어렵죠.
그래서 연구자의 판단하에, -0.8을 -1로 생각하여 역수 변환을 실시하거나,
루트변환을 해도 문제가 없습니다. 저는 간편하게 역수 변환을 선택할게요.
역수 변환 전 그래프보다 더욱 정규성이 잘 지켜지는 것을 볼 수 있죠?
변수 변환을 할 때 주의할 점이 있어요.
1. 정규성을 완벽하게 지키기 위해서 복잡한 변수변환을 하지말기
2. 변수 변환시 회귀식을 용이하게 해석할 수 있는지 생각하기
3. 여러 데이터와 분포를 본 후 꼭 필요한 작업인지 다시 검토하기
변수변환은 반응변수의 정규성을 위해서도, 모형의 선형성을 위해서, 등분산을 위해서 필요한 작업이에요.
위 규칙과 충분한 검토를 통해서 알맞은 방법으로 변수변환을 한다면, 회귀모형의 정확도가 올라갈 것 같아요.
다음 포스팅에는 이 모델을 가지고 더빈 왓슨 검정과 다중공선성 검정을 해볼게요.
그럼 BYE~
'Data Analysis > [Project] Regression With R' 카테고리의 다른 글
[R 프로그래밍 회귀분석] 표준화 회귀계수 (0) | 2022.07.07 |
---|---|
[R 프로그래밍 회귀분석] 다중공선성과 더빈왓슨 검정 (0) | 2022.07.05 |
[R 프로그래밍 회귀분석] 잔차도 분석 (0) | 2022.07.01 |
[R 프로그래밍 회귀분석] 부분 F 검정과 ANOVA를 통한 모델 비교 (0) | 2022.06.29 |
[R 프로그래밍 회귀분석] ANOVA 함수와 해석 (0) | 2022.06.28 |