Fisher {rotations} | R Documentation |
The matrix-Fisher distribution
Description
Density, distribution function and random generation for the matrix-Fisher distribution with concentration kappa
\kappa
.
Usage
dfisher(r, kappa = 1, nu = NULL, Haar = TRUE)
pfisher(q, kappa = 1, nu = NULL, lower.tail = TRUE)
rfisher(n, kappa = 1, nu = NULL)
Arguments
r , q |
vector of quantiles. |
kappa |
concentration parameter. |
nu |
circular variance, can be used in place of |
Haar |
logical; if TRUE density is evaluated with respect to the Haar measure. |
lower.tail |
logical; if TRUE (default), probabilities are |
n |
number of observations. If |
Details
The matrix-Fisher distribution with concentration \kappa
has density
C_\mathrm{{F}}(r|\kappa)=\frac{1}{2\pi[\mathrm{I_0}(2\kappa)-\mathrm{I_1}(2\kappa)]}e^{2\kappa\cos(r)}[1-\cos(r)]
with respect to Lebesgue measure where \mathrm{I}_p(\cdot)
denotes the Bessel function of order p
defined as
\mathrm{I}_p(\kappa)=\frac{1}{2\pi}\int_{-\pi}^{\pi}\cos(pr)e^{\kappa\cos r}dr
. If kappa>354
then random deviates
are generated from the Cayley
distribution because they agree closely for large kappa
and generation is
more stable from the Cayley distribution.
For large \kappa
, the Bessel functon gives errors so a large \kappa
approximation to the matrix-Fisher
distribution is used instead, which is the Maxwell-Boltzmann density.
Value
dfisher |
gives the density |
pfisher |
gives the distribution function |
rfisher |
generates random deviates |
See Also
Angular-distributions for other distributions in the rotations package.
Examples
r <- seq(-pi, pi, length = 500)
#Visualize the matrix Fisher density fucntion with respect to the Haar measure
plot(r, dfisher(r, kappa = 10), type = "l", ylab = "f(r)")
#Visualize the matrix Fisher density fucntion with respect to the Lebesgue measure
plot(r, dfisher(r, kappa = 10, Haar = FALSE), type = "l", ylab = "f(r)")
#Plot the matrix Fisher CDF
plot(r,pfisher(r,kappa = 10), type = "l", ylab = "F(r)")
#Generate random observations from matrix Fisher distribution
rs <- rfisher(20, kappa = 1)
hist(rs, breaks = 10)