假设有两个长度相同的1D 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))
从您的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
请注意,该函数同时返回statistics和p_value,因此需要在调用该函数后直接访问.statistics。