En termes pratiques, ncvTest
utilise le côté gauche de l'équation et bptest
utilise le côté droit, par défaut.
Cela signifie que dans un cas de Y ~ X
, les deux tests fourniront les mêmes résultats (concernant l' studentize = F
option de bptest
). Mais dans une analyse multivariée telle que Y ~ X1 + X2
, les résultats seront différents. (Comme l'a souligné @ Helix123)
À partir du fichier d'aide de ncvTest : var.formula
: "une formule unilatérale pour la variance d'erreur; si elle est omise, la variance d'erreur dépend des valeurs ajustées ." Ce qui signifie que, par défaut, les valeurs ajustées seront utilisées, mais cela permet également d'utiliser une combinaison linéaire des variables indépendantes (X1 + X2).
À partir du fichier d'aide de bptest : varformula
: "Par défaut, les mêmes variables explicatives sont prises comme dans le modèle de régression principal."
Poursuivant le même exemple de @Francis (données stat500
, à partir du faraway
package):
> mdl_t = lm(final ~ midterm + hw, data = stat500)
Test BP, en utilisant des valeurs ajustées:
> 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
Test BP, utilisant une combinaison linéaire de prédicteurs:
> 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 '"option de combinaison linéaire" permet d'étudier l'hétéroscédasticité associée à la dépendance linéaire d'une variable indépendante spécifique. Par exemple, juste la hw
variable:
> 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
Enfin, comme le résume @Francis, "En bref, le test de TA étudiant est plus robuste que l'original", je choisis généralement bptest
, avec studentize = TRUE
(par défaut) et varformula = ~ fitted.values(my.lm)
en option, une approche initiale de l'homoscédasticité.
ncvTest
etbptest
utilisez différentes variables pour expliquer les résidus, voir les argumentsvar.formula
etvarformula
, respectivement. Les résultats divergent une fois que vous avez ajouté un autre régresseur à votre exemple.