实际上,默认情况下ncvTest
,bptest
使用等式的左侧,而使用右侧。
这意味着,在的情况下Y ~ X
,两个测试都将提供相同的结果(关于的studentize = F
选项bptest
)。但是,在的多变量分析中Y ~ X1 + X2
,结果将有所不同。(正如@ Helix123指出的)
从帮助文件中ncvTest : var.formula
:“误差方差的单边公式;如果省略,则误差方差取决于拟合值。” 这意味着,默认情况下将使用拟合值,但也允许使用自变量(X1 + X2)的线性组合。
从帮助文件中bptest : varformula
:“默认情况下,采用与主要回归模型相同的解释变量。”
继续@Francis的相同示例(data 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测试比原始BP测试更健壮”,我通常将bptest
,studentize = TRUE
(默认)和varformula = ~ fitted.values(my.lm)
作为选项用于同方差的初始方法。
ncvTest
和bptest
使用不同的变量来解释残差,请分别参见参数var.formula
和varformula
。将另一个回归变量添加到示例后,结果将有所不同。