Ik was een beetje in de war over de interpretatie van bptest
in R (library(lmtest)
). De nulhypothese van bptest
is dat de residuen een constante variantie hebben. Een p-waarde van minder dan 0,05 zou dus betekenen dat de homoscedasticiteitsaanname zou moeten worden verworpen. Maar op deze website:
vond ik de volgende resultaten die me verwarren:
data: lmMod BP = 3.2149, df = 1, p-value = 0.07297
Een p-waarde> 0,05 geeft aan dat de nulhypothese (de variantie is onveranderlijk in het residu) kan zijn afgewezen en daarom bestaat heterscedasticiteit. Dit kan worden bevestigd door een globale validatie van lineaire modelaannames (gvlma) uit te voeren op het lm-object.
gvlma(lmMod) # validate if assumptions of linear regression holds true. # Call: gvlma(x = lmMod) Value p-value Decision Global Stat 15.801 0.003298 Assumptions NOT satisfied! Skewness 6.528 0.010621 Assumptions NOT satisfied! Kurtosis 1.661 0.197449 Assumptions acceptable. Link Function 2.329 0.126998 Assumptions acceptable. Heteroscedasticity 5.283 0.021530 Assumptions NOT satisfied!
Dus waarom is dit het geval dat een p-waarde> 0,05 betekent dat je de nulhypothese moet verwerpen, terwijl een p-waarde kleiner dan 0,05 in feite aangeeft dat je de nulhypothese moet verwerpen?
Antwoord
Dit zou een typefout moeten zijn op rstatistics.net. U hebt gelijk dat de nulhypothese van de Breusch-Pagan-test homoscedasticiteit is (= variantie is niet afhankelijk van hulpregressoren). Als de $ p $ -waarde “klein” wordt, wordt de nulhypothese afgewezen.
Ik zou aanraden om contact op te nemen met de auteurs van rstatistics.net over dit probleem om te zien of ze het ermee eens zijn en het oplossen.
Merk bovendien op dat glvma()
standaard een andere hulpregressor gebruikt dan bptest()
en studentisering uitschakelt. Nauwkeuriger gezegd, u kunt de verschillen zien als u de resultaten repliceert door de argumenten van bptest()
expliciet in te stellen.
Het model wordt gegeven door:
data("cars", package = "datasets") lmMod <- lm(dist ~ speed, data = cars)
De standaardinstelling die wordt gebruikt door bptest()
gebruikt vervolgens dezelfde aanvullende regressors als het model, dwz speed
in dit geval. Het maakt ook gebruik van de studentgerichte versie met verbeterde finite-sample-eigenschappen die een niet-significant resultaat opleveren.
library("lmtest") bptest(lmMod, ~ speed, data = cars, studentize = TRUE) ## studentized Breusch-Pagan test ## ## data: lmMod ## BP = 3.2149, df = 1, p-value = 0.07297
De glvma()
schakelt studentisering uit en controleert op een lineaire trend in de varianties.
cars$trend <- 1:nrow(cars) bptest(lmMod, ~ trend, data = cars, studentize = FALSE) ## Breusch-Pagan test ## ## data: lmMod ## BP = 5.2834, df = 1, p-value = 0.02153
Zoals je kunt zien zijn beide $ p $ -waarden vrij klein, maar aan verschillende kanten van 5%. De studentgerichte versies zijn beide iets meer dan 5%.
glvma
zegt " Veronderstellingen NIET! " in de laatste rij, terwijl het in feite is gebaseerd op de p-waarde vanbptest()
aan de aanname moet worden voldaan.glvma
, deze zijn slechter dan significantiesterren en geven aan dat de p-waarde van 5,1% is fundamenteel anders dan 4,9%.