我已经阅读了关于这个模块(和Scipy文档)的现有文章,但是我仍然不清楚如何使用Scipy的kstest模块在有数据集和可调用函数的情况下进行拟合优度测试。
我想测试我的数据所依据的PDF不是标准的scipy.stats发行版,所以我不能仅仅用如下方法调用它:
kstest(mydata,'norm')
其中mydata是一个Numpy数组。相反,我想做的是:
kstest(mydata,myfunc)
其中“myfunc”是可调用函数。这并不奇怪,因为kstest无法知道“mydata”数组的横坐标是什么,以便使用“myfunc”生成相应的理论频率。假设“mydata”中与随机变量值相对应的频率是数组“abscissa”。然后我想也许我可以使用stats.ksò2samp:
ks_2samp(mydata,myfunc(abscissa))
但我不知道这在统计上是否有效。(旁注:kstest和ksã2samp是否希望频率阵列被标准化为一个,或者他们是否希望绝对频率?)
无论如何,由于一个样本的KS测试应该用于拟合优度测试,我不得不假设有某种方法可以直接使用KS test来完成它。你怎么做到的?
一些例子可以帮助我们了解如何使用
scipy.stats.kstest
。首先设置一些测试数据,例如正态分布的平均值5和标准偏差10:要在这些数据上运行
kstest
,我们需要一个函数f(x)
,它接受一个分位数数组,并返回累积分布函数的相应值。如果我们重用scipy.stats.norm
的cdf
功能,我们可以:以上通常以更方便的形式运行:
如果我们有均匀分布的数据,很容易手工构建cdf:
对于
ks_2samp
,它检验了两个样本都是从相同的概率分布中抽样的零假设。例如,您可以执行以下操作:
其中x,y是
numpy.array
的两个实例:第一个值是测试统计,第二个值是p值。如果p值小于95(显著性水平为5%),这意味着您不能拒绝两个样本分布相同的无效假设。
相关问题 更多 >
编程相关推荐