一些示例可能会阐明如何使用scipy.stats.kstest
。让我们首先设置一些测试数据,例如均值5和标准偏差10的正态分布:
>>> data = scipy.stats.norm.rvs(loc=5, scale=10, size=(1000,))
要kstest
对这些数据运行,我们需要一个函数f(x)
,该函数采用一个分位数数组,并返回累积分布函数的相应值。如果我们重用我们的cdf
功能,scipy.stats.norm
我们可以做:
>>> scipy.stats.kstest(data, lambda x: scipy.stats.norm.cdf(x, loc=5, scale=10))
(0.019340993719575206, 0.84853828416694665)
上面的代码通常以更方便的形式运行:
>>> scipy.stats.kstest(data, 'norm', args=(5, 10))
(0.019340993719575206, 0.84853828416694665)
如果我们有均匀分布的数据,那么手工构建cdf很容易:
>>> data = np.random.rand(1000)
>>> scipy.stats.kstest(data, lambda x: x)
(0.019145675289412523, 0.85699937276355065)