Co to jest regresja Firtha?
Regresja Firtha (ang. Firth's logistic regression, bias-reduced logistic regression) to regresja logistyczna szacowana ukaraną metodą największej wiarygodności. Firth (1993) pokazał, że niewielka modyfikacja funkcji wyniku usuwa główny składnik obciążenia oszacowań metody największej wiarygodności. W regresji logistycznej odpowiada to dodaniu do wiarygodności kary w postaci rozkładu a priori Jeffreysa. Metoda miała zmniejszać obciążenie w małych próbach. Heinze i Schemper (2002) wykazali, że rozwiązuje też problem separacji: daje skończone współczynniki tam, gdzie zwykły model ich nie ma.
Kiedy jej użyć
- Separacja całkowita lub quasi-całkowita, np. w jednej grupie nie wystąpiło ani jedno zdarzenie.
- Mała próba i rzadkie zdarzenie, gdy na predyktor przypada mało zdarzeń (zob. EPV i wpis Ile predyktorów może mieć regresja).
Korekta nie dodaje informacji. Przy kilku zdarzeniach przedział ufności zostanie szeroki. W R model dopasujesz funkcją glm() z method = "brglmFit" (pakiet brglm2) albo pakietem logistf.
Przykład
W symulowanych danych 40 pacjentów 7 miało powikłanie, wszyscy w grupie leczenia standardowego. W grupie nowego leku powikłań nie było. Zwykła regresja z wiekiem jako drugim predyktorem dała absurdalny wynik: b = −19.06, SE = 2365.48, p = .99. Model Firtha dał b = −3.03, SE = 1.43, z = −2.11, p = .035, czyli OR = 0.048, 95% CI [0.003, 0.805]. Kierunek efektu jest jasny, ale jego wielkość bardzo niepewna.
Jak opisać w pracy
Na co uważać
- Wald czy profil. Heinze i Schemper (2002) zalecają test ilorazu ukaranej wiarygodności i profilowe przedziały ufności zamiast Walda; liczy je logistf. Napisz, którego przedziału użyto. Logikę takiego testu opisuje hasło test ilorazu wiarygodności.
- Najpierw sprawdź dane. Separacja bywa skutkiem błędu kodowania albo kategorii z kilkoma osobami.
- Uzasadnij wybór. Podaj, dlaczego zwykły model nie wystarczył: tabelę krzyżową, liczbę zdarzeń i objawy w wydruku.
Diagnostykę całego modelu, z przykładem separacji, pokazuje wpis Regresja logistyczna krok po kroku.
Regresja Firtha w R
Kod tworzy małą próbę z quasi-całkowitą separacją, dopasowuje zwykłą regresję logistyczną i model z korektą Firtha (pakiet brglm2), a potem liczy iloraz szans z 95% przedziałem Walda.
Zwykła regresja logistyczna a korekta Firtha przy separacji
R
suppressPackageStartupMessages(library(brglm2)) # method = "brglmFit": korekta Firtha
set.seed(289)
n <- 40
lek <- rep(0:1, each = 20) # nowy lek (1) a standard (0), dane symulowane
wiek <- round(rnorm(n, 60, 8))
powiklanie <- c(rbinom(20, 1, 0.35), rep(0, 20)) # w grupie leku brak powikłań: separacja
table(lek, powiklanie)
m_ml <- glm(powiklanie ~ lek + wiek, family = binomial) # zwykła ML
round(summary(m_ml)$coefficients["lek", ], 2)
m_f <- glm(powiklanie ~ lek + wiek, family = binomial,
method = "brglmFit", type = "AS_mean") # Firth (1993)
round(summary(m_f)$coefficients, 3)
b <- coef(m_f)["lek"]; se <- sqrt(vcov(m_f)["lek", "lek"])
round(exp(c(OR = b, lower = b - 1.96 * se, upper = b + 1.96 * se)), 3)Wynik w R
powiklanie
lek 0 1
0 13 7
1 20 0
Estimate Std. Error z value Pr(>|z|)
-19.06 2365.48 -0.01 0.99
Estimate Std. Error z value Pr(>|z|)
(Intercept) 2.453 5.287 0.464 0.643
lek -3.027 1.433 -2.112 0.035
wiek -0.049 0.086 -0.571 0.568
OR.lek lower.lek upper.lek
0.048 0.003 0.805 Bibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet brglm2). 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/
- brglm2 (wersja 1.1.1): Kosmidis, I. (2026). brglm2: Bias reduction in generalized linear models [R package]. https://CRAN.R-project.org/package=brglm2
Najczęstsze pytania
Czy regresja Firtha nadaje się do każdej małej próby?
Zmniejsza obciążenie współczynników, ale nie zastępuje danych. Przy kilku zdarzeniach przedziały ufności pozostają szerokie, a model z wieloma predyktorami nadal będzie niestabilny.
Jak policzyć regresję Firtha w R?
Użyj glm(y ~ x, family = binomial, method = "brglmFit") z pakietem brglm2 albo funkcji logistf() z pakietu logistf, która podaje też profilowe przedziały ufności.
Jaki przedział ufności podać przy korekcie Firtha?
Heinze i Schemper (2002) zalecają profilowy przedział ukaranej wiarygodności zamiast przedziału Walda. Jeśli podajesz Walda, napisz to wprost w opisie wyniku.
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 →PoradnikIle predyktorów w regresji?
Reguła 10 zdarzeń na predyktor i jej słabości, minimalna liczebność według Rileya i in., regresja liniowa i logistyczna oraz symulacja przeuczenia w 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)
- Firth, D. (1993). Bias reduction of maximum likelihood estimates. Biometrika, 80(1), 27–38. https://doi.org/10.1093/biomet/80.1.27
- Heinze, G., & Schemper, M. (2002). A solution to the problem of separation in logistic regression. Statistics in Medicine, 21(16), 2409–2419. https://doi.org/10.1002/sim.1047
Cytowania BibTeX
@article{firth1993bias, author={Firth, David}, title={{Bias reduction of maximum likelihood estimates}}, journal={Biometrika}, year={1993}, volume={80}, number={1}, pages={27--38}, doi={10.1093/biomet/80.1.27}}@article{heinze2002solution, author={Heinze, Georg and Schemper, Michael}, title={{A solution to the problem of separation in logistic regression}}, journal={Statistics in Medicine}, year={2002}, volume={21}, number={16}, pages={2409--2419}, doi={10.1002/sim.1047}}