Co to jest model z nadmiarem zer?
Model z nadmiarem zer (ang. zero-inflated model) to model dla zliczeń, w którym zera mają dwa źródła. Część osób w ogóle nie może mieć zdarzenia (zera strukturalne), a reszta mogła je mieć, ale w danym okresie go nie miała. Lambert (1992) opisała regresję ZIP: z prawdopodobieństwem π obserwuje się wyłącznie zero, a z prawdopodobieństwem 1 − π – wartość z rozkładu Poissona. Oba parametry mogą zależeć od predyktorów. Wersja ZINB zamiast Poissona używa rozkładu ujemnego dwumianowego.
Model
f to rozkład Poissona lub ujemny dwumianowy. Model ma dwie części: logistyczną dla π (kto należy do grupy „zawsze zero”) i część zliczeń z logarytmiczną funkcją wiążącą (IRR). Model hurdle działa inaczej: jedna część opisuje wszystkie zera, a druga tylko wartości dodatnie. Oba podejścia, też wielopoziomowo, omawiają Atkins i in. (2013).
Przykład
400 studentów podało liczbę drinków wypitych w weekend; część nie pije alkoholu (dane symulowane). Zer jest 188. Regresja Poissona przewiduje ich 58.7, model NB – 171.5, ZIP – 186.5, a ZINB – 186.2. AIC wynosi odpowiednio 2162.7, 1564.1, 1584.5 i 1514.6. ZIP odtwarza zera, ale nie rozproszenie wśród pijących; najlepszy jest ZINB. Szacowany odsetek zer strukturalnych to π = .40, 95% CI [.34, .46], a w części zliczeń IRR dla impulsywności = 1.58, 95% CI [1.42, 1.77].
Jak opisać w pracy
Na co uważać
- Dużo zer to jeszcze nie nadmiar. Porównaj liczbę zer z przewidywaną przez Poissona i NB. W przykładzie NB był już blisko.
- Uzasadnij zera strukturalne. Jeśli nie wiadomo, kto „nie może” mieć zdarzenia, rozważ model hurdle.
- Czytaj dwie części osobno. Dodatni współczynnik w części zerowej zwiększa szansę bycia zerem strukturalnym, czyli oznacza mniej zdarzeń.
W R oba modele dopasujesz funkcją zeroinfl() z pakietu pscl (Zeileis i in., 2008), dane powtarzane – w GLMM. Porównanie modeli opisuje wpis Regresja dla zliczeń.
Model z nadmiarem zer w R
Kod liczy wiarygodność modeli ZIP i ZINB ręcznie (optim()), dopasowuje modele Poissona i NB i porównuje przewidywaną liczbę zer oraz AIC. W codziennej pracy wygodniej użyć funkcji zeroinfl() z pakietu pscl.
Ile zer przewiduje każdy model?
R
# Model z nadmiarem zer (ZIP, ZINB) liczony przez optim (dane symulowane)
library(MASS)
set.seed(186)
n <- 400
impuls <- rnorm(n) # impulsywność (wynik z)
abstynent <- rbinom(n, 1, 0.35) # zera strukturalne: osoby niepijące
drinki <- ifelse(abstynent == 1, 0, rnbinom(n, mu = exp(1.3 + 0.4 * impuls), size = 3))
round(c(zera_obs = sum(drinki == 0), M = mean(drinki), wariancja = var(drinki)), 2)
X <- cbind(1, impuls)
nll_zi <- function(th, nb) { # th: b0, b1, logit(pi) [, log(theta)]
mu <- exp(X %*% th[1:2]); pi0 <- plogis(th[3])
f <- if (nb) dnbinom(drinki, mu = mu, size = exp(th[4])) else dpois(drinki, mu)
f0 <- if (nb) dnbinom(0, mu = mu, size = exp(th[4])) else dpois(0, mu)
-sum(log(ifelse(drinki == 0, pi0 + (1 - pi0) * f0, (1 - pi0) * f)))
}
zip <- optim(c(1, 0, 0), nll_zi, nb = FALSE, method = "BFGS", hessian = TRUE)
zinb <- optim(c(1, 0, 0, 0), nll_zi, nb = TRUE, method = "BFGS", hessian = TRUE)
m_p <- glm(drinki ~ impuls, family = poisson); m_nb <- glm.nb(drinki ~ impuls)
zera_ocz <- function(mu, pi0 = 0, size = NULL)
sum(pi0 + (1 - pi0) * (if (is.null(size)) dpois(0, mu) else dnbinom(0, mu = mu, size = size)))
mu_zip <- exp(X %*% zip$par[1:2]); mu_zinb <- exp(X %*% zinb$par[1:2])
round(c(Poisson = zera_ocz(fitted(m_p)), NB = zera_ocz(fitted(m_nb), size = m_nb$theta),
ZIP = zera_ocz(mu_zip, plogis(zip$par[3])),
ZINB = zera_ocz(mu_zinb, plogis(zinb$par[3]), exp(zinb$par[4]))), 1)
round(c(AIC_Poisson = AIC(m_p), AIC_NB = AIC(m_nb),
AIC_ZIP = 2 * zip$value + 2 * 3, AIC_ZINB = 2 * zinb$value + 2 * 4), 1)
se <- sqrt(diag(solve(zinb$hessian)))
round(c(pi = plogis(zinb$par[3]), pi_dolna = plogis(zinb$par[3] - 1.96 * se[3]),
pi_gorna = plogis(zinb$par[3] + 1.96 * se[3])), 2) # odsetek zer strukturalnych
round(exp(c(IRR = zinb$par[2], dolna = zinb$par[2] - 1.96 * se[2],
gorna = zinb$par[2] + 1.96 * se[2])), 2) # IRR w części zliczeń
c(zip$convergence, zinb$convergence)Wynik w R
zera_obs M wariancja
188.00 2.44 11.56
Poisson NB ZIP ZINB
58.7 171.5 186.5 186.2
AIC_Poisson AIC_NB AIC_ZIP AIC_ZINB
2162.7 1564.1 1584.5 1514.6
pi pi_dolna pi_gorna
0.40 0.34 0.46
IRR dolna gorna
1.58 1.42 1.77
[1] 0 0Bibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje pakietów base i stats, pakiet MASS). 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/
- MASS (wersja 7.3-65): Venables, W. N., & Ripley, B. D. (2002). Modern applied statistics with S (4th ed.). Springer. https://doi.org/10.1007/978-0-387-21706-2
Najczęstsze pytania
Czym model z nadmiarem zer różni się od modelu hurdle?
W modelu z nadmiarem zer zera pochodzą z dwóch procesów: strukturalnego i przypadkowego. W modelu hurdle wszystkie zera opisuje jedna część, a druga modeluje tylko wartości dodatnie.
Kiedy wybrać ZINB zamiast ZIP?
Gdy wśród osób, które mogą mieć zdarzenie, wariancja zliczeń przekracza średnią. Porównaj modele przez AIC; w przykładzie ZIP odtworzył liczbę zer, ale ZINB miał wyraźnie niższe AIC.
Jak interpretować część zerową modelu zero-inflated?
To regresja logistyczna dla przynależności do grupy „zawsze zero”. Dodatni współczynnik zwiększa szansę, że osoba jest zerem strukturalnym, czyli oznacza mniej zdarzeń, odwrotnie niż w części zliczeń.
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ówBibliografia i dalsza literatura naukowa (APA 7)
- Atkins, D. C., Baldwin, S. A., Zheng, C., Gallop, R. J., & Neighbors, C. (2013). A tutorial on count regression and zero-altered count models for longitudinal substance use data. Psychology of Addictive Behaviors, 27(1), 166–177. https://doi.org/10.1037/a0029508 ● Otwarty dostęp: pełny tekst
- Lambert, D. (1992). Zero-inflated Poisson regression, with an application to defects in manufacturing. Technometrics, 34(1), 1–14. https://doi.org/10.2307/1269547
- Zeileis, A., Kleiber, C., & Jackman, S. (2008). Regression models for count data in R. Journal of Statistical Software, 27(8), 1–25. https://doi.org/10.18637/jss.v027.i08 ● Otwarty dostęp
Cytowania BibTeX
@article{atkins2013tutorial, author={Atkins, David C. and Baldwin, Scott A. and Zheng, Cheng and Gallop, Robert J. and Neighbors, Clayton}, title={{A tutorial on count regression and zero-altered count models for longitudinal substance use data}}, journal={Psychology of Addictive Behaviors}, year={2013}, volume={27}, number={1}, pages={166--177}, doi={10.1037/a0029508}}@article{lambert1992zero, author={Lambert, Diane}, title={{Zero-inflated Poisson regression, with an application to defects in manufacturing}}, journal={Technometrics}, year={1992}, volume={34}, number={1}, pages={1--14}, doi={10.2307/1269547}}@article{zeileis2008regression, author={Zeileis, Achim and Kleiber, Christian and Jackman, Simon}, title={{Regression models for count data in R}}, journal={Journal of Statistical Software}, year={2008}, volume={27}, number={8}, pages={1--25}, doi={10.18637/jss.v027.i08}}