| 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)