scipy.stats.
energy_distance#
- scipy.stats.energy_distance(u_values, v_values, u_weights=None, v_weights=None)[source]#
计算两个一维分布之间的能量距离。
在版本 1.0.0 中添加。
- 参数:
- u_values, v_values类数组
(经验性) 分布中观测到的值。
- u_weights, v_weights类数组,可选
每个值的权重。如果未指定,则为每个值指定相同权重。 u_weights(相应地为 v_weights)的长度必须与 u_values(相应地为 v_values)相同。如果权重和与 1 不同,则它仍必须为正且有限,以便可以将权重归一化以使其和为 1。
- 返回值:
- distancefloat
计算出的分布之间距离。
说明
两个分布 \(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 节)。
输入分布可以是经验性的,因此来自其值是函数有效输入的样本,或者可以视作广义函数,在这种情况下,它们是位于指定值处的狄拉克 delta 函数的加权和。
参考
[1]Rizzo、Szekely “能量距离”。Wiley 跨学科评论:计算统计学,8(1):27-38 (2015)。
[4]Bellemare、Danihelka、Dabney、Mohamed、Lakshminarayanan、Hoyer、Munos “克拉默距离作为偏沃特斯坦梯度的解决方案”(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