我正在执行ks测试(2个样本(的scipy代码,该代码计算任意两个给定样本的CDF之间的最大距离。用于计算累积分布函数CCD_ 1的代码。
我不理解计算cdf的逻辑。首先,对data1
和data2
进行排序,然后使用np.searchsorted
,我们试图找到data_all
在data1
和data2
中的位置。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在同一点的值。