Professional Documents
Culture Documents
In probability theory and directional statistics, the von Mises distribution (also known as the
circular normal distribution or Tikhonov distribution) is a continuous probability distribution on the
circle. It is a close approximation to the wrapped normal distribution, which is the circular analogue of the
normal distribution. A freely diffusing angle on a circle is a wrapped normally distributed random
variable with an unwrapped variance that grows linearly in time. On the other hand, the von Mises
distribution is the stationary distribution of a drift and diffusion process on the circle in a harmonic
potential, i.e. with a preferred orientation.[1] The von Mises distribution is the maximum entropy
distribution for a given expectation value of . The von Mises distribution is a special case of the
von Mises–Fisher distribution on the N-dimensional sphere.
Definition
The von Mises probability density function for the angle x is given by[2]:
The probability density can be expressed as a series of Bessel functions (see Abramowitz and Stegun
§9.6.34)
where Ij(x) is the modified Bessel function of order j. The cumulative distribution function is not analytic
and is best found by integrating the above series. The indefinite integral of the probability density is:
The cumulative distribution function will be a function of the lower limit of integration x0:
Moments
The moments of the von Mises distribution are usually calculated as the moments of z = eix rather than the
angle x itself. These moments are referred to as "circular moments". The variance calculated from these
moments is referred to as the "circular variance". The one exception to this is that the "mean" usually
refers to the argument of the circular mean, rather than the circular mean itself.
The nth raw moment of z is:
where the integral is over any interval of length 2π. In calculating the above integral, we use the fact
that zn = cos(nx) + i sin(nx) and the Bessel function identity (See Abramowitz and Stegun §9.6.19):
and the "mean" value of x is then taken to be the argument μ. This is the "average" direction of the
angular random variables. The variance of z, or the circular variance of x is:
Limiting behavior
In the limit of large κ the distribution becomes a normal distribution
where σ2 = 1/κ. In the limit of small κ it becomes a uniform distribution:
where the interval for the uniform distribution U(x) is the chosen interval of length 2π.
Estimation of parameters
A series of N measurements drawn from a von Mises distribution may be used to estimate
certain parameters of the distribution. (Borradaile, 2003) The average of the series is defined as
In other words, is an unbiased estimator of the first moment. If we assume that the mean lies
will yield the maximum likelihood estimate of and both will be equal in the limit of large N.
The distribution of the sample mean for the von Mises distribution is given by:[3]
where N is the number of measurements and consists of intervals of in the variables, subject to the
constraint that and are constant, where is the mean resultant:
Note that product term in parentheses is just the distribution of the mean for a circular uniform
distribution.[3]
Entropy
The information entropy of the Von Mises distribution is defined as[2]:
where is any interval of length . The logarithm of the density of the Von Mises distribution is
straightforward:
The characteristic function representation for the Von Mises distribution is:
where . Substituting these expressions into the entropy integral, exchanging the
order of integration and summation, and using the orthogonality of the cosines, the entropy may be
written:
For , the von Mises distribution becomes the circular uniform distribution and the entropy attains
! Local variables
INTEGER :: j, n
INTEGER, SAVE :: nk
REAL, PARAMETER :: pi = 3.14159265
REAL, SAVE :: p(20), theta(0:20)
REAL :: sump, r, th, lambda, rlast
REAL :: dk
print *,' '
10 write(*,"(' k = ')",advance='no'); read *, k
! write(*,"(' first = ')",advance='no'); read *, first
zero=0.0
one=1.0
half=0.5
!IF (first) THEN ! Initialization, if necessary
IF (k < zero) THEN
WRITE(*, *) '** Error: argument k for random_von_Mises = ', k
goto 10
END IF
nk = k + k + one
IF (nk > 20) THEN
WRITE(*, *) '** Error: argument k for random_von_Mises = ', k
goto 10
END IF
dk = k
theta(0) = zero
IF (k > half) THEN
sump = zero
DO j = 1, nk
IF (j < nk) THEN
theta(j) = ACOS(one - j/k)
ELSE
theta(nk) = pi
END IF
CALL RANDOM_NUMBER(r)
DO j = 1, nk
r = r - p(j)
IF (r < zero) EXIT
END DO
r = -r/p(j)
DO
th = theta(j-1) + r*(theta(j) - theta(j-1))
lambda = k - j + one - k*COS(th)
n=1
rlast = lambda
DO
CALL RANDOM_NUMBER(r)
IF (r > rlast) EXIT
n=n+1
rlast = r
END DO
REAL :: dk
REAL :: a, b
REAL :: result
! Local variables
xmid = (a + b)/2.
range = (b - a)/2.
result = 0.
DO i = 1, 3
x1 = xmid + x(i)*range
x2 = xmid - x(i)*range
result = result + w(i)*(EXP(dk*COS(x1)) + EXP(dk*COS(x2)))
END DO