pSibuya
evaluates the distribution function.
dSibuya
evaluates the probability mass function.
rSibuya
generates random variates from
$\mathrm{Sib}(\alpha)$ with
the algorithm described in Hofert (2011), Proposition 3.2.
dsumSibuya
gives the probability mass function of the
$n$-fold convolution of Sibuya variables, that is, the sum of $n$
independent Sibuya random variables,
$S = \sum_{i=1}^n X_i$, where
$X_i \sim \mathrm{Sib}(\alpha)$.
This probability mass function can be shown (see Hofert (2010, pp. 99)) to be $$\sum_{j=1}^n{n\choose j}{j\alpha\choose k} (-1)^{k-j},\ k\in{n,n+1,\dots}.$$
rSibuya(n, alpha)
dSibuya(x, alpha, log=FALSE)
pSibuya(x, alpha, lower.tail=TRUE, log.p=FALSE)dsumSibuya(x, n, alpha,
method=c("log", "direct", "diff", "exp.log",
"Rmpfr", "Rmpfr0", "RmpfrM", "Rmpfr0M"),
mpfr = list(minPrec = 21, fac = 1.25, verbose=TRUE),
log=FALSE)
rSibuya
: sample size, that is, length of the resulting
vector of random variates.
for dsumSibuya
: the number $n$ of summands.integer
values (logical
; if TRUE, probabilities p are
given as log(p).logical
; if TRUE (the default), probabilities
are $P(X \le x)$, otherwise, $P(X > x)$.method = "Rmpfr"
or "RmpfrM"
only: a
list of
minPrec
: minimal (estimated) precision in bits,
fac
: factor with which current precision is multiplied if
it is not sufficient.
For documentation and didactical purposes, rSibuyaR
is a pure-Rimplementation of rSibuya
, of course slower than rSibuya
as the latter is implemented in C.
Note that the sum to evaluate for dsumSibuya
is numerically
highly challenging, even already for small
$\alpha$ values (for example, $n \ge 10$),
and therefore should be used with care. It may require high-precision
arithmetic which can be accessed with method="Rmpfr"
(and the
Hofert, M. (2011). Efficiently sampling nested Archimedean copulas. Computational Statistics & Data Analysis 55, 57--70.
rFJoe
and rF01Joe
(where rSibuya
is
applied).## Sample n random variates from a Sibuya(alpha) distribution and plot a
## histogram
n <- 1000
alpha <- .4
X <- rSibuya(n, alpha)
hist(log(X), prob=TRUE); lines(density(log(X)), col=2, lwd=2)
Run the code above in your browser using DataLab