Interpretacja testu Breuscha-Pagana bptest () w R

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:

http://rstatistics.net/how-to-test-a-regression-model-for-heteroscedasticity-and-if-present-how-to-correct-it/

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%.

Komentarze

  • To dziwne, że glvma mówi " Założenia NIE zostały spełnione! " w ostatnim wierszu, podczas gdy w rzeczywistości opiera się na wartości p bptest() założenie powinno być spełnione.
  • ' zaktualizowałem swoją odpowiedź, aby wyjaśnić, że ' s nieznacznie różne warianty testu Breuscha-Pagana, które prowadzą do nieco innych wartości p po różnych stronach wynoszących 5%. ' Nie lubię etykiet decyzyjnych w glvma, są one gorsze niż gwiazdy istotności i wskazują, że wartość p równa 5,1% różni się zasadniczo od 4,9%.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *