Słownik metodologiczny · Modele regresji

Test Breuscha–Pagana – jak sprawdzić heteroskedastyczność reszt?

Test Breuscha–Pagana sprawdza, czy wariancja reszt regresji zależy od predyktorów. Pokazujemy, jak działa regresja pomocnicza, czym różni się wersja studentyzowana od klasycznej, przykład w R z bptest() i opis do pracy.

Strona główna / Słownik / Test Breuscha–Pagana
W skrócie: Test Breuscha–Pagana sprawdza, czy kwadraty reszt regresji zależą od predyktorów. H₀: wariancja reszt jest stała. Statystyka ma rozkład χ² z liczbą stopni swobody równą liczbie predyktorów; w R liczy ją 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

Studentyzowany test Breuscha–Pagana wskazał na heteroskedastyczność reszt, χ²(1) = 22.80, p < .001: rozrzut pensji rósł wraz ze stażem. Dlatego błędy standardowe współczynników oszacowano metodą HC3 (b = 138.28, SE = 10.29).

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.
Przykład reprodukowalny

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ż

Dane wejściowe: staż pracy (0–30 lat) i pensja 150 pracowników, rozrzut pensji rośnie ze stażem (dane symulowane, set.seed(2861)).

Co odczytać: statystykę BP, df i p w obu wersjach, wartość LM policzoną ręcznie oraz błąd standardowy nachylenia klasyczny i HC3.

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        0

Bibliografia 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()).

  1. 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/
  2. 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/
  3. 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

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. 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
  2. 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}}
R