如何使用scipy.stats.kstest /关于Kolmogorov-Smirnov测试的基本问题

时间:2013-09-25 15:49:29

标签: python statistics scipy

帮助链接为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,))

Q1 如果参考分布是常数,那么哪个词可以代替上面的“泊松”?
Q2
args=(1,)的含义是什么?
Q3
如果有人对ks-test感兴趣,这里是wiki链接。
http://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test
我们可以编写自己的python代码来练习吗?我们可以轻松获得 max(D),但如何在链接中获得 Pr(k <= x) max(D) Pr(k <= x)之间的关系是什么?

1 个答案:

答案 0 :(得分:7)

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,则可以使用cdf将其他参数传递给args=()。在这种情况下,我只通过了平均值。也就是说,我们测试x1与正态分布之间的差异,均值== 2,sigma = 1.

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