2 образца KS-Test. CDF или PDF в качестве ввода?

Я реализовал KS-Test, чтобы проверить, какие дистрибутивы лучше подходят друг другу. В этот момент я дал CDF в качестве входных данных, потому что стандартный тест KS включает в себя вычисление максимальной разницы между 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 ответ

Вы должны использовать PDF-файлы в качестве входных данных. ks_2samp принимает в качестве входных данных PDF-файлы и создает их в коде. Согласно исходному коду функции:

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 представляют полученные кумулятивные распределения.

Другие вопросы по тегам