获得kolmogorov-smilnov试验所需的临界值



我说的是检索这个表媒体的值一个python公式

https://www.soest.hawaii.edu/GG/FACULTY/ITO/GG413/K_S_Table_one_Sample.pdf

我已经找了一段时间了,但scipy函数不找这个值,我在这里很困惑。

我一直在研究scipy内置的公式,但没有成功。例如,在上述表格中,D[0.1,10]==0.36866。然而scipy.stats.kstest不会返回相同的值,无论我如何处理我的数据。

这可以使用scipy,使用ksone分布及其ppf(百分点函数(方法,而不是kstest:

from scipy.stats import ksone
def ks_critical_value(n_trials, alpha):
return ksone.ppf(1-alpha/2, n_trials)

打印临界值表:

from __future__ import print_function # For Python 2
trials = range(1, 41)
alphas = [0.1, 0.05, 0.02, 0.01]
# Print table headers
print('{:<6}|{:<6} Level of significance, alpha'.format(' ', ' '))
print('{:<6}|{:>8} {:>8} {:>8} {:>8}'.format(*['Trials'] + alphas))
print('-' * 42)
# Print critical values for each n_trials x alpha combination
for t in trials:
print('{:6d}|{:>8.5f} {:>8.5f} {:>8.5f} {:>8.5f}'
.format(*[t] + [ks_critical_value(t, a) for a in alphas]))
if t % 10 == 0:
print()

部分输出:

|       Level of significance, alpha
Trials|     0.1     0.05     0.02     0.01
------------------------------------------
1|     nan      nan      nan      nan
2| 0.77639  0.84189      nan      nan
3| 0.63604  0.70760  0.78456  0.82900
4| 0.56522  0.62394  0.68887  0.73424
5| 0.50945  0.56328  0.62718  0.66853
6| 0.46799  0.51926  0.57741  0.61661
7| 0.43607  0.48342  0.53844  0.57581
8| 0.40962  0.45427  0.50654  0.54179
9| 0.38746  0.43001  0.47960  0.51332
10| 0.36866  0.40925  0.45662  0.48893
11| 0.35242  0.39122  0.43670  0.46770
12| 0.33815  0.37543  0.41918  0.44905
13| 0.32549  0.36143  0.40362  0.43247
14| 0.31417  0.34890  0.38970  0.41762
15| 0.30397  0.33760  0.37713  0.40420
16| 0.29472  0.32733  0.36571  0.39201
17| 0.28627  0.31796  0.35528  0.38086
18| 0.27851  0.30936  0.34569  0.37062
19| 0.27136  0.30143  0.33685  0.36117
20| 0.26473  0.29408  0.32866  0.35241

我们需要统计学家提供一些额外的反馈:(a(为什么我们得到前两行的np.nan值(我假设是因为n_trialsalpha的这些组合的临界值纯粹是理论上的,在实践中无法实现(,以及(b(为什么ksone.ppf方法需要alpha除以2?我将编辑此答案以包含该信息。

不过,您可以看到,除了最初缺少的值外,该表生成的结果与您问题中的表和本文第16页的表相同。

相关内容

  • 没有找到相关文章

最新更新