Python에서 breusch-godfrey 테스트를 수행하는 방법


선형 회귀의 주요 가정 중 하나는 잔차 사이에 상관 관계가 없다는 것입니다. 즉, 잔차는 독립적입니다.

1차 자기상관을 테스트하기 위해 Durbin-Watson 테스트를 수행할 수 있습니다. 그러나 더 높은 차수에서 자기 상관을 테스트하려면 Breusch-Godfrey 테스트를 수행해야 합니다.

이 테스트에서는 다음과 같은 가정을 사용합니다.

H 0 (귀무가설): p 보다 작거나 같은 차수에 대한 자기상관이 없습니다.

HA (대립가설): p 보다 작거나 같은 특정 차수의 자기상관이 존재합니다.

검정 통계량은 자유도가 p 인 카이제곱 분포를 따릅니다.

이 검정 통계량에 해당하는 p-값이 특정 유의 수준(예: 0.05)보다 낮으면 귀무 가설을 기각하고 특정 낮은 차수 또는 p 와 동일한 잔차 사이에 자기 상관이 존재한다는 결론을 내릴 수 있습니다.

Python에서 Breusch-Godfrey 테스트를 수행하려면 statsmodels 라이브러리의 acorr_breusch_godfrey() 함수를 사용할 수 있습니다.

다음 단계별 예제에서는 Python에서 Breusch-Godfrey 테스트를 수행하는 방법을 설명합니다.

1단계: 데이터 생성

먼저 두 개의 예측 변수(x1 및 x2)와 응답 변수(y)가 포함된 데이터 세트를 만들어 보겠습니다.

 import pandas as pd

#create dataset
df = pd. DataFrame ({' x1 ': [3, 4, 4, 5, 8, 9, 11, 13, 14, 16, 17, 20],
                   ' x2 ': [7, 7, 8, 8, 12, 4, 5, 15, 9, 17, 19, 19],
                    ' y ': [24, 25, 25, 27, 29, 31, 34, 34, 39, 30, 40, 49]})

#view first five rows of dataset
df. head ()

	x1 x2 y
0 3 7 24
1 4 7 25
2 4 8 25
3 5 8 27
4 8 12 29

2단계: 회귀 모델 적합

그런 다음 x1과 x2를 예측 변수로 사용하고 y를 응답 변수 로 사용하여 다중 선형 회귀 모델을 적합할 수 있습니다.

 import statsmodels. api as sm

#define response variable
y = df[' y ']

#define predictor variables
x = df[[' x1 ', ' x2 ']]

#add constant to predictor variables
x = sm. add_constant (x)

#fit linear regression model
model = sm. OLS (y,x). fit ()

3단계: Breusch-Godfrey 테스트 수행

다음으로 Breusch-Godfrey 테스트를 수행하여 차수 p 에서 잔차 간의 자기 상관을 테스트합니다. 이 예에서는 p = 3을 선택합니다.

 import statsmodels. stats . diagnosis as dg

#perform Breusch-Godfrey test at order p = 3
print (dg. acorr_breusch_godfrey (model, nlags= 3 ))

(8.70314827, 0.0335094873, 5.27967224, 0.0403980576)

출력의 첫 번째 값은 검정 통계량을 나타내고 두 번째 값은 해당 p-값을 나타냅니다.

결과에서 우리는 다음을 볼 수 있습니다:

  • 검정 통계량 X 2 = 8.7031
  • P-값 = 0.0335

이 p-값이 0.05보다 작기 때문에 귀무가설을 기각하고 3보다 작거나 같은 잔차 사이에 자기상관이 있다는 결론을 내릴 수 있습니다.

자기 상관을 처리하는 방법

귀무가설을 기각하고 잔차에 자기상관이 존재한다고 결론을 내리는 경우 문제가 충분히 심각하다고 판단되면 이 문제를 해결할 수 있는 몇 가지 옵션이 있습니다.

  • 양의 계열 상관관계를 얻으려면 종속변수 및/또는 독립변수의 시차를 모델에 추가하는 것을 고려하십시오.
  • 음의 계열 상관관계의 경우 변수가 과도 하게 지연되지 않았는지 확인하세요.
  • 계절 상관관계를 확인하려면 모델에 계절 모형을 추가하는 것이 좋습니다.

추가 리소스

Python의 선형 회귀에 대한 완전한 가이드
Python에서 Durbin-Watson 테스트를 수행하는 방법
Python에서 Ljung-Box 테스트를 수행하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다