Title: | Fast Generation of von Mises-Fisher Distributed Pseudo-Random Vectors |
---|---|
Description: | Generates pseudo-random vectors that follow an arbitrary von Mises-Fisher distribution on a sphere. This method is fast and efficient when generating a large number of pseudo-random vectors. Functions to generate random variates and compute density for the distribution of an inner product between von Mises-Fisher random vector and its mean direction are also provided. Details are in Kang and Oh (2024) <doi:10.1007/s11222-024-10419-3>. |
Authors: | Seungwoo Kang [aut, cre] |
Maintainer: | Seungwoo Kang <[email protected]> |
License: | GPL (>= 3) |
Version: | 0.1.0 |
Built: | 2025-02-21 02:58:49 UTC |
Source: | https://github.com/seungwoo-stat/rvmf |
rvMF()
generates von Mises–Fisher distributed pseudo-random vectors,
without resorting to the rejection-based sampling method proposed by Wood
(1994). See Kang and Oh (2024) for details. This function partly uses the
code from the function Rfast::rvmf()
and the article Marsaglia et al.
(2004).
rvMF(n, mu, k)
rvMF(n, mu, k)
n |
number of pseudo-random vectors to generate. |
mu |
mean direction. |
k |
concentration parameter. |
matrix where each row independently follows the specified von
Mises-Fisher distribution. The number of columns equals the length of mu
,
and the number of rows equals n
for rvMF
.
S. Kang and H.-S. Oh. Novel sampling method for the von Mises–Fisher distribution. Statistics and Computing, 34(3):106, 2024.
K. V. Mardia and P. E. Jupp. Directional Statistics, volume 494. John Wiley & Sons, Chichester, 1999.
G. Marsaglia, W. W. Tsang, and J. Wang. Fast generation of discrete random variables. Journal of Statistical Software, 11(3):1–11, 2004.
M. Papadakis, M. Tsagris, M. Dimitriadis, S. Fafalios, I. Tsamardinos, M. Fasiolo, G. Borboudakis, J. Burkardt, C. Zou, K. Lakiotaki, and C. Chatzipantsiou. Rfast: A Collection of Efficient and Extremely Fast R Functions, 2022. https://CRAN.R-project.org/package=Rfast. R package version 2.0.6.
A. T. Wood. Simulation of the von Mises Fisher distribution. Communications in Statistics– Simulation and Computation, 23(1):157–164, 1994.
rvMFangle()
, dvMFangle()
, Rfast::rvmf()
.
rvMF(10, c(0,0,1), 10) rvMF(10, c(1,1)/sqrt(2), 0)
rvMF(10, c(0,0,1), 10) rvMF(10, c(1,1)/sqrt(2), 0)
These functions provide information about the distribution of an inner
product between von Mises–Fisher random vector and its mean direction.
Specifically, if follows a von Mises–Fisher distribution with mean
direction
, the inner product
will be a random variable
following some distribution. See page 170 of Mardia and Jupp (1999).
rvMFangle()
generates random variates using the algorithm proposed in Kang
and Oh (2024), and dvMFangle
gives the density from this distribution. This
function partly uses the code from the article Marsaglia et al. (2004).
rvMFangle(n, p, kappa) dvMFangle(r, p, kappa)
rvMFangle(n, p, kappa) dvMFangle(r, p, kappa)
n |
number of random vectors to generate. |
p |
dimension of the sphere. i.e.,
Sp-1, |
kappa |
concentration parameter. |
r |
vector of quantiles. -1 ≤ |
rvMFangle()
returns a vector whose components independently follow the
aforementioned distribution. The length of the result is determined by n
for rvMFangle()
.
dvMFangle()
returns a vector of density function value. The length of the
result is determined by the length of r
for dvMFangle()
.
S. Kang and H.-S. Oh. Novel sampling method for the von Mises–Fisher distribution. Statistics and Computing, 34(3):106, 2024.
K. V. Mardia and P. E. Jupp. Directional Statistics, volume 494. John Wiley & Sons, Chichester, 1999.
G. Marsaglia, W. W. Tsang, and J. Wang. Fast generation of discrete random variables. Journal of Statistical Software, 11(3):1–11, 2004.
rvMF()
wrapper of rvMFangle()
.
rvMFangle(10, 2, 10) rvMFangle(10, 3, 0.1) dvMFangle(seq(-1,1,by=0.01), 2, 10) dvMFangle(seq(0,1,by=0.01), 3, 0.1)
rvMFangle(10, 2, 10) rvMFangle(10, 3, 0.1) dvMFangle(seq(-1,1,by=0.01), 2, 10) dvMFangle(seq(0,1,by=0.01), 3, 0.1)