Von Mises Distribution

Von Mises distribution over the circle.

Class Hierarchy

Inheritance diagram of goal.models.base.von_mises

Von Mises

class VonMises[source]

Bases: Differentiable

The von Mises distribution is a continuous probability distribution on the circle, analogous to the normal distribution on the line. The probability density function is:

\[p(x; \mu, \kappa) = \frac{1}{2\pi I_0(\kappa)}\exp(\kappa \cos(x - \mu))\]

where:

  • \(\mu\) is the mean direction

  • \(\kappa\) is the concentration parameter

  • \(I_0(\kappa)\) is the modified Bessel function of the first kind of order 0

As an exponential family:

  • Sufficient statistic: \(\mathbf{s}(x) = (\cos(x), \sin(x))\)

  • Base measure: \(\mu(x) = -\log(2\pi)\)

  • Natural parameters: \(\theta = \kappa(\cos(\mu), \sin(\mu))\)

split_mean_concentration(p: Array) tuple[Array, Array][source]

Split the natural parameters into mean and concentration parameters.

Parameters:

p – Natural parameters array

Returns:

Tuple of (mean_angle, concentration)

join_mean_concentration(mu0: float, kappa0: float) Array[source]

Join the mean and concentration parameters into natural parameters.

Parameters:
  • mu0 – Mean angle

  • kappa0 – Concentration parameter

Returns:

Natural parameters array

property dim: int

The dimension of the manifold.

property data_dim: int

Dimension of the data space.

sufficient_statistic(x: Array) Array[source]

Compute sufficient statistics: (cos(x), sin(x)).

Parameters:

x – Data point

Returns:

Sufficient statistics array

log_base_measure(x: Array) Array[source]

Log base measure: -log(2pi).

Parameters:

x – Data point

Returns:

Log base measure (scalar)

log_partition_function(params: Array) Array[source]

Compute log partition function.

Parameters:

params – Natural parameters

Returns:

Log partition function value (scalar)

sample(key: Array, params: Array, n: int = 1) Array[source]

Generate n samples from the Von Mises distribution.

Uses batched rejection sampling with wrapped Cauchy proposal, adapted from NumPyro’s implementation (Devroye, 1986).

For very small concentration (kappa < 0.01), samples uniformly on the circle since the distribution is nearly uniform.

Parameters:
  • key – JAX random key

  • params – Natural parameters

  • n – Number of samples

Returns:

Array of n samples with shape (n, 1)