【问题标题】:how to use scipy.stats.kstest/basic questions about Kolmogorov–Smirnov test如何使用 scipy.stats.kstest/关于 Kolmogorov–Smirnov 测试的基本问题
【发布时间】:2013-09-25 15:49:29
【问题描述】:

帮助链接是http://docs.scipy.org/doc/scipy-0.7.x/reference/generated/scipy.stats.kstest.html 我现在可以计算 ks-test 值,但我不明白。 代码如下。

from scipy import stats
import numpy as np
sample =np.loadtxt('mydata',delimiter=",",usecols=(2,),unpack=True)
print stats.kstest(sample, 'poisson', args=(1,))

第一季度
如果参考分布是恒定的,什么词可以代替上面的“泊松”?
第二季度
args=(1,) 是什么意思?
第三季度
如果有人对 ks-test 感兴趣,这里是 wiki 链接。
http://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test
我们可以自己写python代码来练习吗?我们可以很容易地得到max(D),但是如何在链接中得到Pr(k呢? max(D)Pr(k有什么关系?

【问题讨论】:

  • “常数”是指统一的参考分布吗?
  • 是的,'uniform' 有效。Q1 已解决。谢谢。
  • Q3 可能更适合 stats.stackexchange.com
  • 谢谢。我会把它放在那里。

标签: python statistics scipy


【解决方案1】:

Q2:看看这个,我有一个数组叫x1

>>> stats.kstest(x1, 'norm')
(0.50018855199491585, 0.0)
>>> stats.kstest(x1, stats.norm.cdf)
(0.50018855199491585, 0.0)
>>> stats.kstest(x1, stats.norm.cdf, args=(0,))
(0.50018855199491585, 0.0)
>>> stats.kstest(x1, stats.norm.cdf, args=(2,))
(0.84134903906580316, 0.0)
>>> stats.kstest(x1, 'norm', args=(2,))
(0.84134903906580316, 0.0)

如果您传递分发的名称,即'norm',则实际传递给kstest 的是标准分发cdf。按照标准,这意味着正态分布的均值 == 0 和 sigma = 1。 如果您不想要标准的cdf,可以使用args=() 将附加参数传递给cdf。在这种情况下,我只通过了平均值。也就是说,我们测试了x1 与均值==2 和 sigma=1 的正态分布之间的差异。

Q3:简短的回答是,是的。但是,为什么要重新发明轮子?如果您想知道它是如何实现的,只需查看源代码即可。它位于your_package_folder\scipy\stats\stats.py,第 3292 行。

【讨论】:

  • 谢谢。尝试不同的值是个好方法。我正在尝试“统一”但仍然很困惑。你知道两个输出值的含义吗?
  • @questionhang,第一个值是 Kolmogorov-Smirnov 检验统计量,第二个是 p 值(根据 KS 统计量计算得出)。较小的 p 值表示更显着地拒绝原假设(x1 在此示例中为正态分布)。
  • 请让我把我原来的问题放在这里。我有一个来自探测器的光子到达时间的时间序列数据集,需要知道到达时间是否一致。Qa:我应该做一个- sample or two-sample k-s test?我已经放在stats.stackexchange.com/questions/71144/… Qb:你知道p值和检验统计量的数学表达式吗?据我所知,NumericalRecipe和wiki是最详细的资料。
  • 也在那里回答。我认为 2 样本 KS 测试不合适。
猜你喜欢
  • 2016-11-06
  • 2016-10-04
  • 2018-03-10
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
相关资源
最近更新 更多