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를 응답 변수로 사용하고 disphp를 두 예측 변수로 사용하여 회귀 모델을 피팅합니다.

 #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를 계산하는 방법

의견을 추가하다

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