如何在 python 中执行 durbin-watson 测试


线性回归的假设之一是残差之间不存在相关性。换句话说,假设残差是独立的。

确定是否满足此假设的一种方法是执行Durbin-Watson 检验,该检验用于检测回归残差中是否存在自相关。该测试使用以下假设:

H 0 (零假设):残差之间不存在相关性。

H A (替代假设):残差是自相关的。

检验统计量约等于 2*(1-r),其中 r 是残差的样本自相关。因此,检验统计量将始终介于 0 和 4 之间,解释如下:

  • 检验统计量为2表示不存在序列相关性。
  • 检验统计量越接近0 ,就越有证据表明正序列相关。
  • 检验统计量越接近4 ,负序列相关的证据就越多。

通常,检验统计值在 1.5 到 2.5 之间被认为是正常的。但是,超出此范围的值可能表明自相关存在问题。

本教程介绍如何在 Python 中执行 Durbin-Watson 测试。

示例:Python 中的 Durbin-Watson 测试

假设我们有以下数据集,描述了 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

假设我们使用评级作为响应变量,其他三个变量作为预测变量来拟合多元线性回归模型:

 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.对于季节性相关性,请考虑向模型添加季节性虚拟变量。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注