Co to jest separacja?
Separacja (ang. separation, także monotone likelihood) w regresji logistycznej występuje wtedy, gdy predyktor lub ich kombinacja bezbłędnie oddziela zdarzenia od braku zdarzeń. Albert i Anderson (1984) wyróżnili trzy układy danych: separację całkowitą, separację quasi-całkowitą (rozdział jest idealny poza punktami leżącymi na granicy) i nakładanie się (overlap). Skończone oszacowania największej wiarygodności istnieją tylko w ostatnim przypadku. Przy separacji współczynnik dąży do nieskończoności, a program zatrzymuje się na dużej, przypadkowej liczbie.
Jak ją rozpoznać
Separacja zdarza się głównie w małych próbach z niezrównoważonymi i silnie związanymi z wynikiem predyktorami (Heinze i Schemper, 2002), np. gdy w jednej kategorii wszyscy mają zdarzenie. Objawy to ogromny współczynnik, jeszcze większy błąd standardowy i p bliskie 1. Najprostszy test to tabela krzyżowa predyktora kategorialnego z wynikiem: zero w komórce oznacza separację. Pakiet detectseparation w R wskazuje, które oszacowania są nieskończone.
Przykład
W danych symulowanych 60 osób przewidujemy zdanie egzaminu z wyniku testu wstępnego i udziału w kursie. Wszystkie 12 osób po kursie zdało, a bez kursu zdało 17 z 48. Funkcja glm() zwraca dla kursu b = 19.70, SE = 1749.25, p = .991, czyli „iloraz szans” rzędu 3.6 × 10⁸. Model formalnie się zbiegł (17 iteracji) i R nie wyświetlił ostrzeżenia. Dopiero detectseparation pokazał, że oszacowanie dla kursu jest nieskończone.
Jak opisać w pracy
Na co uważać
- Nie interpretuj p z testu Walda. Tu p = .991 przy bardzo silnym związku. Test ilorazu wiarygodności dla kursu daje χ²(1) = 24.19, p < .001.
- Nie usuwaj predyktora tylko dlatego, że „psuje” model. Najczęstszym rozwiązaniem jest regresja Firtha, która daje skończone oszacowania (Heinze i Schemper, 2002).
- Separacja to problem małej próby. van Smeden i in. (2016) pokazali, że wyniki symulacji dotyczących EPV mogą zdominować nieliczne zbiory z separacją. Liczebność warto zaplanować z wyprzedzeniem, jak opisuje wpis Ile predyktorów może mieć regresja?
Separacja w R
Kod tworzy dane z separacją quasi-całkowitą, dopasowuje zwykły model glm() i sprawdza istnienie oszacowań funkcją glm(..., method = "detect_separation").
Separacja quasi-całkowita: wszyscy po kursie zdali
R
library(detectseparation)
set.seed(2881)
n <- 60
kurs <- rep(0:1, c(48, 12)) # 12 osób po kursie przygotowawczym
punkty <- round(rnorm(n, 25, 6)) # wynik testu wstępnego
zdal <- rbinom(n, 1, plogis(-4 + 0.15 * punkty))
zdal[kurs == 1] <- 1 # wszyscy po kursie zdali
table(kurs, zdal)
m <- glm(zdal ~ punkty + kurs, family = binomial) # tu R nie wyświetla żadnego ostrzeżenia
round(summary(m)$coefficients, 3)
format(exp(coef(m)[["kurs"]]), digits = 3) # "iloraz szans" dla kursu
c(iteracje = m$iter, zbiezny = m$converged)
glm(zdal ~ punkty + kurs, family = binomial, method = "detect_separation")Wynik w R
zdal
kurs 0 1
0 31 17
1 0 12
Estimate Std. Error z value Pr(>|z|)
(Intercept) -4.311 1.658 -2.600 0.009
punkty 0.150 0.064 2.349 0.019
kurs 19.698 1749.249 0.011 0.991
[1] "3.59e+08"
iteracje zbiezny
17 1
Implementation: ROI | Solver: lpsolve
Separation: TRUE
Existence of maximum likelihood estimates
(Intercept) punkty kurs
0 0 Inf
0: finite value, Inf: infinity, -Inf: -infinityBibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet detectseparation). 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/
- detectseparation (wersja 0.4.0): Kosmidis, I., Schumacher, D., & Schwendinger, F. (2026). detectseparation: Detect and check for separation and infinite maximum likelihood estimates [R package]. https://doi.org/10.32614/CRAN.package.detectseparation
Najczęstsze pytania
Skąd wiadomo, że w regresji logistycznej jest separacja?
Typowe objawy to bardzo duży współczynnik, jeszcze większy błąd standardowy i p bliskie 1. Sprawdź tabele krzyżowe predyktorów z wynikiem i pakiet detectseparation.
Co oznacza ostrzeżenie „fitted probabilities numerically 0 or 1”?
Że część przewidywanych prawdopodobieństw jest praktycznie równa 0 lub 1. Często towarzyszy separacji, ale jej nie dowodzi, a brak ostrzeżenia nie wyklucza separacji.
Czy przy separacji można usunąć problematyczny predyktor?
Lepiej nie, bo zwykle jest silnie związany z wynikiem. Częściej stosuje się regresję Firtha albo łączy rzadkie kategorie, jeśli ma to sens merytoryczny.
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)
- Albert, A., & Anderson, J. A. (1984). On the existence of maximum likelihood estimates in logistic regression models. Biometrika, 71(1), 1–10. https://doi.org/10.1093/biomet/71.1.1
- 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
- van Smeden, M., de Groot, J. A. H., Moons, K. G. M., Collins, G. S., Altman, D. G., Eijkemans, M. J. C., & Reitsma, J. B. (2016). No rationale for 1 variable per 10 events criterion for binary logistic regression analysis. BMC Medical Research Methodology, 16(1), Article 163. https://doi.org/10.1186/s12874-016-0267-3 ● Otwarty dostęp
Cytowania BibTeX
@article{albert1984existence, author={Albert, A. and Anderson, J. A.}, title={{On the existence of maximum likelihood estimates in logistic regression models}}, journal={Biometrika}, year={1984}, volume={71}, number={1}, pages={1--10}, doi={10.1093/biomet/71.1.1}}@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}}@article{vansmeden2016no, author={van Smeden, Maarten and de Groot, Joris A. H. and Moons, Karel G. M. and Collins, Gary S. and Altman, Douglas G. and Eijkemans, Marinus J. C. and Reitsma, Johannes B.}, title={{No rationale for 1 variable per 10 events criterion for binary logistic regression analysis}}, journal={BMC Medical Research Methodology}, year={2016}, volume={16}, number={1}, eid={163}, doi={10.1186/s12874-016-0267-3}}