zageometric: Zero-Altered Geometric Distribution

View source: R/family.zeroinf.R

zageometricR Documentation

Zero-Altered Geometric Distribution

Description

Fits a zero-altered geometric distribution based on a conditional model involving a Bernoulli distribution and a positive-geometric distribution.

Usage

zageometric(lpobs0 = "logitlink", lprob = "logitlink",
     type.fitted = c("mean", "prob", "pobs0", "onempobs0"),
     imethod = 1, ipobs0 = NULL, iprob = NULL, zero = NULL)
zageometricff(lprob = "logitlink", lonempobs0 = "logitlink",
     type.fitted = c("mean", "prob", "pobs0", "onempobs0"),
     imethod = 1, iprob = NULL, ionempobs0 = NULL, zero = "onempobs0")

Arguments

lpobs0

Link function for the parameter p_0 or \phi, called pobs0 or phi here. See Links for more choices.

lprob

Parameter link function applied to the probability of success, called prob or p. See Links for more choices.

type.fitted

See CommonVGAMffArguments and fittedvlm for information.

ipobs0, iprob

Optional initial values for the parameters. If given, they must be in range. For multi-column responses, these are recycled sideways.

lonempobs0, ionempobs0

Corresponding argument for the other parameterization. See details below.

zero, imethod

See CommonVGAMffArguments.

Details

The response Y is zero with probability p_0, or Y has a positive-geometric distribution with probability 1-p_0. Thus 0 < p_0 < 1, which is modelled as a function of the covariates. The zero-altered geometric distribution differs from the zero-inflated geometric distribution in that the former has zeros coming from one source, whereas the latter has zeros coming from the geometric distribution too. The zero-inflated geometric distribution is implemented in the VGAM package. Some people call the zero-altered geometric a hurdle model.

The input can be a matrix (multiple responses). By default, the two linear/additive predictors of zageometric are (logit(\phi), logit(p))^T.

The VGAM family function zageometricff() has a few changes compared to zageometric(). These are: (i) the order of the linear/additive predictors is switched so the geometric probability comes first; (ii) argument onempobs0 is now 1 minus the probability of an observed 0, i.e., the probability of the positive geometric distribution, i.e., onempobs0 is 1-pobs0; (iii) argument zero has a new default so that the pobs0 is intercept-only by default. Now zageometricff() is generally recommended over zageometric(). Both functions implement Fisher scoring and can handle multiple responses.

Value

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

The fitted.values slot of the fitted object, which should be extracted by the generic function fitted, returns the mean \mu (default) which is given by

\mu = (1-\phi) / p.

If type.fitted = "pobs0" then p_0 is returned.

Warning

Convergence for this VGAM family function seems to depend quite strongly on providing good initial values.

Inference obtained from summary.vglm and summary.vgam may or may not be correct. In particular, the p-values, standard errors and degrees of freedom may need adjustment. Use simulation on artificial data to check that these are reasonable.

Note

Note this family function allows p_0 to be modelled as functions of the covariates. It is a conditional model, not a mixture model.

This family function effectively combines binomialff and posgeometric() and geometric into one family function. However, posgeometric() is not written because it is trivially related to geometric.

Author(s)

T. W. Yee

See Also

dzageom, geometric, zigeometric, spikeplot, dgeom, CommonVGAMffArguments, simulate.vlm.

Examples

zdata <- data.frame(x2 = runif(nn <- 1000))
zdata <- transform(zdata, pobs0 = logitlink(-1 + 2*x2, inverse = TRUE),
                          prob  = logitlink(-2 + 3*x2, inverse = TRUE))
zdata <- transform(zdata, y1 = rzageom(nn, prob = prob, pobs0 = pobs0),
                          y2 = rzageom(nn, prob = prob, pobs0 = pobs0))
with(zdata, table(y1))

fit <- vglm(cbind(y1, y2) ~ x2, zageometric, data = zdata, trace = TRUE)
coef(fit, matrix = TRUE)
head(fitted(fit))
head(predict(fit))
summary(fit)

VGAM documentation built on Sept. 18, 2024, 9:09 a.m.