# oiposbinomial: One-Inflated Positive Binomial Distribution Family Function In VGAMdata: Data Supporting the 'VGAM' Package

 oiposbinomial R Documentation

## One-Inflated Positive Binomial Distribution Family Function

### Description

Fits a one-inflated positive binomial distribution by maximum likelihood estimation.

### Usage

```oiposbinomial(lpstr1 = "logitlink", lprob = "logitlink",
type.fitted = c("mean", "prob", "pobs1", "pstr1", "onempstr1"),
iprob = NULL, gpstr1 = ppoints(9), gprob  = ppoints(9),
multiple.responses = FALSE, zero = NULL)
```

### Arguments

 `lpstr1, lprob` Link functions for the parameter phi and the positive binomial probability prob parameter. See `Links` for more choices. See `CommonVGAMffArguments` also. For the one-deflated model see below.
 `type.fitted` See `CommonVGAMffArguments` and `fittedvlm`. `iprob, gpstr1, gprob` For initial values; see `CommonVGAMffArguments`.
 `multiple.responses` Logical. See `binomialff` and `posbinomial`. `zero` See `CommonVGAMffArguments` for information.

### Details

These functions are based on

P(Y=y) = phi + (1- phi) * N * prob * (1-prob)^N / (1-(1-prob)^N),

for y=1/N, and

P(Y=y) = (1-phi) * choose(N,Ny) * prob^(N*y) * (1-prob)^(N*(1-y)) / (1-(1-prob)^N).

for y=2/N,…,1. That is, the response is a sample proportion out of N trials, and the argument `size` in `roiposbinom` is N here. Ideally N > 2 is needed. The parameter phi is the probability of a structural one, and it satisfies 0 < phi < 1 (usually). The mean of Y is E(Y) = phi + (1-phi) * prob / (1-(1-prob)^N) and these are returned as the default fitted values. By default, the two linear/additive predictors for `oiposbinomial()` are (logit(phi), logit(prob))^T.

### Value

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

### Note

The response variable should 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 ideally needs large values of N and prob much greater than 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.

Estimated probabilities of a structural one and an observed one are returned, as in `zipoisson`.

The one-deflated positive binomial distribution might be fitted by setting `lpstr1 = "identitylink"`, albeit, not entirely reliably. See `zipoisson` for information that can be applied here.

### Author(s)

T. W. Yee

`roiposbinom`, `posbinomial`, `binomialff`, `rbinom`.

### Examples

```size <- 10  # Number of trials; N in the notation above
nn <- 200
odata <- data.frame(pstr1  = logitlink( 0, inverse = TRUE),  # 0.50
mubin1 = logitlink(-1, inverse = TRUE),  # Mean of usual binomial
svec   = rep(size, length = nn),
x2     = runif(nn))
odata <- transform(odata,
mubin2 = logitlink(-1 + x2, inverse = TRUE))
odata <- transform(odata,
y1 = roiposbinom(nn, svec, pr = mubin1, pstr1 = pstr1),
y2 = roiposbinom(nn, svec, pr = mubin2, pstr1 = pstr1))
with(odata, table(y1))
fit1 <- vglm(y1 / svec ~  1, oiposbinomial, data = odata,
weights = svec, trace = TRUE, crit = "coef")
fit2 <- vglm(y2 / svec ~ x2, oiposbinomial, data = odata,
weights = svec, trace = TRUE)

coef(fit1, matrix = TRUE)
Coef(fit1)  # Useful for intercept-only models
head(fitted(fit1, type = "pobs1"))  # Estimate of P(Y = 1)