rDirichlet {IMIFA} | R Documentation |
Simulate Mixing Proportions from a Dirichlet Distribution
Description
Generates samples from the Dirichlet distribution with parameter alpha
efficiently by simulating Gamma(alpha
, 1) random variables and normalising them.
Usage
rDirichlet(G,
alpha,
nn = 0L)
Arguments
G |
The number of clusters for which weights need to be sampled. |
alpha |
The Dirichlet hyperparameter, either of length 1 or |
nn |
A vector giving the number of observations in each of G clusters so that Dirichlet posteriors rather than priors can be sampled from. This defaults to 0, i.e. simulation from the prior. Must be non-negative. Be warned that this will be recycled if necessary. |
Value
A Dirichlet vector of G
weights which sum to 1.
Note
Though the function is available for standalone use, note that few checks take place, in order to speed up repeated calls to the function inside mcmc_IMIFA
. In particular, alpha
and nn
may be invisibly recycled.
While small values of alpha
have the effect of increasingly concentrating the mass onto fewer components, note that this function may return NaN
for excessively small values of alpha
, when nn=0
; see the details of rgamma
for small shape
values.
References
Devroye, L. (1986) Non-Uniform Random Variate Generation, New York, NY, USA: Springer-Verlag, p. 594.
Examples
(prior <- rDirichlet(G=5, alpha=1))
(posterior <- rDirichlet(G=5, alpha=1, nn=c(20, 41, 32, 8, 12)))
(asymmetric <- rDirichlet(G=5, alpha=c(3,4,5,1,2), nn=c(20, 41, 32, 8, 12)))