Create a Zero- and/or One-Inflated Beta Distribution
Create a Zero- and/or One-Inflated Beta Distribution
Class and methods for zero- and/or one-inflated beta distributions in regression specification using the workflow from the distributions3 package.
Beta01(mu, phi, p0 =0, p1 =0)
Arguments
mu: numeric. The mean of the beta distribution (on the open unit interval).
phi: numeric. The precision parameter of the beta distribution.
p0: numeric. The probability for an observation of zero (often referred to as zero inflation).
p1: numeric. The probability for an observation of one (often referred to as one inflation).
Details
The zero- and/or one-inflated beta distribution is obtained by adding point masses at zero and/or one to a standard beta distribution.
Note that the support of the standard beta distribution is the open unit interval where values of exactly zero or one cannot occur. Thus, the inflation jargon is rather misleading as there is no probability that could be inflated. It is rather a hurdle or two-part (or three-part) model.
Returns
A Beta01 distribution object.
See Also
dbeta01, BetaR
Examples
## package and random seedlibrary("distributions3")set.seed(6020)## three beta distributionsX <- Beta01( mu = c(0.25,0.50,0.75), phi = c(1,1,2), p0 = c(0.1,0,0), p1 = c(0,0,0.3))
X
## compute moments of the distributionmean(X)variance(X)## support interval (minimum and maximum)support(X)## simulate random variablesrandom(X,5)## histograms of 1,000 simulated observationsx <- random(X,1000)hist(x[1,])hist(x[2,])hist(x[3,])## probability density function (PDF) and log-density (or log-likelihood)x <- c(0.25,0.5,0.75)pdf(X, x)pdf(X, x, log =TRUE)log_pdf(X, x)## cumulative distribution function (CDF)cdf(X, x)## quantilesquantile(X,0.5)## cdf() and quantile() are inversescdf(X, quantile(X,0.5))quantile(X, cdf(X,1))## point mass probabilities (if any) on boundarycdf(X,0, lower.tail =TRUE)cdf(X,1, lower.tail =FALSE)## all methods above can either be applied elementwise or for## all combinations of X and x, if length(X) = length(x),## also the result can be assured to be a matrix via drop = FALSEp <- c(0.05,0.5,0.95)quantile(X, p, elementwise =FALSE)quantile(X, p, elementwise =TRUE)quantile(X, p, elementwise =TRUE, drop =FALSE)## compare theoretical and empirical mean from 1,000 simulated observationscbind("theoretical"= mean(X),"empirical"= rowMeans(random(X,1000)))