我已经阅读了关于这个模块的现有文章(以及Scipy文档),但是我仍然不清楚如何使用Scipy的kstest模块来进行拟合优度检验,当您有一个数据集和可调用函数时。
我想要测试我的数据的概率密度函数不是标准的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函数是否要求频率数组归一化为1,还是需要绝对频率?)
无论如何,既然单样本KS检验被认为是用于拟合优度测试的,我必须假设有一种直接使用kstest进行此操作的方法。您怎么做呢?
ks_2samp
接受两个数据集本身作为参数。如果你的操作正确,我认为ks_2samp
方法产生的p-values
应该比kstest
更高,不确定你所看到的差异是否太大... - Jaime