Jag var lite förvirrad angående tolkningen av bptest
i R (library(lmtest)
). Nollhypotesen för bptest
är att resterna har konstant varians. Så, ett p-värde mindre än 0,05 skulle innebära att antagandet om homoscedasticitet måste avvisas. Men på den här webbplatsen:
Jag hittade följande resultat som förvirrar mig:
data: lmMod BP = 3.2149, df = 1, p-value = 0.07297
Ett p-värde> 0,05 indikerar att nollhypotesen (variansen är oförändrad i resten) kan vara förkastas och därför finns heterscedasticitet. Detta kan bekräftas genom att köra en global validering av linjära modellantaganden (gvlma) på lm-objektet.
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!
Så varför är det så att ett p-värde> 0,05 betyder att du måste avvisa nollhypotesen, när ett p-värde mindre än 0,05 i själva verket indikerar att du måste avvisa nollhypotesen?
Svara
Detta borde vara ett stavfel på rstatistics.net. Du har rätt att nollhypotesen för Breusch-Pagan-testet är homoscedasticitet (= varians beror inte på hjälpregressorer). Om $ p $ -värdet blir ”litet” avvisas nollhypotesen.
Jag rekommenderar att du kontaktar författarna till rstatistics.net angående denna fråga för att se om de är överens och fixar det.
Observera dessutom att glvma()
använder en annan hjälpregressor än bptest()
som standard och stänger av studentisering. Mer exakt kan du se skillnaderna om du replikerar resultaten genom att ställa in argumenten för bptest()
uttryckligen.
Modellen ges av:
data("cars", package = "datasets") lmMod <- lm(dist ~ speed, data = cars)
Standardvärdet som används av bptest()
använder sedan samma hjälpregressorer som modellen, dvs. speed
i detta fall. Den använder också den studentiserade versionen med förbättrade egenskaper för ändliga prov som ger ett icke-signifikant resultat.
library("lmtest") bptest(lmMod, ~ speed, data = cars, studentize = TRUE) ## studentized Breusch-Pagan test ## ## data: lmMod ## BP = 3.2149, df = 1, p-value = 0.07297
Däremot glvma()
stänger av studentisering och kontrollerar en linjär trend i avvikelserna.
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
Som du ser är båda $ p $ -värdena ganska små men på olika sidor om 5%. De studentiserade versionerna ligger båda lite över 5%.
glvma
säger " Antaganden INTE nöjda! " i sista raden, när det faktiskt baseras på p-värdet förbptest()
antagandet ska uppfyllas.glvma
, dessa är värre än signifikanta stjärnor och förmedlar att p-värdet på 5,1% är fundamentalt annorlunda än 4,9%.