# Beta

##### The Beta Distribution

Density, distribution function, quantile function and random
generation for the Beta distribution with parameters `shape1`

and
`shape2`

(and optional non-centrality parameter `ncp`

).

- Keywords
- distribution

##### Usage

```
dbeta(x, shape1, shape2, ncp = 0, log = FALSE)
pbeta(q, shape1, shape2, ncp = 0, lower.tail = TRUE, log.p = FALSE)
qbeta(p, shape1, shape2, ncp = 0, lower.tail = TRUE, log.p = FALSE)
rbeta(n, shape1, shape2, ncp = 0)
```

##### Arguments

- x, q
vector of quantiles.

- p
vector of probabilities.

- n
number of observations. If

`length(n) > 1`

, the length is taken to be the number required.- shape1, shape2
non-negative parameters of the Beta distribution.

- ncp
non-centrality parameter.

- log, log.p
logical; if TRUE, probabilities p are given as log(p).

- lower.tail
logical; if TRUE (default), probabilities are \(P[X \le x]\), otherwise, \(P[X > x]\).

##### Details

The Beta distribution with parameters `shape1`

\(= a\) and
`shape2`

\(= b\) has density
$$f(x)=\frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)}{x}^{a-1} {(1-x)}^{b-1}%
$$
for \(a > 0\), \(b > 0\) and \(0 \le x \le 1\)
where the boundary values at \(x=0\) or \(x=1\) are defined as
by continuity (as limits).

The mean is \(a/(a+b)\) and the variance is \(ab/((a+b)^2 (a+b+1))\).
These moments and all distributional properties can be defined as
limits (leading to point masses at 0, 1/2, or 1) when \(a\) or
\(b\) are zero or infinite, and the corresponding
`[dpqr]beta()`

functions are defined correspondingly.

`pbeta`

is closely related to the incomplete beta function. As
defined by Abramowitz and Stegun 6.6.1
$$B_x(a,b) = \int_0^x t^{a-1} (1-t)^{b-1} dt,$$
and 6.6.2 \(I_x(a,b) = B_x(a,b) / B(a,b)\) where
\(B(a,b) = B_1(a,b)\) is the Beta function (`beta`

).

\(I_x(a,b)\) is `pbeta(x, a, b)`

.

The noncentral Beta distribution (with `ncp`

\( = \lambda\))
is defined (Johnson *et al*, 1995, pp.502) as the distribution of
\(X/(X+Y)\) where \(X \sim \chi^2_{2a}(\lambda)\)
and \(Y \sim \chi^2_{2b}\).

##### Value

`dbeta`

gives the density, `pbeta`

the distribution
function, `qbeta`

the quantile function, and `rbeta`

generates random deviates.

Invalid arguments will result in return value `NaN`

, with a warning.

The length of the result is determined by `n`

for
`rbeta`

, and is the maximum of the lengths of the
numerical arguments for the other functions.

The numerical arguments other than `n`

are recycled to the
length of the result. Only the first elements of the logical
arguments are used.

##### Note

Supplying `ncp = 0`

uses the algorithm for the non-central
distribution, which is not the same algorithm used if `ncp`

is
omitted. This is to give consistent behaviour in extreme cases with
values of `ncp`

very near zero.

##### References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
*The New S Language*.
Wadsworth & Brooks/Cole.

Abramowitz, M. and Stegun, I. A. (1972)
*Handbook of Mathematical Functions.* New York: Dover.
Chapter 6: Gamma and Related Functions.

Johnson, N. L., Kotz, S. and Balakrishnan, N. (1995)
*Continuous Univariate Distributions*, volume 2, especially
chapter 25. Wiley, New York.

##### See Also

Distributions for other standard distributions.

`beta`

for the Beta function.

##### Examples

`library(stats)`

```
# NOT RUN {
x <- seq(0, 1, length = 21)
dbeta(x, 1, 1)
pbeta(x, 1, 1)
## Visualization, including limit cases:
pl.beta <- function(a,b, asp = if(isLim) 1, ylim = if(isLim) c(0,1.1)) {
if(isLim <- a == 0 || b == 0 || a == Inf || b == Inf) {
eps <- 1e-10
x <- c(0, eps, (1:7)/16, 1/2+c(-eps,0,eps), (9:15)/16, 1-eps, 1)
} else {
x <- seq(0, 1, length = 1025)
}
fx <- cbind(dbeta(x, a,b), pbeta(x, a,b), qbeta(x, a,b))
f <- fx; f[fx == Inf] <- 1e100
matplot(x, f, ylab="", type="l", ylim=ylim, asp=asp,
main = sprintf("[dpq]beta(x, a=%g, b=%g)", a,b))
abline(0,1, col="gray", lty=3)
abline(h = 0:1, col="gray", lty=3)
legend("top", paste0(c("d","p","q"), "beta(x, a,b)"),
col=1:3, lty=1:3, bty = "n")
invisible(cbind(x, fx))
}
pl.beta(3,1)
pl.beta(2, 4)
pl.beta(3, 7)
pl.beta(3, 7, asp=1)
pl.beta(0, 0) ## point masses at {0, 1}
pl.beta(0, 2) ## point mass at 0 ; the same as
pl.beta(1, Inf)
pl.beta(Inf, 2) ## point mass at 1 ; the same as
pl.beta(3, 0)
pl.beta(Inf, Inf)# point mass at 1/2
# }
```

*Documentation reproduced from package stats, version 3.6.2, License: Part of R 3.6.2*