Byłem trochę zdezorientowany co do interpretacji bptest
w R (library(lmtest)
). Hipoteza zerowa bptest
mówi, że reszty mają stałą wariancję. Zatem wartość p mniejsza niż 0,05 oznaczałaby, że założenie o homoskedastyczności musiałoby zostać odrzucone. Jednak w tej witrynie:
Znalazłem następujące wyniki, które mnie mylą:
data: lmMod BP = 3.2149, df = 1, p-value = 0.07297
Wartość p> 0,05 wskazuje, że hipoteza zerowa (wariancja jest niezmienna w reszcie) może być odrzucone i dlatego istnieje heterscedastyczność. Można to potwierdzić, przeprowadzając globalną walidację założeń modelu liniowego (gvlma) w obiekcie lm.
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!
Dlaczego więc tak jest że wartość p> 0,05 oznacza, że musisz odrzucić hipotezę zerową, podczas gdy w rzeczywistości wartość p mniejsza niż 0,05 oznacza, że musisz odrzucić hipotezę zerową?
Odpowiedź
To powinna być literówka na rstatistics.net. Masz rację, że hipotezą zerową testu Breuscha-Pagana jest homoskedastyczność (= wariancja nie zależy od pomocniczych regresorów). Jeśli wartość $ p $ stanie się „mała”, hipoteza zerowa zostanie odrzucona.
Zalecałbym skontaktowanie się z autorami rstatistics.net w tej sprawie, aby sprawdzić, czy się zgadzają i naprawią.
Ponadto zwróć uwagę, że glvma()
domyślnie używa innego pomocniczego regresora niż bptest()
i wyłącza uczenie się. Dokładniej, możesz zobaczyć różnice, jeśli powielisz wyniki, ustawiając argumenty bptest()
jawnie.
Model jest określony przez:
data("cars", package = "datasets") lmMod <- lm(dist ~ speed, data = cars)
Wartość domyślna używana przez bptest()
używa następnie tych samych pomocniczych regresorów co model, tj. speed
w tym przypadku. Używa również wersji studenckiej z ulepszonymi właściwościami próby skończonej, co daje nieistotny wynik.
library("lmtest") bptest(lmMod, ~ speed, data = cars, studentize = TRUE) ## studentized Breusch-Pagan test ## ## data: lmMod ## BP = 3.2149, df = 1, p-value = 0.07297
Natomiast glvma()
wyłącza uczenie się i sprawdza liniowy trend odchyleń.
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
Jak widać, obie wartości $ p $ są raczej małe, ale po różnych stronach 5%. Obie wersje studenckie są nieco powyżej 5%.
glvma
mówi " Założenia NIE zostały spełnione! " w ostatnim wierszu, podczas gdy w rzeczywistości opiera się na wartości pbptest()
założenie powinno być spełnione.glvma
, są one gorsze niż gwiazdy istotności i wskazują, że wartość p równa 5,1% różni się zasadniczo od 4,9%.