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。

退货
distance浮动

计算的分布之间的距离。

注意事项

两个分布之间的能量距离 \(u\)\(v\) ,其各自的CDF为 \(U\)\(V\) ,等于:

\[D(u,v)=\Left(2\mathbb E|X-Y|-\mathbb E|X-X‘|- \mathbb E|Y-Y‘|\右)^{1/2}\]

哪里 \(X\)\(X'\) (请回复。 \(Y\)\(Y'\) )是独立的随机变量,其概率分布为 \(u\) (请回复。 \(v\) )。

如中所示 [2], 对于一维实值变量,能量距离与Cramér-von Mises距离的非分布自由版本相关联:

\[d(u,v)=\sqrt{2}l_2(u,v)=\Left(2\int_{-\infty}^{+\infty}(U-V)^2 \右)^{1/2}\]

请注意,常用的Cramér-von Mises准则使用的是距离的无分布版本。看见 [2] (第2节),了解有关两个版本距离的更多详细信息。

输入分布可以是经验的,因此来自其值是函数的有效输入的样本,或者它们可以被视为广义函数,在这种情况下,它们是位于指定值的狄拉克增量函数的加权和。

参考文献

1

“能量距离”,https://en.wikipedia.org/wiki/Energy_distance

2(1,2)

“电子统计:统计样本的能量”。保龄球场州立大学数学与统计系,技术报告02-16(2002)。

3

塞凯利·里佐:“能量距离”。“威利跨学科评论:计算统计学”,第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