# BetaDist: The beta distribution In IPMbook: Functions and Data for the Book 'Integrated Population Models'

## Description

Density, distribution function, quantile function and random number generation for the beta distribution with parameters `mean` and `sd` OR `mode` and `concentration`. These are wrappers for `stats::dbeta`, etc. `getBeta*Par` returns the shape parameters.

## Usage

 ``` 1 2 3 4 5 6 7 8 9 10 11``` ```dbeta2(x, mean, sd) pbeta2(q, mean, sd, lower.tail=TRUE, log.p=FALSE) qbeta2(p, mean, sd, lower.tail=TRUE, log.p=FALSE) rbeta2(n, mean, sd) getBeta2Par(mean, sd) dbeta3(x, mode, concentration) pbeta3(q, mode, concentration, lower.tail=TRUE, log.p=FALSE) qbeta3(p, mode, concentration, lower.tail=TRUE, log.p=FALSE) rbeta3(n, mode, concentration) getBeta3Par(mode, concentration) ```

## Arguments

 `x` vector of parameter values. `q` vector of quantiles. `p` vector of probabilities. `n` number of random draws required. `mean` mean of the beta distribution; cannot be 0 or 1. `sd` standard deviation of the beta distribution; this must be less than `sqrt(mean * (1-mean))`, larger values will return NA, with a warning. `mode` mode of the beta distribution; may be 0 or 1. `concentration` concentration of the beta distribution; concentration = 2 is uniform, and the distribution becomes narrower as concentration increases. It is sometimes referred to as 'sample size', but best thought of as sample size + 2. `lower.tail` logical; if TRUE (default), cumulative probabilities up to x, otherwise, above x. `log.p` logical; if TRUE, probabilities p are given as log(p).

## Value

`dbeta*` gives the density, `pbeta*` gives the distribution function, `qbeta*` gives the quantile function, and `rbeta*` generates random deviates.

`getBeta*Par` returns a 2-column matrix with the shape parameters corresponding to `mean` and `sd` OR `mode` and `concentration`.

## Author(s)

Mike Meredith

See the stats functions `dbeta`, `pbeta`, `qbeta`, `rbeta`.
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54``` ```# Plot some curves with dbeta2 xx <- seq(0, 1, length.out=101) plot(xx, dbeta2(xx, 0.4, 0.12), xlab="x", ylab="Probability density", main="Beta curves with mean = 0.4", type='l', lwd=2) lines(xx, dbeta2(xx, 0.4, 0.24), col='darkgreen', lwd=2) lines(xx, dbeta2(xx, 0.4, 0.28), col='red', lwd=2) lines(xx, dbeta2(xx, 0.4, 0.36), col='blue', lwd=2) abline(v=0.4, lty=3, lwd=2) legend('topright', paste("sd =", c(0.12,0.24, 0.28, 0.36)), lwd=2, col=c('black', 'darkgreen', 'red', 'blue'), bty='n') # Get shape and rate parameters for mean = 0.4 and sd = c(0.12,0.24, 0.28, 0.36, 0.49) # The last value for sd is too big and will produce NAs and a warning getBeta2Par(mean = 0.4, sd = c(0.12,0.24, 0.28, 0.36, 0.49)) # The parameterisation with mean and sd doesn't seem intuitive, # let's try mode and concentration. # This does not allow 'bathtub' curves, which are bimodal. plot(xx, dbeta3(xx, 0.4, 16), xlab="x", ylab="Probability density", main="Beta curves with mode = 0.4", type='l', lwd=2) lines(xx, dbeta3(xx, 0.4, 8), col='darkgreen', lwd=2) lines(xx, dbeta3(xx, 0.4, 4), col='red', lwd=2) lines(xx, dbeta3(xx, 0.4, 2), col='blue', lwd=2) abline(v=0.4, lty=3, lwd=2) legend('topright', , lwd=2, paste("concentration =", c(16, 8, 4, 2)), col=c('black', 'darkgreen', 'red', 'blue'), bty='n') # The mode can be at 0 or 1: plot(xx, dbeta3(xx, 1, 16), xlab="x", ylab="Probability density", main="Beta curves with mode = 1", type='l', lwd=2) lines(xx, dbeta3(xx, 1, 8), col='darkgreen', lwd=2) lines(xx, dbeta3(xx, 1, 4), col='red', lwd=2) lines(xx, dbeta3(xx, 1, 2), col='blue', lwd=2) legend('topleft', paste("concentration =", c(16, 8, 4, 2)), lwd=2, col=c('black', 'darkgreen', 'red', 'blue'), bty='n') # Cumulative plots with pbeta3 plot(xx, pbeta3(xx, 0.4, 16), xlab="x", ylab="Cumulative probability", main="Beta curves with mode = 0.4", type='l', lwd=2) lines(xx, pbeta3(xx, 0.4, 8), col='darkgreen', lwd=2) lines(xx, pbeta3(xx, 0.4, 4), col='red', lwd=2) lines(xx, pbeta3(xx, 0.4, 2), col='blue', lwd=2) abline(v=0.4, lty=3, lwd=2) legend('topleft', paste("concentration =", c(16, 8, 4, 2)), lwd=2, col=c('black', 'darkgreen', 'red', 'blue'), bty='n') # Generate random draws and plot a histogram rnd <- rbeta3(1e5, 0.4, 8) hist(rnd, freq=FALSE) # Add the curve: lines(xx, dbeta3(xx, 0.4, 8), col='darkgreen', lwd=2) # Get shape and rate parameters for mode = 0.4 and concentration = c(2, 4, 8, 16) getBeta3Par(mode = 0.4, concentration = c(2, 4, 8, 16)) ```