View source: R/family.univariate.R
genpoisson0 | R Documentation |
Estimation of the two-parameter generalized Poisson distribution (original parameterization).
genpoisson0(ltheta = "loglink", llambda = "logitlink",
itheta = NULL, ilambda = NULL, imethod = c(1, 1),
ishrinkage = 0.95, glambda = ppoints(5),
parallel = FALSE, zero = "lambda")
ltheta , llambda |
Parameter link functions for |
itheta , ilambda |
Optional initial values for |
imethod |
See |
ishrinkage , zero |
See |
glambda , parallel |
See |
The generalized Poisson distribution (GPD) was proposed by Consul and Jain (1973), and it has PMF
f(y)=\theta(\theta+\lambda y)^{y-1} \exp(-\theta-\lambda y) / y!
for 0 < \theta
and y = 0,1,2,\ldots
.
Theoretically,
\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 Pr(Y=y) = 0
for y > m
].
However, there are problems with a negative \lambda
such as
it not being normalized, so this family function restricts
\lambda
to (0, 1)
.
This original parameterization is called the GP-0 by VGAM,
partly because there are two other common parameterizations
called the GP-1 and GP-2 (see Yang et al. (2009)),
genpoisson1
and genpoisson2
)
that are more suitable for regression.
However, genpoisson()
has been simplified to
genpoisson0
by only handling positive parameters,
hence only overdispersion relative to the Poisson is accommodated.
Some of the reasons for this are described in
Scollnik (1998), e.g., the probabilities do not
sum to unity when lambda
is negative.
To simply things, VGAM 1.1-4 and later will only
handle positive lambda
.
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
so that the variance is proportional to the mean,
just like the NB-1 and quasi-Poisson.
For more information see Consul and Famoye (2006) for a summary and Consul (1989) for more details.
An object of class "vglmff"
(see vglmff-class
).
The object is used by modelling functions such as vglm
,
and vgam
.
Although this family function is far less fragile compared to
what used to be called genpoisson()
it is still a
good idea to monitor convergence because
equidispersion may result in numerical problems;
try poissonff
instead.
And underdispersed data will definitely result in
numerical problems and warnings;
try quasipoisson
instead.
This family function replaces genpoisson()
, and some of the
major changes are:
(i) the swapping of the linear predictors;
(ii) the change from rhobitlink
to
logitlink
in llambda
to reflect the no longer handling of underdispersion;
(iii) proper Fisher scoring is implemented to give improved
convergence.
Notationally, and in the literature too,
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 and numerical problems may occur when lambda
becomes very close to 0 or 1.
T. W. Yee.
Easton Huch derived the EIM and it has been implemented
in the weights
slot.
Consul, P. C. and Jain, G. C. (1973). A generalization of the Poisson distribution. Technometrics, 15, 791–799.
Consul, P. C. and Famoye, F. (2006). Lagrangian Probability Distributions, Boston, USA: Birkhauser.
Jorgensen, B. (1997). The Theory of Dispersion Models. London: Chapman & Hall.
Consul, P. C. (1989). Generalized Poisson Distributions: Properties and Applications. New York, USA: Marcel Dekker.
Yang, Z., Hardin, J. W., Addy, C. L. (2009). A score test for overdispersion in Poisson regression based on the generalized Poisson-2 model. J. Statist. Plann. Infer., 139, 1514–1521.
Yee, T. W. (2020). On generalized Poisson regression. In preparation.
Genpois0
,
genpoisson1
,
genpoisson2
,
poissonff
,
negbinomial
,
Poisson
,
quasipoisson
.
gdata <- data.frame(x2 = runif(nn <- 500))
gdata <- transform(gdata, y1 = rgenpois0(nn, theta = exp(2 + x2),
logitlink(1, inverse = TRUE)))
gfit0 <- vglm(y1 ~ x2, genpoisson0, data = gdata, trace = TRUE)
coef(gfit0, matrix = TRUE)
summary(gfit0)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.