안녕하세요. Growth Scientist입니다.
오늘은 여러가지 회귀모델을 비교할 수 있는 방법에 대해서 알아볼 거예요.
부분 F 검정(Partial F - Test)는 앞선 포스팅에서의 F 검정과 유사하게
연구자가 검정하고 싶은 부분을 개별적으로 유의성을 검정해줘요.
또한, 앞에선 하나의 모델로 ANOVA Table을 봤지만,
오늘은 두 개의 모델을 비교하여 두 모델의 적합성을 판단하는 작업을 해볼게요.
그럼 시작해볼까용?
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 #성별
[ 부분 F 검정 ]
부분 F 검정의 핵심은 회귀모델 속 '일부의 β=0'을 찾기 위한 과정인데요.
설명변수들이 많으면 설명력이 증가하겠지만, 그만큼 모델의 효율성은 떨어지게 돼요.
변수를 최대한 압축적으로 구성하면서 예측력을 높이는 방법이 필요하다는 것이죠.
그 중 하나가 바로 부분 F 검정이에요.
모든 변수가 들어가 있는 Full_model과 변수의 개수를 줄인 Reduced_model로
두 모델을 만들어 비교를 한다음, Full model과 Reduced_model의 설명력에 차이가 크지 않다면
축소된 모형으로 모델 효율을 높일 수 있다는 것이 핵심입니다.
F값을 구하기 위한 식은 다음과 같습니다.
Reduced_model의 오차 SSE(R)와 Full_model의 오차 SSE(F)가 0에 가까울수록
본 부분 F검정의 귀무가설인 β2=0이 기각되지 못하고 Reduced_model을 용인할 수 있습니다.
(여기서 β2(bold체 주목)는 실제 β2가 아닌 '0이라고 생각되는 설명변수들의 집합이라고 생각해주세요')
반대로, 두 오차의 차이가 너무커서(SSE(R)값이 너무 커서) F값이 크게 나온다면,
Full_model의 사용을 다시 고려해보거나 다른 축소모형을 찾아나가야 합니다.
원래라면 각 모델의 SST, SSR, SSE를 모두 구하여 해당 식에 대입해주어야 하는데,
R 프로그램을 이용하면, 훨씬 빠르게 연산할 수 있답니다 ㅎ.
[ ANOVA 부분 F 검정 ]
부분 F 검정을 위한 코드는 이렇습니다.
저는 지난 분석에서 Summary와 Anova(축차제곱검정)에서 부적합하다고 나온 X4를 대상으로
과연 X4를 포함한 모델과 그렇지 않은 모델이 차이가 있어 제거해도 되는지 검정했습니다.
그리고 reduced_model이 anova함수에서 첫번째 인자가 되어야 합니다!
축소모형의 RSS(잔차제곱합=SSE(R))는 34,216이고, 완전모형의 RSS(SSE(F))는 34,209네요.
두 RSS의 차이는 7.3122로 나왔고 F값은 1.2263, p-value는 0.2682로 나와
full_model의 β2=0 라는 귀무가설을 기각하지 못하였어요.
따라서 해당 데이터에서 X4(스트레스 인지율)은 비만도에 영향을 미치지 못하는 변수로 판단할 수 있어요.
저는 스트레스가 비만도에 큰 기여를 할 것으로 예상했는데 말이죠..ㅎ
요약해드리면, 다중회귀식에서 의미를 갖지 못한다고
생각되는 설명변수들을 걸러내어 효율적인 모델을 구축하는 것이 부분 F검정입니다.
약간의 이론과 R을 이용하여 간단하게 검정할 수 있는 방법을 소개해드렸어요.
회귀분석을 비롯한 수 많은 분석에는 정답이 없습니다.
다만 의사결정 과정을 뒷받침 할 수 있는 설득력있는 근거를 제시할 수 있어야합니다.
그 사례가 부분 F 검정이 될 수 있고요.
다음 포스팅에는 후보 모델을 선택하여 어긋난 오차의 가정을 충족시키는 방법에 대해서 알아볼게요!
그럼 BYE~
'Data Analysis > [Project] Regression With R' 카테고리의 다른 글
[R 프로그래밍 회귀분석] BOXCOX 변수변환 (0) | 2022.07.02 |
---|---|
[R 프로그래밍 회귀분석] 잔차도 분석 (0) | 2022.07.01 |
[R 프로그래밍 회귀분석] ANOVA 함수와 해석 (0) | 2022.06.28 |
[R 프로그래밍 회귀분석] Summary 분석 해석 (0) | 2022.06.26 |
[R 프로그래밍 회귀분석] 변수선택 - 동시/단계별 변수입력 (0) | 2022.06.25 |