Byl jsem trochu zmatený ohledně interpretace bptest
v R (library(lmtest)
). Nulová hypotéza bptest
je, že rezidua mají konstantní rozptyl. Takže p-hodnota menší než 0,05 by znamenala, že předpoklad homoscedasticity by musel být odmítnut. Na tomto webu však:
Našel jsem následující výsledky, které mě pletou:
data: lmMod BP = 3.2149, df = 1, p-value = 0.07297
Hodnota p> 0,05 naznačuje, že nulová hypotéza (odchylka se u zbytku nemění) může být odmítnuto, a proto existuje heterscedasticita. To lze potvrdit spuštěním globální validace předpokladů lineárního modelu (gvlma) na objektu 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!
Proč tomu tak je že hodnota p> 0,05 znamená, že musíte odmítnout nulovou hypotézu, zatímco ve skutečnosti hodnota p menší než 0,05 znamená, že musíte odmítnout nulovou hypotézu?
Odpovědět
Toto by měl být překlep na rstatistics.net. Máte pravdu, že nulová hypotéza Breusch-Paganova testu je homoscedasticita (= rozptyl nezávisí na pomocných regresorech). Pokud se hodnota $ p $ stane „malou“, bude nulová hypotéza odmítnuta.
Doporučil bych kontaktovat autory rstatistics.net ohledně tohoto problému, zda souhlasí a napravit to.
Navíc si všimněte, že glvma()
ve výchozím nastavení používá jiný pomocný regresor než bptest()
a studentizaci vypne. Přesněji můžete vidět rozdíly, pokud replikujete výsledky explicitním nastavením argumentů bptest()
.
Model je dán:
data("cars", package = "datasets") lmMod <- lm(dist ~ speed, data = cars)
Výchozí nastavení bptest()
pak používá stejné pomocné regresory jako model, tj. speed
v tomto případě. Používá také studentizovanou verzi se zlepšenými vlastnostmi konečných vzorků, což vede k nevýznamnému výsledku.
library("lmtest") bptest(lmMod, ~ speed, data = cars, studentize = TRUE) ## studentized Breusch-Pagan test ## ## data: lmMod ## BP = 3.2149, df = 1, p-value = 0.07297
Naproti tomu glvma()
vypne studentizaci a zkontroluje lineární trend v odchylkách.
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 vidíte, hodnoty $ p $ jsou poměrně malé, ale na různých stranách 5%. Studentizované verze jsou mírně nad 5%.
glvma
říká " Předpoklady NENÍ splněny! " v posledním řádku, i když ve skutečnosti vychází z p-hodnotybptest()
předpoklad by měl být splněn.glvma
, jsou to horší hvězdy než význam a ukazují, že p-hodnota 5,1% se zásadně liší od 4,9%.