Python でダービン-ワトソン テストを実行する方法
線形回帰の仮定の 1 つは、残差間に相関関係がないということです。言い換えれば、残差は独立していると仮定されます。
この仮定が満たされているかどうかを判断する 1 つの方法は、 ダービン・ワトソン検定を実行することです。これは、回帰の残差における自己相関の存在を検出するために使用されます。このテストでは次の仮定を使用します。
H 0 (帰無仮説):残差間に相関はありません。
H A (対立仮説):残差は自己相関します。
検定統計量は 2*(1-r) にほぼ等しくなります。ここで、r は残差のサンプル自己相関です。したがって、次の解釈により、検定統計量は常に 0 ~ 4 になります。
- 検定統計量2 は、系列相関がないことを示します。
- 検定統計量が0に近づくほど、正の連続相関の証拠が多くなります。
- 検定統計量が4に近づくほど、負の系列相関の証拠が多くなります。
通常、1.5 ~ 2.5 の検定統計値は正常とみなされます。ただし、この範囲外の値は、自己相関に問題があることを示している可能性があります。
このチュートリアルでは、Python でダービン-ワトソン テストを実行する方法を説明します。
例: Python でのダービン-ワトソン テスト
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
評価を応答変数として、他の 3 つの変数を予測変数として使用して、重線形回帰モデルを近似するとします。
from statsmodels.formula.api import ols #fit multiple linear regression model model = ols('rating ~ points + assists + rebounds', data=df). fit () #view model summary print(model.summary())
statsmodels ライブラリーのdurbin_watson() 関数を使用して Watson Durbin を実行し、回帰モデルの残差が自己相関しているかどうかを判断できます。
from statsmodels.stats.stattools import durbin_watson #perform Durbin-Watson test durbin_watson(model.resid) 2,392
検定統計量は2.392です。この値は 1.5 ~ 2.5 であるため、この回帰モデルでは自己相関は問題ないと考えられます。
自己相関に対処する方法
帰無仮説を棄却し、残差に自己相関が存在すると結論付けた場合、問題が十分に深刻であると考えられる場合、この問題を修正するためのオプションがいくつかあります。
1.正の系列相関の場合、従属変数および/または独立変数のラグをモデルに追加することを検討します。
2.負のシリアル相関の場合は、どの変数も遅延しすぎていないことを確認してください。
3.季節相関については、モデルに季節ダミーを追加することを検討してください。