srbeta_custom {stors} | R Documentation |
Sampling from Beta Distribution
Description
The srbeta_custom()
function generates random samples from a Beta distribution using the STORS algorithm.
It employs an optimized proposal distribution around the mode and Adaptive Rejection Sampling (ARS) for the tails.
Usage
srbeta_custom(n = 1, x = NULL)
Arguments
n |
Integer, length 1. Number of samples to draw. |
x |
(optional) Numeric vector of length |
Details
The Beta Distribution
The Beta distribution has the probability density function (PDF):
f(x | \alpha, \beta) = \frac{\Gamma(\alpha + \beta)}{\Gamma(\alpha)\Gamma(\beta)} x^{\alpha - 1} (1 - x)^{\beta - 1}, \quad 0 \leq x \leq 1,
where:
\alpha
is the first shape parameter (
\alpha > 0
).\beta
is the second shape parameter (
\beta > 0
).
The Beta distribution is widely used in Bayesian statistics and in modelling probabilities and proportions.
Value
A numeric vector of length n
containing random samples from the Beta distribution.
The shape1
and shape2
parameters are specified during the optimization process using srbeta_optimize()
.
NOTE: When the x
parameter is specified, it is updated in-place with the simulation for performance reasons.
TODO : This density instead of this function.
This function samples from a proposal constructed using srbeta_optimize
, employing the STORS algorithm.
By default, srbeta_custom()
samples from the standard Beta distribution with shape1 = 1
and shape2 = 1
.
The proposal distribution is pre-optimized at package load time using srbeta_optimize()
with
steps = 4091
, creating a scalable proposal centred around the mode.
Note
This function is not scalable. Therefore, only the srbeta_custom()
version is available, which requires the proposal to be pre-optimized using srbeta_optimize()
before calling this function.
See Also
srbeta_optimize
to optimize the custom proposal.
Examples
# Generate 10 samples from Beta Distribution
samples <- srbeta_custom(10)
print(samples)
# Generate 10 samples using a pre-allocated vector
x <- numeric(10)
srbeta_custom(10, x = x)
print(x)