Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获得kolmogorov-smirnov试验所需的临界值_Python_Scipy_Statistics_Kolmogorov Smirnov - Fatal编程技术网

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

Python 获得kolmogorov-smirnov试验所需的临界值,python,scipy,statistics,kolmogorov-smirnov,Python,Scipy,Statistics,Kolmogorov Smirnov,我说的是用python公式检索这个表的值 我已经寻找了一段时间,但是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_tri

我说的是用python公式检索这个表的值

我已经寻找了一段时间,但是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()
我们需要一位统计学家提供一些额外的反馈,说明(a)为什么我们会得到前两行的
np.nan
值(我假设是因为
n_试验
alpha
的这些组合的临界值纯粹是理论上的,在实践中无法实现)和(b)为什么
ksone.ppf
方法需要将
alpha
除以2?我将编辑此答案以包含该信息


但是,您可以看到,除了初始缺失值外,此表生成的结果与第16页的表相同。

您遇到的问题是,
scipy.stats.kstest
正在执行测试本身,而您的临界值表用于解释测试。这里有一篇论文:附录中有Matlab代码——如果没有其他人响应,我明天会尝试移植它。其他表在python中有它们的等价物(特别是scipi)。例如,可以在chi2.ppf中找到平方chi(如果使用excel,则为逆chi)的值。我不能对科尔莫戈罗夫·斯米尔诺夫说同样的话。不幸的是,你发的那篇文章太离谱了。
      |       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