genpoisson: Generalized Poisson Regression

View source: R/family.vd1.R

genpoissonR Documentation

Generalized Poisson Regression


Estimation of the two-parameter generalized Poisson distribution.


genpoisson(llambda = "rhobitlink", ltheta = "loglink",
           ilambda = NULL, itheta = NULL, imethod = 1,
           ishrinkage = 0.95, zero = "lambda")


llambda, ltheta

Parameter link functions for \lambda and \theta. See Links for more choices. The \lambda parameter lies at least within the interval [-1,1]; see below for more details, and an alternative link is rhobitlink. The \theta parameter is positive, therefore the default is the log link.

ilambda, itheta

Optional initial values for \lambda and \theta. The default is to choose values internally.


An integer with value 1 or 2 or 3 which specifies the initialization method for the parameters. If failure to converge occurs try another value and/or else specify a value for ilambda and/or itheta.

ishrinkage, zero

See CommonVGAMffArguments for information.


This family function is not recommended for use; instead try genpoisson1 or genpoisson2. For underdispersion with respect to the Poisson try the GTE (generally-truncated expansion) method described by Yee and Ma (2023).

The generalized Poisson distribution has density

f(y)=\theta(\theta+\lambda y)^{y-1} \exp(-\theta-\lambda y) / y!

for \theta > 0 and y = 0,1,2,\ldots. Now \max(-1,-\theta/m) \leq \lambda \leq 1 where m (\geq 4) is the greatest positive integer satisfying \theta + m\lambda > 0 when \lambda < 0 [and then P(Y=y) = 0 for y > m]. Note the complicated support for this distribution means, for some data sets, the default link for llambda will not always work, and some tinkering may be required to get it running.

As Consul and Famoye (2006) state on p.165, the lower limits on \lambda and m \ge 4 are imposed to ensure that there are at least 5 classes with nonzero probability when \lambda is negative.

An ordinary Poisson distribution corresponds to \lambda = 0. The mean (returned as the fitted values) is E(Y) = \theta / (1 - \lambda) and the variance is \theta / (1 - \lambda)^3.

For more information see Consul and Famoye (2006) for a summary and Consul (1989) for full details.


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


Monitor convergence! This family function is fragile. Don't get confused because theta (and not lambda) here really matches more closely with lambda of dpois.


This family function handles multiple responses. This distribution is potentially useful for dispersion modelling. Convergence problems may occur when lambda is very close to 0 or 1. If a failure occurs then you might want to try something like llambda = extlogitlink(min = -0.9, max = 1) to handle the LHS complicated constraint, and if that doesn't work, try llambda = extlogitlink(min = -0.8, max = 1), etc.


T. W. Yee. Easton Huch derived the EIM and it has been implemented in the weights slot.


Consul, P. C. (1989). Generalized Poisson Distributions: Properties and Applications. New York, USA: Marcel Dekker.

Consul, P. C. and Famoye, F. (2006). Lagrangian Probability Distributions, Boston, USA: Birkhauser.

Jorgensen, B. (1997). The Theory of Dispersion Models. London: Chapman & Hall

Yee, T. W. and Ma, C. (2023) Generally altered, inflated, truncated and deflated regression. In preparation.

See Also

genpoisson1, genpoisson2, poissonff, dpois. dgenpois0, rhobitlink, extlogitlink.


## Not run: 
gdata <- data.frame(x2 = runif(nn <- 500))  # NBD data:
gdata <- transform(gdata, y1 = rnbinom(nn, exp(1), mu = exp(2 - x2)))
fit <- vglm(y1 ~ x2, genpoisson, data = gdata, trace = TRUE)
coef(fit, matrix = TRUE)
## End(Not run)

VGAMdata documentation built on Sept. 18, 2023, 9:08 a.m.