Co to jest test Hosmera–Lemeshowa?
Test Hosmera–Lemeshowa (ang. Hosmer–Lemeshow goodness-of-fit test) sprawdza, czy prawdopodobieństwa przewidywane przez regresję logistyczną zgadzają się z odsetkami zdarzeń obserwowanymi w danych. Hosmer i Lemeshow (1980) zaproponowali statystyki oparte na tabeli, w której liczebności oczekiwane wyznacza się po pogrupowaniu obserwacji. Najczęściej używa się wersji z 10 grupami według decyli przewidywanego prawdopodobieństwa. Hipoteza zerowa mówi, że model jest dobrze dopasowany, więc wynik nieistotny oznacza tylko brak dowodów złego dopasowania.
Jak liczyć?
Og to liczba zdarzeń w grupie g, Eg – suma przewidywanych prawdopodobieństw w tej grupie, a ng – jej liczebność. Statystykę porównuje się z rozkładem χ².
Przykład
W danych symulowanych rezygnacja z egzaminu zależy od lęku nieliniowo (osoby z bardzo niskim i bardzo wysokim lękiem rezygnują częściej), a model zawiera tylko liniowy składnik lęku. Przy n = 150 test nie wykrył błędu: χ²(8) = 12.66, p = .124 (przy 8 grupach χ²(6) = 10.47, p = .106). Przy tym samym błędzie i n = 3000 wynik to χ²(8) = 226.22, p < .001. Błąd modelu był ten sam, zmieniła się tylko moc testu.
Jak opisać w pracy
Na co uważać
- Wynik nieistotny nie dowodzi, że model jest dobry. W małej próbie test przeoczy nawet pominiętą nieliniowość, jak w przykładzie. Postać związku sprawdź osobno, np. dodając składnik kwadratowy (regresja krzywoliniowa).
- W dużej próbie test odrzuca model już przy drobnych odchyleniach. Paul, Pennell i Lemeshow (2013) pokazują, że moc rośnie z liczebnością i zależy od liczby grup, i podają zalecenia, jak dobierać liczbę grup do wielkości próby. W pracy podaj, ile grup przyjęto.
- Nie poprzestawaj na jednym p. Steyerberg i in. (2010) zwracają uwagę na ograniczoną moc i słabą interpretowalność tego testu i zalecają, by zawsze raportować kalibrację (np. wykres i nachylenie kalibracji) oraz dyskryminację (AUC).
Test nie mówi też nic o sile związku – do tego służą ilorazy szans i pseudo-R². Ocenę kalibracji w modelu predykcyjnym omawia wpis Modele predykcyjne: walidacja krzyżowa, przeuczenie i kalibracja.
Test Hosmera–Lemeshowa w R
Funkcja hl_test() dzieli próbę według kwantyli przewidywanego prawdopodobieństwa i liczy statystykę testu. Ten sam błąd specyfikacji sprawdzono w małej i dużej próbie.
Ten sam źle określony model przy n = 150 i n = 3000
R
# Test Hosmera–Lemeshowa liczony ręcznie (dane symulowane)
hl_test <- function(y, p, g = 10) {
grupa <- cut(p, breaks = unique(quantile(p, probs = seq(0, 1, length.out = g + 1))),
include.lowest = TRUE)
obs <- tapply(y, grupa, sum); ocz <- tapply(p, grupa, sum); n_g <- tapply(y, grupa, length)
chi2 <- sum((obs - ocz)^2 / (ocz * (1 - ocz / n_g)))
df <- nlevels(grupa) - 2
c(chi2 = round(chi2, 2), df = df, p = round(pchisq(chi2, df, lower.tail = FALSE), 3))
}
symuluj <- function(n, seed) {
set.seed(seed)
lek <- rnorm(n) # lęk przed egzaminem (wynik z)
y <- rbinom(n, 1, plogis(-1 + 0.5 * lek + 0.5 * lek^2)) # 1 = rezygnacja z egzaminu
m <- glm(y ~ lek, family = binomial) # model pomija składnik kwadratowy
list(y = y, p = fitted(m))
}
male <- symuluj(150, 182); duze <- symuluj(3000, 182)
rbind(n150_g10 = hl_test(male$y, male$p, 10),
n150_g8 = hl_test(male$y, male$p, 8),
n3000_g10 = hl_test(duze$y, duze$p, 10))Wynik w R
chi2 df p
n150_g10 12.66 8 0.124
n150_g8 10.47 6 0.106
n3000_g10 226.22 8 0.000Bibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje pakietów base i stats). 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/
Najczęstsze pytania
Co oznacza nieistotny wynik testu Hosmera–Lemeshowa?
Brak dowodów na rozbieżność przewidywanych i obserwowanych odsetków. Nie dowodzi, że model jest dobry: w małej próbie test często przeoczy nawet wyraźny błąd specyfikacji.
Ile grup przyjąć w teście Hosmera–Lemeshowa?
Zwykle 10 grup według decyli przewidywanego prawdopodobieństwa. Przy bardzo dużych próbach Paul i in. (2013) zalecają dobierać liczbę grup do liczebności. W pracy zawsze podaj liczbę grup.
Jak zrobić test Hosmera–Lemeshowa w SPSS i R?
W SPSS zaznacz opcję „Hosmer-Lemeshow goodness-of-fit” w oknie Options regresji logistycznej. W R użyj np. funkcji DescTools::HosmerLemeshowTest() albo policz statystykę ręcznie, jak w przykładzie.
Powiązane hasła
Poradniki, w których użyjesz tego pojęcia
Regresja logistyczna krok po kroku
Ilorazy szans i prawdopodobieństwa przewidywane, założenia, separacja, pseudo-R², AUC i kalibracja, tabela APA – na danych do pobrania z kodem R.
Czytaj →PoradnikModele predykcyjne: walidacja i kalibracja
Liczebność, przeuczenie, walidacja krzyżowa i bootstrap, LASSO i ridge, kalibracja, wynik Briera i TRIPOD+AI – na danych do pobrania, z kodem R.
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)
- Hosmer, D. W., & Lemeshow, S. (1980). Goodness of fit tests for the multiple logistic regression model. Communications in Statistics – Theory and Methods, 9(10), 1043–1069. https://doi.org/10.1080/03610928008827941
- Paul, P., Pennell, M. L., & Lemeshow, S. (2013). Standardizing the power of the Hosmer–Lemeshow goodness of fit test in large data sets. Statistics in Medicine, 32(1), 67–80. https://doi.org/10.1002/sim.5525
- Steyerberg, E. W., Vickers, A. J., Cook, N. R., Gerds, T., Gonen, M., Obuchowski, N., Pencina, M. J., & Kattan, M. W. (2010). Assessing the performance of prediction models: A framework for traditional and novel measures. Epidemiology, 21(1), 128–138. https://doi.org/10.1097/ede.0b013e3181c30fb2 ● Otwarty dostęp: pełny tekst
Cytowania BibTeX
@article{hosmer1980goodness, author={Hosmer, David W. and Lemeshow, Stanley}, title={{Goodness of fit tests for the multiple logistic regression model}}, journal={Communications in Statistics – Theory and Methods}, year={1980}, volume={9}, number={10}, pages={1043--1069}, doi={10.1080/03610928008827941}}@article{paul2013standardizing, author={Paul, Prabasaj and Pennell, Michael L. and Lemeshow, Stanley}, title={{Standardizing the power of the Hosmer–Lemeshow goodness of fit test in large data sets}}, journal={Statistics in Medicine}, year={2013}, volume={32}, number={1}, pages={67--80}, doi={10.1002/sim.5525}}@article{steyerberg2010assessing, author={Steyerberg, Ewout W. and Vickers, Andrew J. and Cook, Nancy R. and Gerds, Thomas and Gonen, Mithat and Obuchowski, Nancy and Pencina, Michael J. and Kattan, Michael W.}, title={{Assessing the performance of prediction models: A framework for traditional and novel measures}}, journal={Epidemiology}, year={2010}, volume={21}, number={1}, pages={128--138}, doi={10.1097/ede.0b013e3181c30fb2}}