zibinomial {VGAM} | R Documentation

## Zero-Inflated Binomial Distribution Family Function

### Description

Fits a zero-inflated binomial distribution by maximum likelihood estimation.

### Usage

    zibinomial(lphi="logit", lmu="logit",
               ephi=list(), emu=list(),
               iphi=NULL, zero=1, mv=FALSE)

### Arguments

`lphi, lmu` | Link functions for the parameter phi and the usual binomial probability mu parameter. See `Links` for more choices.
`ephi, emu` | List. Extra argument for the respective links. See `earg` in `Links` for general information.
`iphi` | Optional initial value for phi, whose value must lie between 0 and 1. The default is to compute an initial value internally.
`zero` | An integer specifying which linear/additive predictor is modelled as intercepts only. If given, the value must be either 1 or 2, and the default is the first. Setting `zero=NULL` enables both phi and mu to be modelled as a function of the explanatory variables.
`mv` | Logical. Currently it must be `FALSE` to mean the function does not handle multivariate responses. This is to remain compatible with the same argument in `binomialff`.

### Details

This function uses Fisher scoring and is based on

P(Y=0) = phi + (1-phi) * (1-mu)^N,

for y=0, and

P(Y=y) = (1-phi) * choose(N,Ny) * mu^(N*y) * (1-mu)^(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 satisfies 0 < phi < 1. The mean of Y is E(Y) = (1-phi) * mu and these are returned as the fitted values. By default, the two linear/additive predictors are (logit(phi), logit(mu))^T.

### Value

An object of class `"vglmff"` (see `vglmff-class`). The object is used by modelling functions such as `vglm` and `vgam`.

### Warning

Numerical problems can occur. Half-stepping is not uncommon. If failure to converge occurs, make use of the argument `iphi`.

### Note

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 N>1 and mu>0, i.e., the larger N and mu are, the better.

For intercept-models and constant N over the n observations, the `misc` slot has a component called `p0` which is the estimate of P(Y=0). This family function currently cannot handle a multivariate response (only `mv=FALSE` can be handled).

### Author(s)

T. W. Yee

### See Also

`rzibinom`, `binomialff`, `posbinomial`, `rbinom`.

### Examples

    size = 10  # number of trials; N in the notation above
    nn = 200
    zibdata = data.frame(phi = logit(0, inv=TRUE), # 0.50
                         mubin = logit(-1, inv=TRUE), # Mean of usual binomial
                         sv = rep(size, len=nn))
    zibdata = transform(zibdata,
                        y = rzibinom(n=nn, size=sv, prob=mubin, phi=phi)/sv)
    with(zibdata, table(y))
    fit = vglm(y ~ 1, zibinomial, weight=sv, data=zibdata, trace=TRUE)
    coef(fit, matrix=TRUE)
    Coef(fit) # Useful for intercept-only models
    fit@misc$p0  # Estimate of P(Y=0)
    head(fitted(fit))
    with(zibdata, mean(y)) # Compare this with fitted(fit)
    summary(fit)

[Package VGAM version 0.7-9 Index]