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