gpt4 book ai didi

python - 使用 Scipy 的 stats.kstest 模块进行拟合优度测试

转载 作者:太空狗 更新时间:2023-10-29 22:08:06 25 4
gpt4 key购买 nike

我已经通读了有关此模块(和 Scipy 文档)的现有帖子,但我仍然不清楚如何使用 Scipy 的 kstest 模块在您拥有数据集和可调用函数。

我要测试我的数据的 PDF 不是标准的 scipy.stats 发行版之一,所以我不能只使用类似的东西来调用它:

kstest(mydata,'norm')

其中 mydata 是一个 Numpy 数组。相反,我想做类似的事情:

kstest(mydata,myfunc)

其中“myfunc”是可调用函数。这不起作用——这不足为奇,因为 kstest 无法知道“mydata”数组的横坐标是什么,以便使用“myfunc”生成相应的理论频率。假设“mydata”中的频率对应于随机变量的值是数组“横坐标”。然后我想也许我可以使用 stats.ks_2samp:

ks_2samp(mydata,myfunc(abscissa))

但我不知道这在统计上是否有效。 (旁注:kstest 和 ks_2samp 是希望频率数组归一化为 1,还是他们想要绝对频率?)

无论如何,由于单样本 KS 检验应该用于拟合优度检验,因此我必须假设有某种方法可以直接使用 kstest 进行检验。你是怎么做到的?

最佳答案

一些示例可能会阐明如何使用 scipy.stats.kstest。让我们首先设置一些测试数据,例如均值为 5,标准差为 10 的正态分布:

>>> data = scipy.stats.norm.rvs(loc=5, scale=10, size=(1000,))

要对这些数据运行kstest,我们需要一个函数f(x),它接受一个分位数数组,并返回累积分布函数的相应值。如果我们重用 scipy.stats.normcdf 函数,我们可以:

>>> 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)

关于python - 使用 Scipy 的 stats.kstest 模块进行拟合优度测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17901112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com