Python에서 durbin-watson 테스트를 수행하는 방법
선형 회귀의 가정 중 하나는 잔차 간에 상관 관계가 없다는 것입니다. 즉, 잔차는 독립적인 것으로 가정됩니다.
이 가정이 충족되는지 확인하는 한 가지 방법은 회귀 잔차에서 자기상관의 존재를 감지하는 데 사용되는 Durbin-Watson 테스트를 수행하는 것입니다. 이 테스트에서는 다음과 같은 가정을 사용합니다.
H 0 (귀무가설): 잔차 간에 상관관계가 없습니다.
H A (대립 가설): 잔차는 자기상관되어 있습니다.
검정 통계량은 대략 2*(1-r)과 같습니다. 여기서 r은 잔차의 표본 자기상관입니다. 따라서 테스트 통계량은 다음과 같이 해석하면 항상 0과 4 사이입니다.
- 검정 통계량 2 는 계열 상관이 없음을 나타냅니다.
- 검정 통계량이 0 에 가까울수록 양의 계열 상관 관계가 있다는 증거가 더 많습니다.
- 검정 통계량이 4 에 가까울수록 음의 계열 상관 관계가 있다는 증거가 더 많습니다.
일반적으로 1.5에서 2.5 사이의 테스트 통계 값은 정상으로 간주됩니다. 그러나 이 범위를 벗어난 값은 자기상관에 문제가 있음을 나타낼 수 있습니다.
이 튜토리얼에서는 Python에서 Durbin-Watson 테스트를 수행하는 방법을 설명합니다.
예: Python의 Durbin-Watson 테스트
10명의 농구 선수의 속성을 설명하는 다음과 같은 데이터 세트가 있다고 가정합니다.
import numpy as np import pandas as pd #create dataset df = pd.DataFrame({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86], 'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19], 'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]}) #view dataset df rating points assists rebounds 0 90 25 5 11 1 85 20 7 8 2 82 14 7 10 3 88 16 8 6 4 94 27 5 6 5 90 20 7 9 6 76 12 6 6 7 75 15 9 10 8 87 14 9 10 9 86 19 5 7
등급을 반응 변수로 사용하고 다른 세 변수를 예측 변수로 사용하여 다중 선형 회귀 모델을 적합하다고 가정합니다.
from statsmodels.formula.api import ols #fit multiple linear regression model model = ols('rating ~ points + assists + rebounds', data=df). fit () #view model summary print(model.summary())
회귀 모델 잔차가 자기상관되어 있는지 여부를 확인하기 위해 statsmodels 라이브러리의 durbin_watson() 함수를 사용하여 Watson Durbin을 수행할 수 있습니다.
from statsmodels.stats.stattools import durbin_watson #perform Durbin-Watson test durbin_watson(model.resid) 2,392
검정 통계량은 2.392 입니다. 이 값은 1.5에서 2.5 사이이므로 이 회귀 모델에서는 자기 상관이 문제가 되지 않는다고 간주합니다.
자기 상관을 처리하는 방법
귀무가설을 기각하고 잔차에 자기상관이 존재한다고 결론을 내리는 경우 문제가 충분히 심각하다고 판단되면 이 문제를 해결할 수 있는 몇 가지 옵션이 있습니다.
1. 양의 계열 상관관계를 얻으려면 종속변수 및/또는 독립변수의 시차를 모델에 추가하는 것을 고려하십시오.
2. 음의 계열 상관관계의 경우 변수가 과도 하게 지연되지 않았는지 확인하십시오.
3. 계절 상관관계를 확인하려면 모델에 계절 더미를 추가하는 것이 좋습니다.