Learn R Programming

VGAM (version 1.0-2)

Zoabeta: The Zero/One-Inflated Beta Distribution

Description

Density, distribution function, and random generation for the zero/one-inflated beta distribution.

Usage

dzoabeta(x, shape1, shape2, pobs0 = 0, pobs1 = 0, log = FALSE, tol = .Machine$double.eps) pzoabeta(q, shape1, shape2, pobs0 = 0, pobs1 = 0, lower.tail = TRUE, log.p = FALSE, tol = .Machine$double.eps) qzoabeta(p, shape1, shape2, pobs0 = 0, pobs1 = 0, lower.tail = TRUE, log.p = FALSE, tol = .Machine$double.eps) rzoabeta(n, shape1, shape2, pobs0 = 0, pobs1 = 0, tol = .Machine$double.eps)

Arguments

x, q, p, n
Same as Beta.
pobs0, pobs1
vector of probabilities that 0 and 1 are observed ($omega_0$ and $omega_1$).
shape1, shape2
Same as Beta. They are called a and b in beta respectively.

lower.tail, log, log.p
Same as Beta.

tol
Numeric, tolerance for testing equality with 0 and 1.

Value

dzoabeta gives the density, pzoabeta gives the distribution function, qzoabeta gives the quantile, and rzoabeta generates random deviates.

Details

This distribution is a mixture of a discrete distribution with a continuous distribution. The cumulative distribution function of $Y$ is $$F(y) =(1 - \omega_0 -\omega_1) B(y) + \omega_0 \times I[0 \leq y] + \omega_1 \times I[1 \leq y]$$ where $B(y)$ is the cumulative distribution function of the beta distribution with the same shape parameters (pbeta), $omega_0$ is the inflated probability at 0 and $omega_1$ is the inflated probability at 1. The default values of $omega_j$ mean that these functions behave like the ordinary Beta when only the essential arguments are inputted.

See Also

zoabetaR, beta, betaR, Betabinom.

Examples

Run this code
## Not run: 
# N <- 1000; y <- rzoabeta(N, 2, 3, 0.2, 0.2)
# hist(y, probability = TRUE, border = "blue", las = 1,
#      main = "Blue = 0- and 1-altered; orange = ordinary beta")
# sum(y == 0) / N  # Proportion of 0s
# sum(y == 1) / N  # Proportion of 1s
# Ngrid <- 1000
# lines(seq(0, 1, length = Ngrid),
#       dbeta(seq(0, 1, length = Ngrid), 2, 3), col = "orange")
# lines(seq(0, 1, length = Ngrid), col = "blue",
#       dzoabeta(seq(0, 1, length = Ngrid), 2 , 3, 0.2, 0.2))
# ## End(Not run)

Run the code above in your browser using DataLab