我说的是检索这个表媒体的值一个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_trials
和alpha
的这些组合的临界值纯粹是理论上的,在实践中无法实现(,以及(b(为什么ksone.ppf
方法需要alpha
除以2?我将编辑此答案以包含该信息。
不过,您可以看到,除了最初缺少的值外,该表生成的结果与您问题中的表和本文第16页的表相同。