VGAM (version 1.1-1)

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))
# }

Run the code above in your browser using DataLab