안녕하세요. Growth Scientist입니다.
오늘은 R 프로그래밍을 이용하여 잔차도를 분석해볼거예요.
회귀식이 설명하지 못하는 모집단의 부분을 오차라고 하고,회귀식이 설명하지 못하는 표본집단의 부분을 잔차라고 해요.표본집단을 대상으로 진행되는 연구는 모두 잔차를 다루죠.표본 평균이 모평균을 추정하는 도구가 되듯이,잔차도 모집단의 오차를 추정하는 도구가 돼요.
회귀분석을 위해선 몇가지 가정을 충족해야해요.
오차의 등분산성, 독립성, 정규성, 회귀식의 선형성
을 말이죠.위 조건들이 충족되면 회귀모델로 사용할 수 있는데,이를 검증하기 위해선 잔차도를 그려봐야 한답니다.
자 그럼 바로 시작해볼까요?
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 #성별
저는 이번 연구에서 stepwise (단계별 변수선택)에 의해 선택된 변수들 중
가장 설명력이 높고 연구의도에 부합하는 변수들로 X1, X2, X9,X10을 골랐습니다.
(단계별 변수선택법 참고)
[R 프로그래밍 회귀분석] 변수선택 - 동시/단계별 변수입력
안녕하세요. Growth Scientist입니다. 오늘은 다중회귀분석 4번째 포스팅으로 가장 설명력이 높은 변수들을 선택하는 방법을 알려드리려고 합니다. 회귀모델에 들어갈 변수를 선정하는 것은 연구자
zzz0101.tistory.com
[ 잔차도 - Residual Plot ]
먼저 잔차도를 불러와야합니다.
기본 문법:
par(mfrow=c(2,2)) #output화면을 2x2로 나누기
plot(model) #model의 잔차도를 불러오기
보이는 것처럼 모든 잔차도를 한 번에 불러올 수 있는 메소드로 par(mfrow=c(2,2))를 쓰는 것이 핵심입니다.
그럼 이제 하나씩 그래프를 보며 분석을 해볼까요?
[ 잔차와 적합값 ]
다시 par(mfrow=c(1,1))로 설정해주고
plot(model,1)을 해주세요.
잔차와 적합값은 잔차의 등분산성을 확인할 수 있는데, 등분산성은 표본간의 신뢰성 있는 비교를 위해 필요해요.
이 산점도에 대한 핵심은 산점도들이 무작위적으로 분포되어있어야 한다는 것입니다.
위 그림처럼 나팔형모양이나 곡선모양과 같은 패턴을 보인다면 오차의 가정을 충족시키지 못한다고 판단합니다.
[ QQPlot ]
plot(model,2)
QQPlot은 표준화 잔차의 Quantile(백분위수)과 실제 백분위수를 비교하는 그래프인데요.
예를들어, 표준화잔차 전체 데이터의 25%지점에 해당하는 데이터가 정규분포의 25%지점에 있는지 확인시켜줍니다.
위 그림의 회색 점선을 잘 따라가는 산점도라면 잔차의 정규성을 잘 따른다고 보고,
Normal Distribution에 의한 신뢰성있는 결과를 도출할 수 있습니다.
하지만 지금은 3452번째에 튀는 값이 보이고, 화살표 부분에서 정규성이 잘 지켜지지 않는 듯 보이네요.
※ 여기서 표준화잔차는 통계학 기초에서 배웠던 것 처럼, 평균이 0, 표준편차가 1인
정규분포를 만들기위한 표준화작업을 잔차에 실행한 결과라고 생각하시면 됩니다.
[ 표준화 잔차와 적합값 ]
plot(model,3)
첫번째와 다른 점은 잔차가 표준화되었다는 것인데, 기준값인 (-2,2)를 준수하는지 확인해주세요.
일단은 대부분 무작위성을 띄는 것 같아보이지만, 2를 넘는 관측치들이 몇몇 존재하죠.
이러한 관측치에 대해선 이상치(Outlier)를 의심할 수 있어요.
하지만 위 잔차도에만 근거를 두고 2를 초과한
모든 관측치들을 삭제하는 것은 조금 위험하겠죠?
데이터들은 하나하나가 소중하니까요.
빨간색 선은 산점도의 추이를 나타내주는데, 위로 올라가는 패턴이 보이네요.
추이선은 직선이 되는 것이 가장 이상적입니다. 하지만 억지로 만들 필요는 없어요.
이러한 무작위적인 패턴은 오차의 등분산성과 독립성을 충족시킬 수 있답니다.
[ 표준화 잔차와 지렛값 ]
plot(model,4)
지렛값이라는 조금 생소한 단어가 나왔는데, 단순하게 지레(시소)를 생각해보면,
중심으로부터 가장 멀리 앉은 사람 쪽으로 시소가 기울 가능성이 높죠?
데이터 역시 데이터들의 분포에서 가장 멀리 떨어진 데이터들이
회귀식에 큰 영향력을 가질 수 있어요. 그 영향력을
Cook's distance(쿡의 거리)라는 영향력 측도로 판단해요.
일반적으로 0.5를 넘지 않아야하고, 1이 넘어가면
해석을 오도할 수 있는 관측치라고 판단해요(심각).
전체적으로 보면 데이터들이 0.00을 기준으로 오밀조밀 잘 모여있어요.
회귀계수에 영향을 크게 주지 않는다는 것이죠.
하지만 몇몇 영향력이 있는 관측치들은 처리가 필요해 보이네요.
오늘은 잔차도를 해석하고 오차의 가정을 충족시키기 위해서
무엇이 분석되어야 하는지 살펴보았어요.
다음 포스팅에서는 오차의 가정을 충족하기 위해 할 수있는
방법 중 하나인 변수 변환에 대해서 소개할게요.
그럼 BYE~

'Data Analysis > [Project] Regression With R' 카테고리의 다른 글
[R 프로그래밍 회귀분석] 다중공선성과 더빈왓슨 검정 (0) | 2022.07.05 |
---|---|
[R 프로그래밍 회귀분석] BOXCOX 변수변환 (0) | 2022.07.02 |
[R 프로그래밍 회귀분석] 부분 F 검정과 ANOVA를 통한 모델 비교 (0) | 2022.06.29 |
[R 프로그래밍 회귀분석] ANOVA 함수와 해석 (0) | 2022.06.28 |
[R 프로그래밍 회귀분석] Summary 분석 해석 (1) | 2022.06.26 |