In termini pratici, ncvTestutilizza il lato sinistro dell'equazione e bptestutilizza il lato destro, per impostazione predefinita.
Ciò significa che in Y ~ Xentrambi i casi entrambi i test forniranno gli stessi risultati (per quanto riguarda l' studentize = Fopzione di bptest). Ma in un'analisi multivariata come Y ~ X1 + X2, i risultati saranno diversi. (Come sottolineato da @ Helix123)
Dal file di aiuto di ncvTest : var.formula: "una formula unilaterale per la varianza dell'errore; se omessa, la varianza dell'errore dipende dai valori adattati ". Ciò significa che, per impostazione predefinita, verranno utilizzati i valori adattati, ma consente anche di utilizzare una combinazione lineare delle variabili indipendenti (X1 + X2).
Dal file di aiuto di bptest : varformula: "Per impostazione predefinita, vengono prese le stesse variabili esplicative del modello di regressione principale."
Continuando lo stesso esempio di @Francis (dati stat500, dal farawaypacchetto):
> mdl_t = lm(final ~ midterm + hw, data = stat500)
Test BP, utilizzando i valori adattati:
> 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 test, utilizzando una combinazione lineare di predittori:
> 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
L '"opzione di combinazione lineare" consente di studiare l'eteroschedasticità associata alla dipendenza lineare di una specifica variabile indipendente. Ad esempio, solo la hwvariabile:
> 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
Infine, come sintetizzava @Francis, "In breve, il test BP studentizzato è più robusto di quello originale", di solito vado bptest, con studentize = TRUE(impostazione predefinita) e varformula = ~ fitted.values(my.lm)come opzioni, per un approccio iniziale per l'omoschedasticità.
ncvTestebptestutilizzare variabili diverse per spiegare i residui, vedere gli argomentivar.formulaevarformula, rispettivamente. I risultati divergeranno quando aggiungi un altro regressore al tuo esempio.