1

假设有两个长度相同的一维 Numpy 数组样本 X1 和 X2。将两个样本分别转换为累积密度分布后,如何计算两个累积样本分布之间的最大距离?在下面的代码之后,我该怎么办?

import numpy as np
def function(X1, X2):
    x1 = np.sort(X1)
    y1 = np.arange(1, len(x1)+1) / float(len(x1))
    x2 = np.sort(X2)
    y2 = np.arange(1, len(x2)+1) / float(len(x2))
4

1 回答 1

0

从您的 kolomogorov-smirnov 标签中,我了解到您正在寻找的功能来自 scipy,请参阅:https ://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kstest.html 。

它的一种输入模式是两个样本向量。这使得它比您开始实施的更容易。直接用它作为这些例子:

from scipy.stats import kstest
import numpy as np
samps1 = np.random.normal(size=100)
samps2 = np.random.normal(size=100)
samps3 = np.random.normal(loc=1, size=100)
kstest(samps1, samps2)
>>> KstestResult(statistic=0.15, pvalue=0.21117008625127576)
kstest(samps2, samps1)
>>> KstestResult(statistic=0.15, pvalue=0.21117008625127576)
kstest(samps1, samps3)
>>> KstestResult(statistic=0.29, pvalue=0.0004117410017938115)
kstest(samps2, samps1).statistic
>>> 0.15

请注意,该函数同时返回统计信息和 p_value,因此您需要在调用该函数后直接访问 .statistic。

于 2020-11-15T17:16:46.567 回答