计算两个样本的累积分布

时间:2018-08-02 16:21:11

标签: scipy statistics cdf goodness-of-fit cumulative-frequency

我正在经历一个ks test (2 sample)的密码,该密码计算出任何两个给定样本的CDF之间的最大距离。用于计算累积分布函数(CDF)的代码。

我无法理解用于计算cdf的各行逻辑。首先,对data1data2进行排序,然后使用np.searchsorted来查找data_alldata1data2中的位置。 data_all只是排序的data1data2的串联。

如果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)

1 个答案:

答案 0 :(得分:0)

确实没有对data_all进行排序,但这与计算无关紧要。

  • 数组cdf1包含第一个样本的CDF值,该值是在每个点data_all上计算的
  • 数组cdf2包含第二个样本的CDF值,该值是在每个点data_all上计算的

然后代码执行

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

最大限度地利用这些差异。当找到最大数量时,按什么顺序看都无所谓。

因此,这两个数组的顺序并不重要,只要它们一致即可:cdf1[42]是CDF1的值,而cdf2[42]是CDF1的值CDF2在同一位置