0

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

代码示例

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)
4

1 回答 1

1

您应该使用 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 变量表示产生的累积分布。

于 2018-10-30T13:18:56.803 回答