Python 2样本KS测试。CDF或PDF作为输入?

Python 2样本KS测试。CDF或PDF作为输入?,python,testing,kolmogorov-smirnov,Python,Testing,Kolmogorov Smirnov,我实现了KS测试,以测试哪些分布更适合一起使用。此时,我将CDF作为输入,因为标准KS测试涉及计算函数CDF之间的最大差异。我只是想知道这样做是否正确。或者我应该使用PDF作为输入?统计值和p值对我来说似乎很好。有了KS检验的临界值,我可以选择我不应该拒绝的假设检验 代码示例 您应该使用PDF作为输入。ks_2samp将PDF作为输入,并在代码中创建CDF。根据函数源代码: data1 = np.sort(data1) data2 = np.sort(data2) n1 = da

我实现了KS测试,以测试哪些分布更适合一起使用。此时,我将CDF作为输入,因为标准KS测试涉及计算函数CDF之间的最大差异。我只是想知道这样做是否正确。或者我应该使用PDF作为输入?统计值和p值对我来说似乎很好。有了KS检验的临界值,我可以选择我不应该拒绝的假设检验

代码示例
您应该使用PDF作为输入。ks_2samp将PDF作为输入,并在代码中创建CDF。根据函数源代码:

data1 = np.sort(data1)
    data2 = np.sort(data2)
    n1 = data1.shape[0]
    n2 = data2.shape[0]
    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)
    d = np.max(np.absolute(cdf1 - cdf2))
    # Note: d absolute not signed distance
    en = np.sqrt(n1 * n2 / float(n1 + n2))
    try:
        prob = distributions.kstwobign.sf((en + 0.12 + 0.11 / en) * d)
    except:
        prob = 1.0

    return Ks_2sampResult(d, prob)
cdf1和cdf2变量代表产生的累积分布

data1 = np.sort(data1)
    data2 = np.sort(data2)
    n1 = data1.shape[0]
    n2 = data2.shape[0]
    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)
    d = np.max(np.absolute(cdf1 - cdf2))
    # Note: d absolute not signed distance
    en = np.sqrt(n1 * n2 / float(n1 + n2))
    try:
        prob = distributions.kstwobign.sf((en + 0.12 + 0.11 / en) * d)
    except:
        prob = 1.0

    return Ks_2sampResult(d, prob)