如何在 r 中执行 breusch-godfrey 测试
线性回归的关键假设之一是残差之间不存在相关性,即残差是独立的。
为了测试一阶自相关,我们可以执行Durbin-Watson 检验。然而,如果我们想测试更高阶的自相关性,我们需要执行Breusch-Godfrey 检验。
该测试使用以下假设:
H 0 (零假设):不存在小于或等于p的阶数的自相关。
H A (替代假设):存在小于或等于p的某个阶的自相关。
检验统计量遵循具有p 个自由度的卡方分布。
如果与该检验统计量相对应的p 值低于一定的显着性水平(例如 0.05),那么我们可以拒绝零假设并得出结论:在某个较低阶或等于p的残差之间存在自相关。
要在 R 中执行 Breusch-Godfrey 测试,我们可以使用lmtest库中的bgtest(y ~ x, order = p)函数。
本教程提供了在 R 中使用此语法的示例。
示例:R 中的 Breusch-Godfrey 测试
首先,我们创建一个包含两个预测变量(x1 和 x2)和一个响应变量 (y) 的假数据集。
#create dataset df <- data. frame (x1=c(3, 4, 4, 5, 8, 9, 11, 13, 14, 16, 17, 20), x2=c(7, 7, 8, 8, 12, 4, 5, 15, 9, 17, 19, 19), y=c(24, 25, 25, 27, 29, 31, 34, 34, 39, 30, 40, 49)) #view first six rows of dataset head(df) x1 x2 y 1 3 7 24 2 4 7 25 3 4 8 25 4 5 8 27 5 8 12 29 6 9 4 31
接下来,我们可以使用lmtest包中的bgtest()函数执行 Breusch-Godfrey 测试。
对于本例,我们将测试 p = 3 阶残差之间的自相关:
#load lmtest package library (lmtest) #perform Breusch-Godfrey test bgtest(y ~ x1 + x2, order= 3 , data=df) Breusch-Godfrey test for serial correlation of order up to 3 data: y ~ x1 + x2 LM test = 8.7031, df = 3, p-value = 0.03351
从结果中我们可以看出,检验统计量为X2 = 8.7031,具有 3 个自由度。相应的 p 值为0.03351 。
由于该 p 值小于 0.05,因此我们可以拒绝原假设并得出结论:阶次小于或等于 3 的残差之间存在自相关。
如何处理自相关
如果您拒绝零假设并得出残差中存在自相关的结论,那么如果您认为问题足够严重,则可以通过多种选择来纠正该问题:
- 对于正序列相关,请考虑向模型添加因变量和/或自变量的滞后。
- 对于负序列相关,请确保没有任何变量过度延迟。
- 对于季节性相关性,请考虑向模型添加季节性虚拟变量。