Python で breusch-godfrey テストを実行する方法
線形回帰の重要な前提の 1 つは、残差間に相関がない、つまり残差が独立しているということです。
一次自己相関をテストするには、 ダービン-ワトソンテストを実行します。ただし、より高次の自己相関をテストしたい場合は、 Breusch-Godfrey テストを実行する必要があります。
このテストでは次の仮定を使用します。
H 0 (帰無仮説): p以下の次数の自己相関はありません。
H A (対立仮説): p以下の特定の次数の自己相関が存在します。
検定統計量は、自由度pのカイ二乗分布に従います。
この検定統計量に対応するp 値が特定の有意水準 (0.05 など) を下回っている場合、帰無仮説を棄却し、特定の低次またはpに等しい残差間に自己相関が存在すると結論付けることができます。
Python で Breusch-Godfrey テストを実行するには、 statsmodelsライブラリのacorr_breusch_godfrey()関数を使用できます。
次のステップバイステップの例では、Python で Breusch-Godfrey テストを実行する方法を説明します。
ステップ 1: データを作成する
まず、2 つの予測変数 (x1 と x2) と応答変数 (y) を含むデータセットを作成しましょう。
import pandas as pd #create dataset df = pd. DataFrame ({' x1 ': [3, 4, 4, 5, 8, 9, 11, 13, 14, 16, 17, 20], ' x2 ': [7, 7, 8, 8, 12, 4, 5, 15, 9, 17, 19, 19], ' y ': [24, 25, 25, 27, 29, 31, 34, 34, 39, 30, 40, 49]}) #view first five rows of dataset df. head () x1 x2 y 0 3 7 24 1 4 7 25 2 4 8 25 3 5 8 27 4 8 12 29
ステップ 2: 回帰モデルを当てはめる
次に、x1 と x2 を予測変数として、y を応答変数として使用して、重線形回帰モデルを近似できます。
import statsmodels. api as sm
#define response variable
y = df[' y ']
#define predictor variables
x = df[[' x1 ', ' x2 ']]
#add constant to predictor variables
x = sm. add_constant (x)
#fit linear regression model
model = sm. OLS (y,x). fit ()
ステップ 3: ブリューシュ・ゴッドフリー検定を実行する
次に、ブリューシュ・ゴッドフリー検定を実行して、次数pの残差間の自己相関を検定します。この例では、 p = 3 を選択します。
import statsmodels. stats . diagnosis as dg
#perform Breusch-Godfrey test at order p = 3
print (dg. acorr_breusch_godfrey (model, nlags= 3 ))
(8.70314827, 0.0335094873, 5.27967224, 0.0403980576)
出力の最初の値は検定統計量を表し、2 番目の値は対応する p 値を表します。
結果から次のことがわかります。
- 検定統計量 X 2 = 8.7031
- P 値 = 0.0335
この p 値は 0.05 未満であるため、帰無仮説を棄却し、次数 3 以下の残差間に自己相関があると結論付けることができます。
自己相関に対処する方法
帰無仮説を棄却し、残差に自己相関が存在すると結論付けた場合、問題が十分に深刻であると考えられる場合、この問題を修正するためのオプションがいくつかあります。
- 正の系列相関を得るには、従属変数および/または独立変数のラグをモデルに追加することを検討してください。
- 負のシリアル相関の場合は、どの変数も遅延しすぎていないことを確認してください。
- 季節相関については、モデルに季節ダミーを追加することを検討してください。
追加リソース
Python の線形回帰の完全ガイド
Python でダービン-ワトソン テストを実行する方法
Python で Ljung-Box テストを実行する方法