En términos prácticos, ncvTest
utiliza el lado izquierdo de la ecuación y bptest
utiliza el lado derecho, por defecto.
Esto significa que en un caso de Y ~ X
ambas pruebas proporcionarán los mismos resultados (en cuanto a la studentize = F
opción de bptest
). Pero en un análisis multivariante como Y ~ X1 + X2
los resultados serán diferentes. (Como señaló @Helix123)
En el archivo de ayuda de ncvTest : var.formula
: " una fórmula unilateral para la varianza del error; si se omite, la varianza del error depende de los valores ajustados ." Lo que significa que, por defecto, se utilizarán los valores ajustados, pero también permite utilizar una combinación lineal de las variables independientes (X1 + X2).
En el archivo de ayuda de bptest : varformula
: "Por defecto las mismas variables explicativas se toman como en el modelo de regresión principal".
Continuando con el mismo ejemplo de @Francis (datos stat500
, de faraway
paquete):
> mdl_t = lm(final ~ midterm + hw, data = stat500)
Prueba de PA, utilizando valores ajustados:
> 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
Prueba de PA, utilizando una combinación lineal de predictores:
> 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
La "opción de combinación lineal" permite investigar la heteroscedasticidad asociada a la dependencia lineal de una variable independiente específica. Por ejemplo, sólo 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
Por último, como ha resumido @Francis, "En resumen, la prueba de PA estudiada es más robusta que la original", yo suelo ir con bptest
con studentize = TRUE
(por defecto) y varformula = ~ fitted.values(my.lm)
como opciones, para una primera aproximación a la homoscedasticidad.