离散数据的拟合优度:最佳方法

机器算法验证 假设检验 拟合优度
2022-03-19 19:20:51

数据: 出于本问题/交流的目的,我们可以假设数据看起来像rnbinom(1000,size=0.1,prob=0.01)R 中的数据,它从负二项分布(size=0.1成功概率和概率prob=0.01)生成 1,000 个观察值的随机样本。这是参数化,其中随机变量表示size成功次数之前的失败次数。尾巴很长,1000 次观察并不是很多数据。

问题: 我得到了一些数据({1,2,....} 上的整数)[见上文](1,500 个数据点),并要求我找到任何参数的“最佳拟合”分布和估计值。我对数据一无所知。我知道对于长尾数据来说,这不是一个非常大的样本。更多数据是可能的。

我所做的: 我考虑过通过将两个不同的分布拟合到数据中来使用似然比检验,但我认为这并不适用(例如,我无法确定适当的临界 p 值),除非这两个分布是嵌套的...

然后我考虑使用 Kolmogorov-Smirnov 检验(针对离散数据进行了调整),但无论如何,在 R 中,它抱怨它无法计算“有关系的数据”的 p 值。

在这种情况下,我测试/确定不同分布的拟合的最佳方法是什么?以下是我考虑过的其他一些事情:

  1. 要求(很多)更多数据。但这会有帮助吗?例如,我可以使用渐近结果吗?
  2. 考虑一些引导/重新采样/蒙特卡洛方案?如果是这样,是否有我可以/应该阅读的标准参考资料来学习如何正确地做到这一点?谢谢
1个回答

如果我正确理解了您的问题,您只需要将数据拟合到 distribution在这种情况下,您可以使用 R 包中的函数之一,例如fitdistrfrom MASSpackage,它使用最大似然估计 (MLE)并支持离散分布,包括二项式泊松

然后,作为第二步,您需要执行一项(或多项)拟合优度 (GoF)测试来验证结果Kolmogorov-SmirnovAnderson-Darling和 (AFAIK) Lilliefors检验均不适用于离散分布。然而,幸运的是,卡方 GoF 检验适用于连续分布和离散分布,并且在 R 中是调用stats::chisq.test()函数的问题。

或者,由于您的数据代表离散分布,您可以使用vcd包及其函数goodfit()此功能既可以用作标准 GoF 测试的替代品chisq.test(),也可以更好地用作完整的工作流程分布拟合GoF 测试)。对于完整的工作流程选项,只需使用默认设置而不指定参数par(您可以指定size, if type = "nbinomial")。将使用最大似然最小卡方估计参数(您可以选择方法)。summary()调用函数可以得到结果。