实际上,默认情况下使用ncvTest
等式的左侧并bptest
使用右侧。
这意味着在 的情况下Y ~ X
,两个测试将提供相同的结果(关于 的studentize = F
选项bptest
)。但是在诸如 的多变量分析中Y ~ X1 + X2
,结果会有所不同。(正如@Helix123 指出的那样)
来自帮助文件ncvTest : var.formula
:“误差方差的单边公式;如果省略,误差方差取决于拟合值。” 这意味着,默认情况下,将使用拟合值,但它也允许使用自变量 (X1 + X2) 的线性组合。
从帮助文件中bptest : varformula
:“默认情况下,采用与主回归模型相同的解释变量。”
继续@Francis 的相同示例(数据stat500
,来自faraway
包):
> mdl_t = lm(final ~ midterm + hw, data = stat500)
BP 检验,使用拟合值:
> ncvTest(mdl_t) # Default
Non-constant Variance Score Test
Variance formula: ~ fitted.values
Chisquare = 0.6509135 Df = 1 p = 0.4197863
> bptest(mdl_t, varformula = ~ fitted.values(mdl_t), studentize = F)
Breusch-Pagan test
data: mdl_t
BP = 0.65091, df = 1, p-value = 0.4198
BP 测试,使用预测变量的线性组合:
> ncvTest(mdl_t, var.formula = ~ midterm + hw)
Non-constant Variance Score Test
Variance formula: ~ midterm + hw
Chisquare = 0.7689743 Df = 2 p = 0.6807997
> bptest(mdl_t, studentize = F) # Default
Breusch-Pagan test
data: mdl_t
BP = 0.76897, df = 2, p-value = 0.6808
“线性组合选项”允许研究与特定自变量的线性相关性相关的异方差性。例如,只是hw
变量:
> ncvTest(mdl_t, var.formula = ~ hw)
Non-constant Variance Score Test
Variance formula: ~ hw
Chisquare = 0.04445789 Df = 1 p = 0.833004
> bptest(mdl_t, varformula = ~ stat500$hw, studentize = F)
Breusch-Pagan test
data: mdl_t
BP = 0.044458, df = 1, p-value = 0.833
最后,正如@Francis 总结的那样,“简而言之,学生化的 BP 测试比原始测试更稳健”,我通常使用bptest
、studentize = TRUE
(默认)和varformula = ~ fitted.values(my.lm)
选项作为同方差的初始方法。