Python에서 white의 테스트를 수행하는 방법(단계별)
White의 테스트는 회귀 모델에 이분산성이 존재하는지 여부를 확인하는 데 사용됩니다.
이분산성은 반응 변수 의 서로 다른 수준에서 잔차가 고르지 않게 분산되는 것을 의미하며, 이는 잔차가 반응 변수의 각 수준에서 동일하게 분산된다는 가정을 위반합니다.
다음 단계별 예제에서는 Python에서 White의 테스트를 수행하여 주어진 회귀 모델에서 이분산성이 문제인지 여부를 확인하는 방법을 보여줍니다.
1단계: 데이터 로드
이 예에서는 mtcars 데이터 세트를 사용하여 다중 선형 회귀 모델을 피팅합니다.
다음 코드는 이 데이터 세트를 Pandas DataFrame에 로드하는 방법을 보여줍니다.
from sklearn. linear_model import LinearRegression from statsmodels. stats . diagnostic import het_white import statsmodels. api as sm import pandas as pd #define URL where dataset is located url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/mtcars.csv" #read in data data = pd. read_csv (url) #view summary of data data. info () <class 'pandas.core.frame.DataFrame'> RangeIndex: 32 entries, 0 to 31 Data columns (total 12 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 model 32 non-null object 1 mpg 32 non-null float64 2 cyl 32 non-null int64 3 disp 32 non-null float64 4 hp 32 non-null int64 5 drat 32 non-null float64 6 wt 32 non-null float64 7 qsec 32 non-null float64 8 vs 32 non-null int64 9 am 32 non-null int64 10 gear 32 non-null int64 11 carb 32 non-null int64 dtypes: float64(5), int64(6), object(1)
2단계: 회귀 모델 적합
다음으로 mpg를 응답 변수로 사용하고 disp 와 hp를 두 예측 변수로 사용하여 회귀 모델을 피팅합니다.
#define response variable y = data[' mpg '] #define predictor variables x = data[[' disp ', ' hp ']] #add constant to predictor variables x = sm. add_constant (x) #fit regression model model = sm. OLS (y,x). fit ()
3단계: White의 테스트 수행
다음으로, 회귀 모델에 이분산성이 존재하는지 확인하기 위해 statsmodels 패키지의 het_white() 함수를 사용하여 White의 테스트를 수행합니다.
#perform White's test white_test = het_white(model. resid , model. model . exog ) #define labels to use for output of White's test labels = ['Test Statistic', 'Test Statistic p-value', 'F-Statistic', 'F-Test p-value'] #print results of White's test print (dict(zip(labels, white_test))) {'Test Statistic': 7.076620330416624, 'Test Statistic p-value': 0.21500404394263936, 'F-Statistic': 1.4764621093131864, 'F-Test p-value': 0.23147065943879694}
결과를 해석하는 방법은 다음과 같습니다.
- 검정 통계량은 X2 = 7.0766 입니다.
- 해당 p-값은 0.215 입니다.
White 테스트에서는 다음과 같은 귀무 가설과 대립 가설을 사용합니다.
- Null (H 0 ) : 동분산성이 있음(잔차도 분산됨)
- 대안( HA ): 이분산성이 존재합니다(잔차가 균등하게 분산되지 않음).
p-값이 0.05 이상이므로 귀무가설을 기각할 수 없습니다.
이는 회귀 모델에 이분산성이 존재한다고 주장할 수 있는 충분한 증거가 없음을 의미합니다.
다음에 무엇을할지
White 검정의 귀무 가설을 기각하지 못하면 이분산성이 존재하지 않으며 계속해서 원래 회귀 결과를 해석할 수 있습니다.
그러나 귀무가설을 기각한다면 이는 이분산성이 있음을 의미합니다. 이 경우 회귀 출력 테이블에 표시되는 표준 오류는 신뢰할 수 없습니다.
이 문제를 해결하는 두 가지 일반적인 방법이 있습니다.
1. 반응 변수를 변환합니다.
예를 들어 응답 변수의 로그, 제곱근 또는 세제곱근을 취하는 등 응답 변수에 대한 변환을 수행해 볼 수 있습니다. 이로 인해 이분산성이 사라지는 경우가 많습니다.
2. 가중 회귀를 사용하십시오.
가중 회귀는 적합치의 분산을 기반으로 각 데이터 포인트에 가중치를 할당합니다. 본질적으로 이는 분산이 더 높은 데이터 포인트에 낮은 가중치를 부여하여 잔차 제곱을 줄입니다. 적절한 가중치를 사용하면 이분산성 문제를 해결할 수 있습니다.
추가 리소스
다음 자습서에서는 Python의 선형 회귀에 대한 추가 정보를 제공합니다.
Python의 선형 회귀에 대한 완전한 가이드
Python에서 잔차 플롯을 만드는 방법
Python에서 VIF를 계산하는 방법