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