一般数据类型的拟合优度测试

goftests的Python项目详细描述


Build StatusCode QualityLatest Version

goftests

随机纯旧数据的一般拟合优度检验。

goftests用于单元测试产生 任意的纯旧数据,并注重健壮性而不是 统计效率。与…对比 scipy.statsstatsmodels, goftests不会对正在测试的分发做出假设,并且 只需要mcmc提供的简单(sample,prob)接口 取样器。

安装

pip install goftests

使用拟合优度测试

goftests为monte carlo采样器实现通用统计测试 产生(样本,概率)对的。四个基本的通用测试 是

  • discrete_goodness_of_fit(samples, probs_dict, ...)-用于 离散值数据,其质量大部分集中在几个值上。
  • density_goodness_of_fit(samples, probs, ...)-连续 无离散成分的分布单变量数据。
  • vector_density_goodness_of_fit(samples, probs, ...)-用于 无离散的连续分布多元数据 组件。
  • mixed_density_goodness_of_fit(samples, probs, ...)-用于 离散索引的连续分布数据,包含所有 其他的测试。

每个测试都输出一个拟合优度值,比如gof,它应该是 在区间[0,1]内均匀分布,且容易失效 数字接近于零。因此,为了测试采样器,我们通常编写

TEST_FAILURE_RATE = 1e-3

def test_my_sampler(count=100):
    seed_all(0)
    samples = [my_sampler.rvs() for _ in xrange(count)]
    probs = [my_sampler.pdf(x) for x in samples]
    gof = mixed_density_goodness_of_fit(samples, probs)
    assert gof > TEST_FAILURE_RATE

通过为一组测试指定全局TEST_FAILURE_RATE,我们 可以调整预期失败的测试数。在一个大套间里 测试,有些可能在指定的种子上失败,尽管分布 正确,通常gof刚好低于阈值。在这种情况下 我们通常在那些测试中增加种子。在1000个测试中 使用TEST_FAILURE_RATE = 1e-3,我们应该期望必须增加 平均一次试验的种子。

诊断常见错误
样本太少

离散测试只查看最有可能为数不多的值,并且需要 前几个值中有足够的样本能够使用皮尔逊的x2 测试。这通常是至少100个样本。

单变量测试需要大约100个样本,而多变量测试 每个维度至少需要1000个。

样本太多

当测试数百万个或更多的样本时,测试可能会因以下原因而失败 数字不精确而不是分布不好。我们成功了 用102-105个样品进行测试。

混合马尔可夫链<H/H5>H5>

当测试由mcmc产生的样本时,样本往往是相关的。 所以测试整个链失败了。在这种情况下,尝试运行 更长的链和子采样仅每第k步在链。

粘性马尔可夫链

密度检验对粘性马尔可夫链是敏感的。和穷人一样 混合链条,试着运行更长时间。

错误地未通过测试

请确保在之前通过seed_all(...)设置确定性种子 生成每个数据集。特别是,一些测试运行程序在 不确定的顺序,所以在生成每个 样本确保确定性行为。

实施新的测试

拟合优度测试主要是通过将 测试,最终减少到多项式拟合优度测试 在每个多项式的容器上使用皮尔逊x2检验。

Reductions

减少

要实现新的测试,您可以从头开始实现 goftests中的另一个测试,或在另一个包中减少为标准测试 喜欢 scipy.statsstatsmodels

参考文献

  • [1]Peter J Bickel,Leo Breiman(1983),“最近函数之和 邻域距离、矩界、极限定理和 拟合测试” pdf
  • [2]Mike Williams(2010)“你的身材有多好?未固定 高能物理中的多元拟合优度检验 pdf

许可证

版权所有(c)2014 Salesforce.com,Inc.保留所有权利。版权 (c)2015 Gamelan Labs,Inc.版权所有(c)2016 Google,Inc.许可 根据修订后的BSD许可证。参见LICENSE.txt了解 细节。

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

推荐PyPI第三方库


热门话题
JavaSWT树项目高度   java如何通过单击按钮向JFrame添加文本字段?   java keytool如何保护密钥?   java在Apache Camel中构建一个报告来测量事务时间   安卓为什么这个Java类的参数不能按预期工作?   java参数化JUnit中的测试方法,而不仅仅是整个类   java N级地图,需要把地图放在地图里面   屏幕右侧的java抽屉?   JAVA网MalformedURLException:解析xml时没有协议异常   java为什么调用时出现JSON异常。getJSONObject()?   socketJava服务器关闭代码   java如何为计算器生成命令行参数   java如何将活动意图传递给另一个类?   java Apache HttpClient临时错误:NoHttpResponseException   java JVM选项XX:UseFastEmptyMethods/XX:UseFastAccessorMethods   类Java构造函数问题   验证PDF和Excel文件类型的java模式   java循环菜单问题   java如何返回tar。Spring中通过http的gz文件   java使用NetBeans设置图像库