Zero-Inflated Binomial Distribution Family Function
Fits a zero-inflated binomial distribution by maximum likelihood estimation.
zibinomial(lpstr0 = "logitlink", lprob = "logitlink", type.fitted = c("mean", "prob", "pobs0", "pstr0", "onempstr0"), ipstr0 = NULL, zero = NULL, multiple.responses = FALSE, imethod = 1) zibinomialff(lprob = "logitlink", lonempstr0 = "logitlink", type.fitted = c("mean", "prob", "pobs0", "pstr0", "onempstr0"), ionempstr0 = NULL, zero = "onempstr0", multiple.responses = FALSE, imethod = 1)
lpstr0, lprob |
Link functions for the parameter phi
and the usual binomial probability prob parameter.
See |
type.fitted |
See |
ipstr0 |
Optional initial values for phi, whose values must lie between 0 and 1. The default is to compute an initial value internally. If a vector then recyling is used. |
lonempstr0, ionempstr0 |
Corresponding arguments for the other parameterization. See details below. |
multiple.responses |
Logical. Currently it must be |
zero, imethod |
See |
These functions are based on
P(Y=0) = phi + (1- phi) * (1-prob)^N,
for y=0, and
P(Y=y) = (1-phi) * choose(N,Ny) * prob^(N*y) * (1-prob)^(N*(1-y)).
for y=1/N,2/N,…,1. That is, the response is a sample
proportion out of N trials, and the argument size
in
rzibinom
is N here.
The parameter phi is the probability of a structural zero,
and it satisfies 0 < phi < 1.
The mean of Y is E(Y) = (1-phi) * prob
and these are returned as the fitted values
by default.
By default, the two linear/additive predictors
for zibinomial()
are (logit(phi), logit(prob))^T.
The VGAM family function zibinomialff()
has a few
changes compared to zibinomial()
.
These are:
(i) the order of the linear/additive predictors is switched so the
binomial probability comes first;
(ii) argument onempstr0
is now 1 minus
the probability of a structural zero, i.e.,
the probability of the parent (binomial) component,
i.e., onempstr0
is 1-pstr0
;
(iii) argument zero
has a new default so that the onempstr0
is intercept-only by default.
Now zibinomialff()
is generally recommended over
zibinomial()
.
Both functions implement Fisher scoring.
An object of class "vglmff"
(see vglmff-class
).
The object is used by modelling functions such as vglm
and vgam
.
Numerical problems can occur.
Half-stepping is not uncommon.
If failure to converge occurs, make use of the argument ipstr0
or ionempstr0
,
or imethod
.
The response variable must have one of the formats described by
binomialff
, e.g., a factor or two column matrix or a
vector of sample proportions with the weights
argument
specifying the values of N.
To work well, one needs large values of N and prob>0, i.e., the larger N and prob are, the better. If N = 1 then the model is unidentifiable since the number of parameters is excessive.
Setting stepsize = 0.5
, say, may aid convergence.
Estimated probabilities of a structural zero and an
observed zero are returned, as in zipoisson
.
The zero-deflated binomial distribution might
be fitted by setting lpstr0 = identitylink
, albeit,
not entirely reliably. See zipoisson
for information that can be applied here. Else
try the zero-altered binomial distribution (see
zabinomial
).
T. W. Yee
Welsh, A. H., Lindenmayer, D. B. and Donnelly, C. F. (2013). Fitting and interpreting occupancy models. PLOS One, 8, 1–21.
size <- 10 # Number of trials; N in the notation above nn <- 200 zdata <- data.frame(pstr0 = logitlink( 0, inverse = TRUE), # 0.50 mubin = logitlink(-1, inverse = TRUE), # Mean of usual binomial sv = rep(size, length = nn)) zdata <- transform(zdata, y = rzibinom(nn, size = sv, prob = mubin, pstr0 = pstr0)) with(zdata, table(y)) fit <- vglm(cbind(y, sv - y) ~ 1, zibinomialff, data = zdata, trace = TRUE) fit <- vglm(cbind(y, sv - y) ~ 1, zibinomialff, data = zdata, trace = TRUE, stepsize = 0.5) coef(fit, matrix = TRUE) Coef(fit) # Useful for intercept-only models head(fitted(fit, type = "pobs0")) # Estimate of P(Y = 0) head(fitted(fit)) with(zdata, mean(y)) # Compare this with fitted(fit) summary(fit)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.