Learn R Programming

rotations (version 1.5)

Fisher: 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.
n
number of observations. If length(n)>1, the length is taken to be the number required.
kappa
concentration parameter.
nu
circular variance, can be used in place of kappa.
Haar
logical; if TRUE density is evaluated with respect to the Haar measure.
lower.tail
logical; if TRUE (default), probabilities are $P(X \le x)$ otherwise, $P(X > x)$.

Value

dfisher
gives the density
pfisher
gives the distribution function
rfisher
generates random deviates

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 $Ip()$ denotes the Bessel function of order $p$ defined as $Ip(\kappa)$. 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.

See Also

Angular-distributions for other distributions in the rotations package.

Examples

Run this code
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)

Run the code above in your browser using DataLab