如何在 python 中执行 breusch-godfrey 测试


线性回归的关键假设之一是残差之间不存在相关性,即残差是独立的。

为了测试一阶自相关,我们可以执行Durbin-Watson 检验。然而,如果我们想测试更高阶的自相关性,我们需要执行Breusch-Godfrey 检验

该测试使用以下假设

H 0 (零假设):不存在小于或等于p的阶数的自相关。

H A (替代假设):存在小于或等于p的某个阶的自相关。

检验统计量遵循具有p 个自由度的卡方分布。

如果与该检验统计量相对应的p 值低于一定的显着性水平(例如 0.05),那么我们可以拒绝零假设并得出结论:在某个较低阶或等于p的残差之间存在自相关。

要在 Python 中执行 Breusch-Godfrey 测试,您可以使用statsmodels库中的acorr_breusch_godfrey()函数。

以下分步示例说明了如何在 Python 中执行 Breusch-Godfrey 测试。

第 1 步:创建数据

首先,我们创建一个包含两个预测变量(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 步:执行布洛施-戈弗雷测试

接下来,我们将执行 Breusch-Godfrey 检验来检验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)

输出的第一个值表示检验统计量,第二个值表示相应的 p 值。

从结果中我们可以看到以下内容:

  • 检验统计量 X 2 = 8.7031
  • P 值 = 0.0335

由于该 p 值小于 0.05,因此我们可以拒绝原假设并得出结论:阶次小于或等于 3 的残差之间存在自相关。

如何处理自相关

如果您拒绝零假设并得出残差中存在自相关的结论,那么如果您认为问题足够严重,则可以通过多种选择来纠正该问题:

  • 对于正序列相关,请考虑向模型添加因变量和/或自变量的滞后。
  • 对于负序列相关,请确保没有任何变量过度延迟
  • 对于季节性相关性,请考虑向模型添加季节性虚拟变量。

其他资源

Python 线性回归完整指南
如何在 Python 中执行 Durbin-Watson 测试
如何在 Python 中执行 Ljung-Box 测试

添加评论

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