scipy拟合优度测试的变化。

scikit-gof的Python项目详细描述


提供Kolmogorov Smirnov、Cramer von Mises和Anderson Darling的变体 完全指定连续分布的拟合优度检验。

示例

>>>fromscipy.statsimportnorm,uniform>>>fromskgofimportks_test,cvm_test,ad_test>>>ks_test((1,2,3),uniform(0,4))GofResult(statistic=0.25,pvalue=0.97...)>>>cvm_test((1,2,3),uniform(0,4))GofResult(statistic=0.04...,pvalue=0.95...)>>>data=norm(0,1).rvs(random_state=1,size=100)>>>ad_test(data,norm(0,1))GofResult(statistic=0.75...,pvalue=0.51...)>>>ad_test(data,norm(.3,1))GofResult(statistic=3.52...,pvalue=0.01...)

简单测试

scikit gof目前只提供三个非参数测试,让您 将样本与参考概率分布进行比较。这些是:

ks_test()
kolmogorov-smirnov上确界统计量;几乎与 scipy.stats.kstest()带有alternative='two-sided'但带有 (希望)更精确的p值计算;
cvm_test()
cramer von mises l2统计量,对 统计分布(但似乎是最好的可用分布);
ad_test()
DD> Anderson Darling统计量及其分布的公平逼近 与组合scipy.stats.anderson()不同的是,这个需要完全 指定的假设分布。

简单的测试函数使用公共接口,将 要比较的数据(示例),作为第二个参数冻结scipy.stats 分配。 它们返回一个带两个字段的命名元组:statisticpvalue

举个简单的例子,假设样本(.4,.1,.7)来自 来自[0,1]上的均匀分布:

ifks_test((.4,.1,.7),unif(0,1)).pvalue<.05:print("Hypothesis rejected with 5% significance.")

如果你的样品很大,而且你提前把它们分类,通过 assume_sorted=True以节省一些时间,而这些时间将浪费在诉诸上。

延伸

简单的测试包括两个阶段:计算测试统计和 确定结果值的可能性(根据假设)。 可通过提供新的统计计算程序或 统计的替代分布。

计算统计量的函数是对参考文献的评价 已排序数据的累积分布函数,预计返回 一个数字。 对于一个简单的测试,如果样本确实来自假设的(连续的) 分布,传递给函数的值应均匀分布 超过[0,1]。

下面是一个简单的统计函数示例:

defex_stat(data):returnabs(data.sum()-data.size/2)

提供的测试的统计函数,ks_stat()cvm_stat(), 和ad_stat(),可以从skgof.ecdfgof导入。

统计分布应该从rv_continuous派生并实现 至少有一个抽象的_cdf()_pdf()方法(您可以 还可以考虑直接编码_sf(),以提高结果的精度 接近1)。例如:

fromnumpyimportsqrtfromscipy.statsimportnorm,rv_continuousclassex_unif_gen(rv_continuous):def_cdf(self,statistic,samples):return1-2*norm.cdf(-statistic,scale=sqrt(samples/12))ex_unif=ex_unif_gen(a=0,name='ex-unif',shapes='samples')

提供的发行版分别位于单独的模块ksdistcvmdist,和addist

一旦你有了统计计算功能和统计分布 可以使用simple_test

组合两部分
fromfunctoolsimportpartialfromskgof.ecdfgofimportsimple_testex_test=partial(simple_test,stat=ex_stat,pdist=ex_unif)

exercise:示例测试有一个基本缺陷。你能指出吗?

安装

pip install scikit-gof

需要最新版本的python(>;3)、numpy(>;=1.10)和scipy。

请改正或指出你注意到的任何错误、不准确或打字错误。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Android Studio Java将输入存储在一个文本文件中,所有输入在一行中加载后显示在屏幕上   在我的Java应用程序中记录日志配置   java在将socket从Localhost构建到google时出错。通用域名格式   在java中通过SOAP发送附件   java Tomcat的JspWriter编码不正确   java应用程序在截击StringRequest时不断崩溃   java需要一个保持顺序并具有“顺序敏感”equals/hashCode的映射   Java框架地址栏元素   java如何从特定范围生成4个不重复的数字?   googleappenginejava。安全AccessControlException:拒绝访问(java.io.FilePermission)   加载游戏时java Fabric入口点异常崩溃   java Python我如何读入和读出,以便其他读者可以阅读它以便进一步购买?