Python で breusch-pagan テストを実行する方法


回帰分析では、不均一分散性は残差の不均一な分散を指します。より正確には、これは測定値の範囲全体にわたって残差の分布に系統的な変化がある場合です。

通常最小二乗法 (OLS) 回帰では、残差が等分散性 (分散が一定であることを意味する) を持つ母集団から得られると想定されるため、不均一分散性が問題になります。

回帰分析に不均一分散性が存在する場合、分析結果は信じられなくなります。

回帰分析で不均一分散性が存在するかどうかを判断する 1 つの方法は、 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 検定を実行して、不均一分散性が存在するかどうかを判断します。

 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 未満ではないため、帰無仮説を棄却できません。回帰モデルに不均一分散性が存在すると主張する十分な証拠はありません。

不均一分散性を修正する方法

前の例では、回帰モデルに不均一分散性が存在しないことがわかりました。

ただし、不均一分散性が実際に存在する場合、状況を修復する一般的な方法が 3 つあります。

1.従属変数を変換します。不均一分散性を補正する 1 つの方法は、従属変数を何らかの方法で変換することです。一般的な変換は、単純に従属変数のログを取得することです。

2. 従属変数を再定義します。不均一分散性を修正するもう 1 つの方法は、従属変数を再定義することです。これを行う一般的な方法は、生の値ではなく、従属変数の比率を使用することです。

3. 重み付け回帰を使用します。不均一分散性を補正するもう 1 つの方法は、重み付き回帰を使用することです。このタイプの回帰では、近似値の分散に基づいて各データ ポイントに重みが割り当てられます。適切な重みを使用すると、不均一分散性の問題を解決できます。

これら 3 つの各方法の詳細については、この記事を参照してください。

コメントを追加する

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