一般数据类型的拟合优度测试
goftests的Python项目详细描述
goftests
随机纯旧数据的一般拟合优度检验。
goftests用于单元测试产生 任意的纯旧数据,并注重健壮性而不是 统计效率。与…对比 scipy.stats 和 statsmodels, 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 测试。这通常是至少100个样本。
单变量测试需要大约100个样本,而多变量测试 每个维度至少需要1000个。
样本太多
当测试数百万个或更多的样本时,测试可能会因以下原因而失败 数字不精确而不是分布不好。我们成功了 用102-105个样品进行测试。
当测试由mcmc产生的样本时,样本往往是相关的。 所以测试整个链失败了。在这种情况下,尝试运行 更长的链和子采样仅每第k步在链。
粘性马尔可夫链
密度检验对粘性马尔可夫链是敏感的。和穷人一样 混合链条,试着运行更长时间。
错误地未通过测试
请确保在之前通过seed_all(...)设置确定性种子 生成每个数据集。特别是,一些测试运行程序在 不确定的顺序,所以在生成每个 样本确保确定性行为。
实施新的测试
拟合优度测试主要是通过将 测试,最终减少到多项式拟合优度测试 在每个多项式的容器上使用皮尔逊x2检验。
减少
要实现新的测试,您可以从头开始实现 goftests中的另一个测试,或在另一个包中减少为标准测试 喜欢 scipy.stats 或 statsmodels。
参考文献
许可证
版权所有(c)2014 Salesforce.com,Inc.保留所有权利。版权 (c)2015 Gamelan Labs,Inc.版权所有(c)2016 Google,Inc.许可 根据修订后的BSD许可证。参见LICENSE.txt了解 细节。