oizetaUC: One-Inflated Zeta Distribution

OizetaR Documentation

One-Inflated Zeta Distribution

Description

Density, distribution function, quantile function and random generation for the one-inflated zeta distribution with parameter pstr1.

Usage

doizeta(x, shape, pstr1 = 0, log = FALSE)
poizeta(q, shape, pstr1 = 0)
qoizeta(p, shape, pstr1 = 0)
roizeta(n, shape, pstr1 = 0)

Arguments

x, q, p, n

Same as Uniform.

shape

Vector of positive shape parameters.

pstr1

Probability of a structural one (i.e., ignoring the zeta distribution), called phi. The default value of phi = 0 corresponds to the response having an ordinary zeta distribution.

log

Same as Uniform.

Details

The probability function of Y is 1 with probability phi, and Zeta(shape) with probability 1-phi. Thus

P(Y=1) = phi + (1-phi) * P(W=1)

where W is distributed as a zeta(shape) random variable.

Value

doizeta gives the density, poizeta gives the distribution function, qoizeta gives the quantile function, and roizeta generates random deviates.

Note

The argument pstr1 is recycled to the required length, and usually has values which lie in the interval [0,1].

These functions actually allow for the zero-deflated zeta distribution. Here, pstr1 is also permitted to lie in the interval [-dzeta(1, shape) / (1 - dzeta(1, shape)), 0]. The resulting probability of a unit count is less than the nominal zeta value, and the use of pstr1 to stand for the probability of a structural 1 loses its meaning. When pstr1 equals -dzeta(1, shape) / (1 - dzeta(1, shape)) this corresponds to the 1-truncated zeta distribution.

Author(s)

T. W. Yee

See Also

Zeta, zetaff. Otzeta,

Examples

shape <- 1.5; pstr1 <- 0.3; x <- (-1):7
(ii <- doizeta(x, shape, pstr1 = pstr1))
max(abs(poizeta(1:200, shape) -
        cumsum(1/(1:200)^(1+shape)) / zeta(shape+1)))  # Should be 0

## Not run:  x <- 0:10
par(mfrow = c(2, 1))  # One-Inflated zeta
barplot(rbind(doizeta(x, shape, pstr1 = pstr1), dzeta(x, shape)),
        beside = TRUE, col = c("blue", "orange"),
        main = paste("OIZeta(", shape, ", pstr1 = ", pstr1, ") (blue) vs",
                     " Zeta(", shape, ") (orange)", sep = ""),
        names.arg = as.character(x))

deflat.limit <- -dzeta(1, shape) / pzeta(1, shape, lower.tail = FALSE)
newpstr1 <- round(deflat.limit, 3) + 0.001  # Inside but near the boundary
barplot(rbind(doizeta(x, shape, pstr1 = newpstr1),
                dzeta(x, shape)),
        beside = TRUE, col = c("blue","orange"),
        main = paste("ODZeta(", shape, ", pstr1 = ", newpstr1, ") (blue) vs",
                     " Zeta(", shape, ") (orange)", sep = ""),
        names.arg = as.character(x)) 
## End(Not run)

VGAMdata documentation built on March 18, 2022, 8:03 p.m.