计算两个样本的累积分布



我正在执行ks测试(2个样本(的scipy代码,该代码计算任意两个给定样本的CDF之间的最大距离。用于计算累积分布函数CCD_ 1的代码。

我不理解计算cdf的逻辑。首先,对data1data2进行排序,然后使用np.searchsorted,我们试图找到data_alldata1data2中的位置。CCD_ 8只是排序后的CCD_ 9和CCD_。

如果(CDF)1的最小值低于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)

的确,data_all通常不会排序,但这对计算来说并不重要。

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

然后代码执行

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

取这些差异的最大值。当你找到数字的最大值时,你看它们的顺序并不重要。

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

最新更新