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. 가중 회귀를 사용하십시오. 이분산성을 수정하는 또 다른 방법은 가중 회귀를 사용하는 것입니다. 이 유형의 회귀는 적합치의 분산을 기반으로 각 데이터 포인트에 가중치를 할당합니다. 적절한 가중치를 사용하면 이분산성 문제를 해결할 수 있습니다.
이 문서 에서 세 가지 방법 각각에 대한 자세한 내용을 읽어보세요.