2样品KS-Test。 CDF或PDF作为输入?

时间:2018-07-15 11:29:43

标签: python testing kolmogorov-smirnov

我实施了KS-Test来测试哪些发行版更合适。此时,我将CDF作为输入,因为标准KS-Test涉及计算函数的CDF之间的最大差异。我只是想知道这是否是正确的方法。还是应该将PDFS用作输入?统计值和p值对我来说似乎很好。通过KS-Test的临界值,我可以选择不应该拒绝的假设检验。

代码示例

gammafit = stats.gamma.fit(h4)  
pdf_gamma = stats.gamma.pdf(lnspc, *gammafit)  
cdf_gamma = stats.gamma.cdf(lnspc, *gammafit) 
plt.plot(lnspc, pdf_gamma, label="Gamma")

gamma_kstest999 = stats.ks_2samp(np.cumsum(n4), cdf_gamma)

1 个答案:

答案 0 :(得分:0)

您应该使用pdf作为输入。 ks_2samp将pdfs作为输入,并在代码内部创建cdfs。根据函数源代码:

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变量代表产生的累积分布。