0

我正在查看ks 测试(2 个样本)的 scipy 代码,它计算任何两个给定样本的 CDF 之间的最大距离。计算累积分布函数的代码(CDF)

我无法理解计算 cdf 的逻辑。首先,data1data2被排序,然后使用np.searchsorted我们试图找到 和 中的data_all位置。只不过是 sorted和的串联。data1data2data_alldata1data2

如果 的最小值data2低于data1. cdf这不违反不应随价值减少的假设吗

data_all = np.concatenate([data1,data2])
cdf1 = np.searchsorted(data1,data_all,side='right')/(1.0*n1)
cdf2 = (np.searchsorted(data2,data_all,side='right'))/(1.0*n2)
4

1 回答 1

0

确实data_all一般没有排序,但这对计算无关紧要。

  • 该数组cdf1保存第一个样本的 CDF 值,在每个点处计算data_all
  • 该数组cdf2保存第二个样本的 CDF 值,在每个点处计算data_all

然后代码执行

np.max(np.absolute(cdf1 - cdf2))

取这些差异的最大值。当您找到最大的数字时,您查看它们的顺序无关紧要。

因此,这两个数组的顺序无关紧要,只要一致即可:cdf1[42]是 CDF1 在某个点cdf2[42]的值,并且是 CDF2在同一点的值。

于 2018-08-03T00:51:44.390 回答