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


회귀 분석에서 이분산성은 잔차의 고르지 않은 분산을 나타냅니다. 보다 정확하게는 측정값 범위에 걸쳐 잔차 분포에 체계적인 변화가 있는 경우입니다.

이분산성은 OLS(보통 최소 제곱) 회귀에서 잔차가 등분산성 , 즉 일정한 분산을 갖는 모집단에서 나온다고 가정하기 때문에 문제가 됩니다.

회귀분석에 이분산성이 존재하면 분석 결과를 믿기 어려워집니다.

회귀 분석 에 이분산성이 존재하는지 확인하는 한 가지 방법은 Breusch-Pagan 테스트를 사용하는 것입니다 .

이 튜토리얼에서는 Python에서 Breusch-Pagan 테스트를 수행하는 방법을 설명합니다.

예: Python의 Breusch-Pagan 테스트

이 예에서는 농구 선수 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

우리는 점수를 반응 변수로 사용하고 포인트, 어시스트, 리바운드를 설명 변수로 사용하여 다중 선형 회귀 모델을 적합화할 것입니다. 다음으로 Breusch-Pagan 테스트를 수행하여 회귀 분석에 이분산성이 존재하는지 확인합니다.

1단계: 다중 선형 회귀 모델을 피팅합니다.

먼저 다중 선형 회귀 모델을 적합시킵니다.

 import statsmodels.formula.api as smf

#fit regression model
fit = smf.ols('rating ~ points+assists+rebounds', data=df). fit ()

#view model summary
print (fit.summary())

2단계: Breusch-Pagan 테스트를 수행합니다.

다음으로 이분산성이 존재하는지 확인하기 위해 Breusch-Pagan 테스트를 수행합니다.

 from statsmodels.compat import lzip
import statsmodels.stats.api as sms

#perform Bresuch-Pagan test
names = ['Lagrange multiplier statistic', 'p-value',
        'f-value', 'f p-value']
test = sms.het_breuschpagan(fit.resid, fit.model.exog)

lzip(names, test)

[('Lagrange multiply statistic', 6.003951995818433),
 ('p-value', 0.11141811013399583),
 ('f-value', 3.004944880309618),
 ('f p-value', 0.11663863538255281)]

Breusch-Pagan 테스트는 다음과 같은 귀무 가설과 대립 가설을 사용합니다.

귀무가설(H 0 ): 동분산성이 존재합니다.

대립 가설: (Ha): 등분산성이 존재 하지 않습니다 (즉, 이분산성이 존재합니다).

이 예에서 검정에 대한 라그랑주 승수 통계량은 6.004 이고 해당 p-값은 0.1114 입니다. 이 p-값은 0.05 이상이므로 귀무가설을 기각할 수 없습니다. 회귀 모델에 이분산성이 존재한다고 주장할 수 있는 충분한 증거가 없습니다.

이분산성을 수정하는 방법

이전 예에서는 회귀 모델에 이분산성이 존재하지 않는 것을 확인했습니다.

그러나 이분산성이 실제로 존재하는 경우 상황을 해결하는 세 가지 일반적인 방법이 있습니다.

1. 종속변수를 변환합니다. 이분산성을 수정하는 한 가지 방법은 어떤 방식으로든 종속 변수를 변환하는 것입니다. 일반적인 변환은 단순히 종속 변수의 로그를 취하는 것입니다.

2. 종속변수를 재정의합니다. 이분산성을 수정하는 또 다른 방법은 종속변수를 재정의하는 것입니다. 이를 수행하는 일반적인 방법은 원시 값 대신 종속 변수에 대한 비율을 사용하는 것입니다.

3. 가중 회귀를 사용하십시오. 이분산성을 수정하는 또 다른 방법은 가중 회귀를 사용하는 것입니다. 이 유형의 회귀는 적합치의 분산을 기반으로 각 데이터 포인트에 가중치를 할당합니다. 적절한 가중치를 사용하면 이분산성 문제를 해결할 수 있습니다.

이 문서 에서 세 가지 방법 각각에 대한 자세한 내용을 읽어보세요.

의견을 추가하다

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