Votre supposition est correcte, ncvTest
effectue la version originale du test de Breusch-Pagan. Cela peut en fait être vérifié en le comparant à bptest(model, studentize = FALSE)
. (Comme l'a souligné @ Helix123, deux fonctions diffèrent également sur d'autres aspects tels que les arguments par défaut, il convient de consulter les manuels des packages de lmtest
et car
pour plus de détails.)
Le test Breusch-Pagan studentisé a été proposé par R. Koenker dans son article de 1981 A Note on Studentizing a Test for Heteroscedasticity . La différence la plus évidente des deux est qu'ils utilisent des statistiques de test différentes. À savoir, que soit les statistiques de test étudiées et l'original,* ξξ∗ξ^
ξ^=λξ∗,λ=Var(ε2)2Var(ε)2.
Voici un extrait de code qui montre ce que je viens d'écrire (données extraites du faraway
package):
> mdl = lm(final ~ midterm, data = stat500)
> bptest(mdl)
studentized Breusch-Pagan test
data: mdl
BP = 0.86813, df = 1, p-value = 0.3515
> bptest(mdl, studentize = FALSE)
Breusch-Pagan test
data: mdl
BP = 0.67017, df = 1, p-value = 0.413
> ncvTest(mdl)
Non-constant Variance Score Test
Variance formula: ~ fitted.values
Chisquare = 0.6701721 Df = 1 p = 0.4129916
>
> n = nrow(stat500)
> e = residuals(mdl)
> bpmdl = lm(e^2 ~ midterm, data = stat500)
> lambda = (n - 1) / n * var(e^2) / (2 * ((n - 1) / n * var(e))^2)
> Studentized_bp = n * summary(bpmdl)$r.squared
> Original_bp = Studentized_bp * lambda
>
> Studentized_bp
[1] 0.8681335
> Original_bp
[1] 0.6701721
Quant à savoir pourquoi on veut étudier le test BP d'origine, une citation directe de l'article de R. Koenker peut être utile:
... Deux conclusions ressortent de cette analyse:
- Le pouvoir asymptotique du test de Breusch et Pagan est extrêmement sensible à la kurtosis de la distribution de , etε
- la taille asymptotique du test n'est correcte que dans un cas particulier de kurtosis gaussien.
La première conclusion est développée dans Koenker et Bassett (1981) où des tests alternatifs et robustes d'hétéroscédasticité sont suggérés. Cette dernière conclusion implique que les niveaux de signification suggérés par Breusch et Pagan ne seront corrects que dans des conditions gaussiennes sur
. Étant donné que de telles conditions sont généralement supposées sur une foi aveugle et sont notoirement difficiles à vérifier, une modification du test de Breusch et Pagan est suggérée qui "élève" correctement la statistique du test et conduit à des niveaux de signification asymptotiquement corrects pour une classe de distributions raisonnablement large pour .εε
En bref, le test de TA étudiant est plus robuste que l'original.
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.En termes pratiques,
ncvTest
utilise le côté gauche de l'équation etbptest
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 debptest
). Mais dans une analyse multivariée telle queY ~ 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 dufaraway
package):Test BP, en utilisant des valeurs ajustées:
Test BP, utilisant une combinaison linéaire de prédicteurs:
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: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
, avecstudentize = TRUE
(par défaut) etvarformula = ~ fitted.values(my.lm)
en option, une approche initiale de l'homoscédasticité.la source