Variational Distance

The variational (total variation) distance [CT06] between two distributions on the same alphabet is

\[\delta(p, q) = \tfrac{1}{2} \sum_x \lvert p(x) - q(x) \rvert\]

Related quantities in the same module are the Hellinger distance, the Bhattacharyya coefficient, and the Chernoff information.

In [1]: from dit.divergences import variational_distance, hellinger_distance, bhattacharyya_coefficient

In [2]: p = dit.Distribution(['0', '1'], [3/4, 1/4])

In [3]: q = dit.Distribution(['0', '1'], [1/2, 1/2])

In [4]: variational_distance(p, q)
Out[4]: 0.25

In [5]: hellinger_distance(p, q)
Out[5]: 0.18459191128251476

API

variational_distance(dist1, dist2)[source]

Compute the variational distance.

Parameters:
  • dist1 (Distribution) – The first distribution.

  • dist2 (Distribution) – The second distribution.

Returns:

vd – The variational distance.

Return type:

float

hellinger_distance(dist1, dist2)[source]

Compute the Hellinger distance.

Parameters:
  • dist1 (Distribution) – The first distribution.

  • dist2 (Distribution) – The second distribution.

Returns:

hd – The Hellinger distance.

Return type:

float

bhattacharyya_coefficient(dist1, dist2)[source]

Compute the Bhattacharyya coefficient.

Parameters:
  • dist1 (Distribution) – The first distribution.

  • dist2 (Distribution) – The second distribution.

Returns:

bc – The Bhattacharyya coefficient.

Return type:

float

chernoff_information(dist1, dist2)[source]

Compute the Chernoff information.

Parameters:
  • dist1 (Distribution) – The first distribution.

  • dist2 (Distribution) – The second distribution.

Returns:

ci – The Chernoff information.

Return type:

float