scipy.stats.

energy_distance#

scipy.stats.energy_distance(u_values, v_values, u_weights=None, v_weights=None)[источник]#

Вычислите энергетическое расстояние между двумя одномерными распределениями.

Добавлено в версии 1.0.0.

Параметры:
u_values, v_valuesarray_like

Значения, наблюдаемые в (эмпирическом) распределении.

u_weights, v_weightsarray_like, необязательный

Вес для каждого значения. Если не указано, каждому значению присваивается одинаковый вес. u_weights (соответственно. v_weights) должен иметь ту же длину, что и u_values (соответственно. v_values). Если сумма весов отличается от 1, они всё равно должны быть положительными и конечными, чтобы веса можно было нормализовать к сумме 1.

Возвращает:
расстояниеfloat

Вычисленное расстояние между распределениями.

Примечания

Энергетическое расстояние между двумя распределениями \(u\) и \(v\), чьи соответствующие CDF равны \(U\) и \(V\), равно:

\[D(u, v) = \left( 2\mathbb E|X - Y| - \mathbb E|X - X'| - \mathbb E|Y - Y'| \right)^{1/2}\]

где \(X\) и \(X'\) (соответственно. \(Y\) и \(Y'\)) являются независимыми случайными величинами, распределение вероятностей которых \(u\) (соответственно. \(v\)).

Иногда квадрат этой величины называют "энергетическим расстоянием" (например, в [2], [4]), но, как отмечено в [1] и [3], только приведённое выше определение удовлетворяет аксиомам функции расстояния (метрики).

Как показано в [2], для одномерных вещественных переменных, энергетическое расстояние связано с не свободным от распределения вариантом расстояния Крамера-фон Мизеса:

\[D(u, v) = \sqrt{2} l_2(u, v) = \left( 2 \int_{-\infty}^{+\infty} (U-V)^2 \right)^{1/2}\]

Обратите внимание, что общий критерий Крамера-фон Мизеса использует свободную от распределения версию расстояния. См. [2] (раздел 2), для более подробной информации о обеих версиях расстояния.

Входные распределения могут быть эмпирическими, следовательно, полученными из выборок, чьи значения фактически являются входными данными функции, или они могут рассматриваться как обобщённые функции, в этом случае они являются взвешенными суммами дельта-функций Дирака, расположенных в указанных значениях.

Ссылки

[1]

Rizzo, Szekely «Energy distance.» Wiley Interdisciplinary Reviews: Computational Statistics, 8(1):27-38 (2015).

[2] (1,2,3)

Szekely «E-статистика: Энергия статистических выборок». Университет Боулинг Грин, факультет математики и статистики, Технический отчёт 02-16 (2002).

[3]

«Энергетическое расстояние», https://en.wikipedia.org/wiki/Energy_distance

[4]

Bellemare, Danihelka, Dabney, Mohamed, Lakshminarayanan, Hoyer, Munos "The Cramer Distance as a Solution to Biased Wasserstein Gradients" (2017). arXiv:1705.10743.

Примеры

>>> from scipy.stats import energy_distance
>>> energy_distance([0], [2])
2.0000000000000004
>>> energy_distance([0, 8], [0, 8], [3, 1], [2, 2])
1.0000000000000002
>>> energy_distance([0.7, 7.4, 2.4, 6.8], [1.4, 8. ],
...                 [2.1, 4.2, 7.4, 8. ], [7.6, 8.8])
0.88003340976158217