R: One-Inflated Zipf Distribution

Oizipf {VGAM} | R Documentation

## One-Inflated Zipf Distribution

### Description

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

### Usage

    doizipf(x, N, shape, pstr1 = 0, log = FALSE)
    poizipf(q, N, shape, pstr1 = 0)
    qoizipf(p, N, shape, pstr1 = 0)
    roizipf(n, N, shape, pstr1 = 0)

### Arguments

`x, q, p, n` | Same as `Uniform`.
`N, shape` | See `Zipf`.
`pstr1` | Probability of a structural one (i.e., ignoring the Zipf distribution), called phi. The default value of phi = 0 corresponds to the response having an ordinary Zipf distribution.
`log` | Same as `Uniform`.

### Details

The probability function of Y is 1 with probability phi, and Zipf(N, s) with probability 1-phi. Thus

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

where W is distributed as a Zipf(N, s) random variable. The VGAM family function `oizeta` estimates the two parameters of this model by Fisher scoring.

### Value

`doizipf` gives the density, `poizipf` gives the distribution function, `qoizipf` gives the quantile function, and `roizipf` 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 Zipf distribution. Here, `pstr1` is also permitted to lie in the interval `[-dzipf(1, N, s) / (1 - dzipf(1, N, s)), 0]`. The resulting probability of a unit count is less than the nominal zipf value, and the use of `pstr1` to stand for the probability of a structural 1 loses its meaning. When `pstr1` equals `-dzipf(1, N, s) / (1 - dzipf(1, N, s))` this corresponds to the 1-truncated zipf distribution.

### Author(s)

T. W. Yee

### See Also

`oizeta`. `Zipf`, `zipf`, `Oizeta`.

### Examples

    N <- 10; shape <- 1.5; pstr1 <- 0.3; x <- (-1):N
    (ii <- doizipf(x, N, shape, pstr1 = pstr1))

    ## Not run:  x <- 0:10
    par(mfrow = c(2, 1))  # One-Inflated zipf
    barplot(rbind(doizipf(x, N, shape, pstr1 = pstr1), dzipf(x, N, shape)),
            beside = TRUE, col = c("blue", "orange"),
            main = paste("OIZipf(", N, ", ", shape, ", pstr1 = ", pstr1, ") (blue) vs",
                         " Zipf(", N, ", ", shape, ") (orange)", sep = ""),
            names.arg = as.character(x))

    deflat.limit <- -dzipf(1, N, shape) / (1 - dzipf(1, N, shape))
    newpstr1 <- round(deflat.limit, 3) + 0.001  # Inside but near the boundary
    barplot(rbind(doizipf(x, N, shape, pstr1 = newpstr1),
                    dzipf(x, N, shape)),
            beside = TRUE, col = c("blue", "orange"),
            main = paste("ODZipf(", N, ", ", shape, ", pstr1 = ", newpstr1, ") (blue) vs",
                         " Zipf(", N, ", ", shape, ") (orange)", sep = ""),
            names.arg = as.character(x))
    ## End(Not run)

[Package VGAM version 1.1-3 Index]