在 R 中解释 Breusch-Pagan 测试 bptest()

机器算法验证 假设检验 异方差
2022-03-25 15:12:04

bptest我对in R ( library(lmtest))的解释有点困惑。的零假设bptest是残差具有恒定方差。因此,小于 0.05 的 p 值意味着必须拒绝同方差性假设。但是在这个网站上:

http://rstatistics.net/how-to-test-a-regression-model-for-heteroscedasticity-and-if-present-how-to-correct-it/

我发现以下结果让我感到困惑:

data:  lmMod
BP = 3.2149, df = 1, p-value = 0.07297

p 值 > 0.05 表示可以拒绝原假设(残差中的方差不变),因此存在异方差性。这可以通过在 lm 对象上运行线性模型假设 (gvlma) 的全局验证来确认。

gvlma(lmMod) # validate if assumptions of linear regression holds true.

# Call:
 gvlma(x = lmMod) 

                    Value  p-value                   Decision
Global Stat        15.801 0.003298 Assumptions NOT satisfied!
Skewness            6.528 0.010621 Assumptions NOT satisfied!
Kurtosis            1.661 0.197449    Assumptions acceptable.
Link Function       2.329 0.126998    Assumptions acceptable.
Heteroscedasticity  5.283 0.021530 Assumptions NOT satisfied!

那么为什么 p 值 > 0.05 意味着您必须拒绝原假设,而实际上 p 值小于 0.05 表示您必须拒绝原假设?

1个回答

这应该是 rstatistics.net 上的一个错字。您是正确的,Breusch-Pagan 检验的原假设是同方差性(= 方差不依赖于辅助回归量)。如果p-值变“小”,拒绝原假设。

我建议就这个问题联系 rstatistics.net 的作者,看看他们是否同意并修复它。

此外,请注意,它glvma()使用了与默认情况不同的辅助回归器bptest()并关闭了学生化。更准确地说,如果通过显式设置参数来复制结果,则可以看到差异bptest()

模型由下式给出:

data("cars", package = "datasets")
lmMod <- lm(dist ~ speed, data = cars)

然后使用的默认值使用bptest()与模型相同的辅助回归量,即speed在这种情况下。它还使用具有改进的有限样本属性的学生化版本,产生不显着的结果。

library("lmtest")
bptest(lmMod, ~ speed, data = cars, studentize = TRUE)
##  studentized Breusch-Pagan test
## 
## data:  lmMod
## BP = 3.2149, df = 1, p-value = 0.07297

相反,glvma()关闭学生化并检查方差的线性趋势。

cars$trend <- 1:nrow(cars)
bptest(lmMod, ~ trend, data = cars, studentize = FALSE)
##  Breusch-Pagan test
## 
## data:  lmMod
## BP = 5.2834, df = 1, p-value = 0.02153

如您所见p-值相当小,但在 5% 的不同方面。学生化版本均略高于 5%。