lmtest::bptest().Co to jest test Breuscha–Pagana?
Test Breuscha–Pagana (ang. Breusch–Pagan test, test BP) sprawdza, czy wariancja reszt w regresji liniowej zależy od predyktorów. Hipoteza zerowa mówi, że wariancja jest stała, czyli że spełnione jest założenie homoskedastyczności. Breusch i Pagan (1979) zaproponowali go jako test mnożnika Lagrange’a, który da się policzyć z samych reszt metody najmniejszych kwadratów. Hasło o homoskedastyczności opisuje samo założenie i wykres reszt. Tutaj skupiamy się na tym, jak działa test i jak czytać jego wynik.
Jak działa test
Najpierw dopasowuje się model i zapisuje reszty. Potem kwadraty reszt regresuje się na te same predyktory. Jeśli predyktory dobrze przewidują kwadraty reszt, rozrzut zmienia się wraz z nimi. Statystyka testu ma rozkład χ² z liczbą stopni swobody równą liczbie predyktorów. Wersja z 1979 roku zakłada normalność reszt. Funkcja bptest() z pakietu lmtest domyślnie liczy wersję studentyzowaną, równą n · R² z regresji pomocniczej, która tego założenia nie wymaga.
Przykład
W danych symulowanych 150 pracowników przewidujemy pensję ze stażu (0–30 lat), przy czym rozrzut pensji rośnie ze stażem. Studentyzowany test BP daje χ²(1) = 22.80, p < .001, i tyle samo wynosi n · R² policzone ręcznie. Wersja klasyczna daje 37.22. Nachylenie (138.28 zł na rok stażu) się nie zmienia, ale błąd standardowy rośnie z 9.58 do 10.29 po przejściu na błędy HC3.
Jak opisać w pracy
Na co uważać
- Test wykrywa głównie zależność liniową wariancji od predyktorów. Zawsze obejrzyj też wykres reszt.
- Przy dużym n test wykryje nawet niewielką heteroskedastyczność, a przy małym może przeoczyć dużą. Long i Ervin (2000) radzą nie uzależniać wyboru błędów HC od wyniku testu wstępnego i przy N ≤ 250 stosować HC3.
- Pojedyncza obserwacja potrafi zamaskować heteroskedastyczność, co pokazuje wpis Diagnostyka regresji w R.
- Gdy rozrzut rośnie proporcjonalnie do średniej, pomóc może transformacja logarytmiczna.
Test Breuscha–Pagana w R
Kod liczy studentyzowaną i klasyczną wersję testu funkcją bptest(), odtwarza statystykę jako n · R² regresji pomocniczej i porównuje błędy standardowe klasyczne z HC3.
Test BP i błędy HC3 dla regresji pensji na staż
R
suppressPackageStartupMessages({ library(lmtest); library(sandwich) })
set.seed(2861)
n <- 150
staz <- round(runif(n, 0, 30)) # staż pracy w latach
pensja <- round(4000 + 120 * staz + rnorm(n, 0, 300 + 40 * staz)) # rozrzut rośnie ze stażem
m <- lm(pensja ~ staz)
bptest(m) # wersja studentyzowana (domyślna)
bptest(m, studentize = FALSE) # wersja klasyczna z 1979 r.
u2 <- resid(m)^2 # to samo "ręcznie": n * R² regresji e² na staż
round(c(LM = n * summary(lm(u2 ~ staz))$r.squared), 2)
round(rbind(klasyczne = coeftest(m)["staz", ],
HC3 = coeftest(m, vcov = vcovHC(m, type = "HC3"))["staz", ]), 3)Wynik w R
studentized Breusch-Pagan test
data: m
BP = 22.799, df = 1, p-value = 1.799e-06
Breusch-Pagan test
data: m
BP = 37.22, df = 1, p-value = 1.055e-09
LM
22.8
Estimate Std. Error t value Pr(>|t|)
klasyczne 138.281 9.581 14.433 0
HC3 138.281 10.285 13.445 0Bibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet lmtest, sandwich). W pracy podaj wersję R, której faktycznie użyto (sessionInfo()).
- R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
- lmtest (wersja 0.9.40): Zeileis, A., & Hothorn, T. (2002). Diagnostic checking in regression relationships. R News, 2(3), 7–10. https://CRAN.R-project.org/doc/Rnews/
- sandwich (wersja 3.1.1): Zeileis, A., Köll, S., & Graham, N. (2020). Various versatile variances: An object-oriented implementation of clustered covariances in R. Journal of Statistical Software, 95(1), 1–36. https://doi.org/10.18637/jss.v095.i01
Najczęstsze pytania
Jaka jest hipoteza zerowa w teście Breuscha–Pagana?
Hipoteza zerowa mówi, że wariancja reszt jest stała (homoskedastyczność). Istotny wynik oznacza, że rozrzut reszt zmienia się wraz z predyktorami.
Czym różni się test Breuscha–Pagana od testu White’a?
Test BP regresuje kwadraty reszt na same predyktory. Test White’a dodaje ich kwadraty i iloczyny, więc wykrywa też nieliniowe wzorce, kosztem większej liczby stopni swobody.
Co zrobić, gdy test Breuscha–Pagana jest istotny?
Najczęściej podaje się odporne błędy standardowe HC3. Można też rozważyć transformację zmiennej zależnej albo model, który wprost opisuje zmienną wariancję.
Powiązane hasła
Poradniki, w których użyjesz tego pojęcia
Diagnostyka regresji w R
Reszty studentyzowane, dźwignia, Cook i DFBETAS, VIF, maskowanie heteroskedastyczności, HC3 i analiza wrażliwości – z danymi i kodem R.
Czytaj →PoradnikRegresja wieloraka krok po kroku
Model i hipotezy, przygotowanie danych, założenia i diagnostyka, ΔR², interpretacja b, β i sr², kod R, SPSS i opis APA – na jednym przykładzie.
Czytaj →Potrzebujesz wsparcia w analizie danych?
Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.
Wyceń analizęOferta dla studentówBibliografia i dalsza literatura naukowa (APA 7)
- Breusch, T. S., & Pagan, A. R. (1979). A simple test for heteroscedasticity and random coefficient variation. Econometrica, 47(5), 1287–1294. https://doi.org/10.2307/1911963
- Long, J. S., & Ervin, L. H. (2000). Using heteroscedasticity consistent standard errors in the linear regression model. The American Statistician, 54(3), 217–224. https://doi.org/10.1080/00031305.2000.10474549
Cytowania BibTeX
@article{breusch1979simple, author={Breusch, T. S. and Pagan, A. R.}, title={{A simple test for heteroscedasticity and random coefficient variation}}, journal={Econometrica}, year={1979}, volume={47}, number={5}, pages={1287--1294}, doi={10.2307/1911963}}@article{long2000using, author={Long, J. Scott and Ervin, Laurie H.}, title={{Using heteroscedasticity consistent standard errors in the linear regression model}}, journal={The American Statistician}, year={2000}, volume={54}, number={3}, pages={217--224}, doi={10.1080/00031305.2000.10474549}}