Solved – Contradictory results about heteroscedasticity (gvlma / Breusch-Pagan test)

heteroscedasticitymultiple regressionr

Testing for heteroscedasticity (after OLS regression) using two different tools in R I obtain two contractictory results:

1/ Global Validation of Linear Models Assumptions of the gvlma package :

gvlma::gvlma(BMall_lm)

returns:

Call:
lm(formula = BM ~ TAM_jun + NBD3 + snow_acc, data = d)

Coefficients:
(Intercept)      TAM_jun         NBD3     snow_acc  
-618.545     -289.143      -11.785        1.186  


ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS
USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM:
Level of Significance =  0.05 

Call:
 gvlma::gvlma(x = BMall_lm) 

                      Value   p-value                   Decision
Global Stat        24.7590 5.625e-05 Assumptions NOT satisfied!
Skewness            1.5379 2.149e-01    Assumptions acceptable.
Kurtosis            0.6797 4.097e-01    Assumptions acceptable.
Link Function      22.2932 2.340e-06 Assumptions NOT satisfied!
Heteroscedasticity  0.2482 6.183e-01    Assumptions acceptable.

The conclusion here is that the homoscedasticity assumption is verified

2/ BUT when I use the Breusch-Pagan test in the lmtestpackage I get the reverse :

lmtest::bptest(BMall_lm)

    studentized Breusch-Pagan test

data:  BMall_lm
BP = 25.137, df = 3, p-value = 1.446e-05

Here, the homoscedasticity assumption is not verified

Any help about which one to follow ?

Best Answer

I would read the thread on whether normality testing is essentially useless (which is very similar to whether you should test for any other model assumption) and consider whether you should even be doing tests for such model assumptions. Various different tests will have more or less power against certain alternatives, so it can easily happen that two tests disagree. So, you could consider reading up on how these two tests differ and whether it is plausible that the particular deviations from assumptions are more plausible than the others in your case.

However, in any case, a failure to reject the null hypothesis does not demonstrate that assumptions are justified. Similarly, a rejection of the null hypothesis does not mean that a meaningful violation of assumptions is present (even if it is a correct rejection).

Usually, one would ideally check on previous similar data whether the assumptions are likely to be approximately fulfilled (looking at some measure of how large deviations - if any - are, instead of just some hypothesis test). You could still do that post-hoc on the data you now have, but this kind of data-driven excercise results in there not being type I error control, confidence intervals not having their nominal coverage and so on - in case this matters to you, which may not be a major consideration for some exploratory investigation. Given the data driven decisions, it will also be important to make this process transparent to those reading your research so that they are aware that analysis decisions were taken after seeing the data.