logo

회귀분석의 모형진단 📂통계적분석

회귀분석의 모형진단

필요성

단순회귀분석의 경우엔 독립변수와 종속변수를 고려해봤자 $2$차원이기 때문에 분석이 제대로 되었는지 한 눈에 확인할 수 있다. 하지만 다중회귀분석의 경우 $3$차원을 넘어가면 그림으로 그리기 어려워 때문에 분석이 정말 잘 맞는지 확인하기 어렵다. 회귀분석의 가정을 제대로 만족시키지 못했지만 가설검정은 통과하는 경우가 있는데, 이 경우 분석은 그냥 틀린 게 된다.

분석이 틀리는 것은 주로 (1) 데이터가 선형모형에 맞지 않은 경우나 (2) 분석 결과와 실제 데이터에 대한 이해와 괴리가 심한 경우다. 모형진단은 데이터가 선형모형에 맞는지 맞지 않는지 확인하기 위해서 실시하게 된다.

진단법 1

데이터가 선형모형에 맞지 않다는 것은 쉽게 말해 데이터가 직선 모양으로 있지 않다는 것이다. 데이터가 선형모형에 맞는지 맞지 않는지는 표준화된 잔차 그림을 보고 모형진단을 함으로써 판단한다. 이러한 잔차분석은 상당히 기발한 방법인데, 높은 차원에서 직선을 그려보기 어렵기 때문에 고안된 것이다. 애초에 굳이 잔차라는 것을 계산하는 이유가 바로 이것이라고 봐도 무방하다.

1.png 2.png 잔차 그림에서 아래 네 가지 조건이 만족되면 모형진단은 통과한 것으로 본다.

  • (i) 선형성Linearity: 잔차가 $0$ 을 중심으로 대칭적으로 분포되어있으면 된다.
    • 회귀분석의 본질과도 같은 가정으로써, 회귀분석의 목표가 직선을 구하기 위한 것인데 선형성을 만족하지 않는다면 의미가 없다. 물론 애초에 회귀분석을 사용한 이유 자체가 선형성이 있음을 짐작하는 것이므로 실제 분석에선 아주 쉽게 만족하는 편이다.
  • (ii) 등분산성Homoscedasticity: 잔차들의 분포가 고르면 된다.
    • 특정 구간에서 변동이 급격히 작아지거나 한다면 데이터들이 같은 과정으로 얻어졌다고 보기 힘들다. 예컨대 통계를 수집하는 조사원의 차이, 실수 등의 문제가 있는 게 아닌지 고려하지 않을 수가 없다. 만약 데이터가 뒤로 갈수록 분산이 커지거나 작아지는 등의 문제가 있는 경우 변수를 변환해서 부분적으로 해결할 수 있다.
  • (iii) 독립성Independecy: 잔차끼리 어떠한 경향이 없으면 된다.
    • 잔차가 어떤 경향을 가지고 있다는 것은 오차가 완전히 우연이라는 회귀분석의 가정에 위배된다. 독립성이 결여되어 있다는 것은 반대로 말해 우리가 아직 모르는 규칙, 예컨대 자기상관성이 있을 수 있다는 뜻이 된다. 이 경우엔 굳이 우회해서 해결하려고 하기 보단 시계열 분석과 같이 더 적합한 툴을 찾는게 낫다. 정도가 심할 경우 한 눈에 알아볼 수 있을 정도로 티가 나는데, 그정도가 아니면 큰 문제가 없다고 봐도 좋다. 당부할 것은 독립성을 체크하기 위해 더빈-왓슨 검정을 함부로 갖다 쓰지 말라는 것이다. 더빈-왓슨 검정은 엄밀히 말해 일정한 간격으로 떨어진 잔차들의 자기상관성을 찾아내는 것이지 독립성을 찾아주진 못한다. 척 봐도 어떤 경향이 있는데 더빈-왓슨 검정을 통과했다고 해서 독립이라고 믿어서는 안된다.
  • (iv) 정규성Normality: 잔차들이 표준정규분포를 따르는 것처럼 보이면 된다.
    • 정규성은 다른 가정들과 달리 샤피로-윌크 검정이나 하르케-베라 검정과 같이 객관적인 진단이 가능하다. 그럼에도 불구하고 문제가 간단하지만은 않은데, 주로 정규성에 심대한 타격을 입히는 것은 이상치들이기 때문이다. 이러한 경우 이상치에 해당하는 데이터들을 분석자가 직접 보고 그 현상을 직접 설명할 수 있다면 큰 문제가 되지 않는다. 당부할 것은 이상치라고 해서 무작정 제거하지 말라는 것이다. 예를 들어 표본이 $300$ 개고, 위 아래로 식스시그마($\pm 3 \sigma$)를 벗어나는 이상치가 $3$ 개 정도 있다면 그건 정상이다. 이상치가 너무 많은 것도 문제지만 확률분포론과 달리 지나치게 이상치가 적어도 정규분포를 제대로 따르는 것은 아니다.

위 네가지는 조건은 임의가 아니라 중요한 순서대로 배치되어있고, 직관이나 경험뿐만 아니라 회귀계수에 대한 가설검정의 이론적인 유도과정을 보면 이 서열을 이해할 수 있다.2 실제 통계 분석에 임하다보면 모든 데이터가 깔끔하게만 나타나주는 건 아니라서 몇가지 조건과 타협해야할 때도 있다. 그 때 정규성은 이상치가 많거나 살짝 쏠리는 등 다소 문제가 있더라도 어느정도 포기할 수도 있다.

이러한 모형진단은 상당부분이 눈대중에 의존하며 데이터에 대한 이해가 필수적이다. 틀린 부분을 찾는 것은 첫번째 문제, 틀린 부분을 어떻게 해결할 것인지가 두번째 문제다. 이 능력을 키우는 방법은 가능한 실제 분석에 임하면서 많은 유형을 보는 것이 최선이다.

코드

아래는 잔차 그림을 출력해주는 R코드다.

out<-lm(rating~.,data=attitude); summary(out)
win.graph(5,5); plot(rstudent(out),main="표준화된 잔차")

  1. Hadi. (2006). Regression Analysis by Example(4th Edition): p86~88. ↩︎

  2. 안타깝게도 학부 수준에서 이해하기는 꽤 어렵다. ↩︎