Intro.
선형회귀 모델을 구현할 때, 그저 LinearRegression.fit()을 해도 학습은 물론 된다.
하지만, 생성된 모델이 선형회귀의 기본 가정을 따르는지 아닌지 체크가 필요하다.
선형회귀가정에 따르지도 않는데 데이터를 선형회귀에 끠워맞춰서 결과값을 뽑으면 그 값은 엉망진창일테니까
꼭 살펴봐야할 선형회귀 가정과 확인 방법에 대해서 이번 글에서 적어보겠따!
+) 확률 오차 (잔차) = 타겟값 - 예측값
예측값은 확률 분포이기 때문에, 잔차도 확률 오차
index
1. 선형회귀의 가정 - 정규성, 등분산성, 독립성
2. 확률오차의 정규성 확인
2.1 QQplot
2.2 샤피로 검정
3. 확률오차의 등분산성 확인 - residual plot
4. 독립성 확인
4.1 예측값과 잔차간의 독립성 : residual plot
4.2 독립변수와 잔차간의 독립성
4.3 잔차의 자기상관성 : Durbin watson
1. 선형회귀의 가정 - 정규성, 등분산성, 독립성
1) 정규성 : 확률 오차는 정규분포를 따른다.
2) 등분산성
- 예측값과 상관없이 오차의 모든 분산이 동일하다는 가정
3) 독립성 (총 3가지가 독립성 가정을 충족해야함)
- 예측값과 잔차간의 독립성
- 독립변수와 잔차간의 독립성
- 잔차의 자기상관성
2. 확률 오차의 정규성 확인
시각적인 정규성 검정 방법은 히스토그램, Q-Q plot 등이 있고,
수치적인 정규성 검정 방법은 Shapiro-Wilk검정, Jarque-Bera 검정 등이 있다.
2.1. Q-Qplot (Quantile - Quantile plot)
(좌측이 정규성, 우측이 정규성 X)
- 잔차들이 정규성을 따른다면 Q-Q Plot상의 점들이 45도 각도의 직선에 밀접
- 잔차를 대상으로 Shapiro test 를 진행, p값이 기각역보다 크다면 잔차가 정규성을 띈다고 해석
2.2. 샤피로 검정
: 표본으로부터 모집단의 정규성 여부를 확인할 때 사용하는 검정 기법
샘플을 오름차순으로 정렬 --> 표준 정규분포에 추출된 순서 통계량의 이론적 기댓값(Yhat)을 추출
기댓값(Yhat)과 오름차순으로 정렬된 샘플과의 상관계수를 계산함
--> 상관계수가 1에 가까울수록 추출된 샘플은 정규분포에 가깝다고 판단 !
귀무가설 : 오차항은 정규분포를 따른다.
대립가설 : 오차항은 정규분포를 따르지 않는다.
3. 확률 오차의 등분산성 확인 - Residual plot, Breush-Pagan
Residual plot : 와 e(잔차) 의 산점도
1) 정상적인 Residual plot :
yhat 이 커지던 작던 간에 e(잔차)와 어떤 연관성도 없음, 어떤 패턴도 보이지 않아야함
2) 비정상적인 Residual plot
* yhat이 커짐에 따라 e 값의 폭이 커짐
이건 target y 값의 분산과 yhat의 분산이 다르다는 것을 의미함 (= 등분산성 어긋남)
예측 y 값은 커지지만, target은 커지지 않기에 잔차 절대값이 커지는 것
* yhat 값이 커지면서 e값이 하강 -> 상승 or 상승 -> 하강
4. 독립성 (총 3가지가 독립성 가정을 충족해야함)
4.1 예측값과 잔차간의 독립성 : 앞의 residual plot 으로 확인
- 좌측과 같이 무작위적으로 퍼져있다면 예측값과 잔차가 독립적이라고 해석할 수 있음
- 하지만 우측과 같이 한곳에 모여있는 형태거나 패턴을 보인다면
--> 독립적이라고 설명하기 어려움, 모델이 패턴에 해당하는 규칙성을 누락 한 것임 (모델에 추가할 요소가 남아 있는 것임)
4.2 독립변수와 잔차간의 독립성
- 상관계수, 산점도로 확인 가능
4.3 잔차의 자기상관성
- 예측한 데이터가 시계열 데이터인 경우 각 시점별 잔차가 독립적인지 아닌지를 확인해야함
- Durbin watson 검정
더빈왓슨 테스트의 검정통계량 D-W Statistic 값은 0 ~ 4의 값을 가지며 0으로 가까울 수록 (잔차의) 양의 상관관계
4에 가까울수록 음의 상관관계, 2는 독립
여기서의 p_value는 자기상관성에 대한 것인데 기각역보다 작다면 자기상관관계가 있다고 해석하는 것
참고 link :
https://deep-learning-study.tistory.com/271
https://www.youtube.com/watch?v=DknCnKdyP6k&list=PLpIPLT0Pf7Io8pMhxJ6vhM1chReYa8KIn&index=11
https://kkokkilkon.tistory.com/175
https://mindscale.kr/course/basic-stat-python/14/
댓글