Python で white のテストを実行する方法 (ステップバイステップ)


ホワイトの検定は、回帰モデルに不均一分散性が存在するかどうかを判断するために使用されます。

不均一分散性とは、応答変数のさまざまなレベルでの残差の不均一な分散を指します。これは、応答変数の各レベルで残差が均等に分散しているという仮定に違反します。

次のステップバイステップの例は、Python でホワイトのテストを実行して、特定の回帰モデルで不均一分散性が問題であるかどうかを判断する方法を示しています。

ステップ 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 を使用し、2 つの予測変数として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: ホワイトのテストを実行する

次に、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です。

ホワイト検定では、次の帰無仮説と対立仮説を使用します。

  • Null (H 0 ) : 等分散性が存在します (残差も分散しています)
  • 代替 ( HA ): 不均一分散性が存在します (残差が均等に分散されていない)

p 値は 0.05 未満ではないため、帰無仮説を棄却できません。

これは、回帰モデルに不均一分散性が存在すると主張する十分な証拠がないことを意味します。

次はどうする

ホワイトの検定の帰無仮説を棄却できなかった場合、不均一分散性は存在しないため、元の回帰の結果の解釈に進むことができます。

ただし、帰無仮説を棄却した場合、それは不均一分散があることを意味します。この場合、回帰出力テーブルに表示される標準誤差は信頼できない可能性があります。

この問題を解決するには、次の 2 つの一般的な方法があります。

1. 応答変数を変換します。

応答変数に対して変換を実行してみることができます。たとえば、応答変数の対数、平方根、立方根を取得します。これにより、不均一分散性が消失することがよくあります。

2. 重み付け回帰を使用します。

重み付き回帰では、近似値の分散に基づいて各データ ポイントに重みが割り当てられます。基本的に、これにより、分散が大きいデータ ポイントに低い重みが与えられ、残差二乗が減少します。適切な重みを使用すると、不均一分散性の問題を解決できます。

追加リソース

次のチュートリアルでは、Python の線形回帰に関する追加情報を提供します。

Python の線形回帰の完全ガイド
Python で残差プロットを作成する方法
Python で VIF を計算する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です