Betabinom | R Documentation |
Density, distribution function, and random generation for the beta-binomial distribution and the inflated beta-binomial distribution.
dbetabinom(x, size, prob, rho = 0, log = FALSE)
pbetabinom(q, size, prob, rho = 0, log.p = FALSE)
rbetabinom(n, size, prob, rho = 0)
dbetabinom.ab(x, size, shape1, shape2, log = FALSE,
Inf.shape = exp(20), limit.prob = 0.5)
pbetabinom.ab(q, size, shape1, shape2, limit.prob = 0.5,
log.p = FALSE)
rbetabinom.ab(n, size, shape1, shape2, limit.prob = 0.5,
.dontuse.prob = NULL)
dzoibetabinom(x, size, prob, rho = 0, pstr0 = 0, pstrsize = 0,
log = FALSE)
pzoibetabinom(q, size, prob, rho, pstr0 = 0, pstrsize = 0,
lower.tail = TRUE, log.p = FALSE)
rzoibetabinom(n, size, prob, rho = 0, pstr0 = 0, pstrsize = 0)
dzoibetabinom.ab(x, size, shape1, shape2, pstr0 = 0, pstrsize = 0,
log = FALSE)
pzoibetabinom.ab(q, size, shape1, shape2, pstr0 = 0, pstrsize = 0,
lower.tail = TRUE, log.p = FALSE)
rzoibetabinom.ab(n, size, shape1, shape2, pstr0 = 0, pstrsize = 0)
x , q |
vector of quantiles. |
size |
number of trials. |
n |
number of observations.
Same as |
prob |
the probability of success |
rho |
the correlation parameter |
shape1 , shape2 |
the two (positive) shape parameters of the standard
beta distribution. They are called |
log , log.p , lower.tail |
Same meaning as |
Inf.shape |
Numeric. A large value such that,
if |
limit.prob |
Numerical vector; recycled if necessary.
If either shape parameters are |
.dontuse.prob |
An argument that should be ignored and not used. |
pstr0 |
Probability of a structual zero
(i.e., ignoring the beta-binomial distribution).
The default value of |
pstrsize |
Probability of a structual maximum value |
The beta-binomial distribution is a binomial distribution whose
probability of success is not a constant but it is generated
from a beta distribution with parameters shape1
and
shape2
. Note that the mean of this beta distribution
is mu = shape1/(shape1+shape2)
, which therefore is the
mean or the probability of success.
See betabinomial
and betabinomialff
,
the VGAM family functions for
estimating the parameters, for the formula of the probability
density function and other details.
For the inflated beta-binomial distribution, the probability mass function is
P(Y = y) =
(1 - pstr0 - pstrsize) \times BB(y) + pstr0 \times I[y = 0] +
pstrsize \times I[y = size]
where BB(y)
is the probability mass function
of the beta-binomial distribution with the same shape parameters
(pbetabinom.ab
),
pstr0
is the inflated probability at 0
and pstrsize
is the inflated probability at 1.
The default values of pstr0
and pstrsize
mean that these functions behave like the ordinary
Betabinom
when only the essential arguments
are inputted.
dbetabinom
and dbetabinom.ab
give the density,
pbetabinom
and pbetabinom.ab
give the
distribution function, and
rbetabinom
and rbetabinom.ab
generate random
deviates.
dzoibetabinom
and dzoibetabinom.ab
give the
inflated density,
pzoibetabinom
and pzoibetabinom.ab
give the
inflated distribution function, and
rzoibetabinom
and rzoibetabinom.ab
generate
random inflated deviates.
Setting rho = 1
is not recommended,
however the code may be
modified in the future to handle this special case.
pzoibetabinom
, pzoibetabinom.ab
,
pbetabinom
and pbetabinom.ab
can be particularly
slow.
The functions here ending in .ab
are called from those
functions which don't.
The simple transformations
\mu=\alpha / (\alpha + \beta)
and
\rho=1/(1 + \alpha + \beta)
are
used, where \alpha
and \beta
are the
two shape parameters.
T. W. Yee and Xiangjie Xue
Extbetabinom
,
betabinomial
,
betabinomialff
,
Zoabeta
,
Beta
.
set.seed(1); rbetabinom(10, 100, prob = 0.5)
set.seed(1); rbinom(10, 100, prob = 0.5) # The same as rho = 0
## Not run: N <- 9; xx <- 0:N; s1 <- 2; s2 <- 3
dy <- dbetabinom.ab(xx, size = N, shape1 = s1, shape2 = s2)
barplot(rbind(dy, dbinom(xx, size = N, prob = s1 / (s1+s2))),
beside = TRUE, col = c("blue","green"), las = 1,
main = paste("Beta-binomial (size=",N,", shape1=", s1,
", shape2=", s2, ") (blue) vs\n",
" Binomial(size=", N, ", prob=", s1/(s1+s2), ") (green)",
sep = ""),
names.arg = as.character(xx), cex.main = 0.8)
sum(dy * xx) # Check expected values are equal
sum(dbinom(xx, size = N, prob = s1 / (s1+s2)) * xx)
# Should be all 0:
cumsum(dy) - pbetabinom.ab(xx, N, shape1 = s1, shape2 = s2)
y <- rbetabinom.ab(n = 1e4, size = N, shape1 = s1, shape2 = s2)
ty <- table(y)
barplot(rbind(dy, ty / sum(ty)),
beside = TRUE, col = c("blue", "orange"), las = 1,
main = paste("Beta-binomial (size=", N, ", shape1=", s1,
", shape2=", s2, ") (blue) vs\n",
" Random generated beta-binomial(size=", N, ", prob=",
s1/(s1+s2), ") (orange)", sep = ""), cex.main = 0.8,
names.arg = as.character(xx))
N <- 1e5; size <- 20; pstr0 <- 0.2; pstrsize <- 0.2
kk <- rzoibetabinom.ab(N, size, s1, s2, pstr0, pstrsize)
hist(kk, probability = TRUE, border = "blue", ylim = c(0, 0.25),
main = "Blue/green = inflated; orange = ordinary beta-binomial",
breaks = -0.5 : (size + 0.5))
sum(kk == 0) / N # Proportion of 0
sum(kk == size) / N # Proportion of size
lines(0 : size,
dbetabinom.ab(0 : size, size, s1, s2), col = "orange")
lines(0 : size, col = "green", type = "b",
dzoibetabinom.ab(0 : size, size, s1, s2, pstr0, pstrsize))
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.