在结合了两个分布的模型中测量拟合优度

机器算法验证 造型 直方图 kolmogorov-smirnov 测试 负二项分布 似然比
2022-03-02 21:27:12

我正在尝试建模具有双峰的数据,并且峰之间有足够的重叠,我无法独立处理它们。数据的直方图可能如下所示:

替代文字

我为此创建了两个模型:一个使用两个 Poisson 分布,另一个使用两个负二项式分布(以解释过度分散)。判断哪个模型更准确地拟合数据的适当方法是什么?

我最初的想法是,我可以使用 Kolmogorov-Smirnov 检验将每个模型与数据进行比较,然后进行似然比检验,看看一个模型是否更适合。这有意义吗?如果是这样,我不确定如何执行似然比检验。卡方是否合适,我有多少自由度?

如果有帮助,模型的一些(非常简化的)R 代码可能如下所示:

## inital data points
a <- read.table("data")

#create model data
model.pois = c(rpois(1000000,200),rpois(500000,250))
model.nb = c(rnbinom(1000000,200,0.5),rnbinom(500000,275,0.5)

#Kolmogorov-Smirnov test
#use ks.boot, since it's count data that may contain duplicate values
kpois = ks.boot(model.pois,a)
knb = ks.boot(model.nb,a)

#here's where I'd do some sort of likelihood ratio test
# . . .

编辑:这是一张可以解释我更适合的数据和分布的图像。从可视化中可以完全清楚地看出,第二个模型(使用负二项式分布来解释过度分散)更适合。不过,我想定量地展示这一点。 替代文字

(红色 - 数据,绿色 - 模型)

2个回答

您无法直接比较它们,因为负二项式具有更多参数。事实上,Poisson 是“嵌套”在负二项式中的,因为它是一个极限情况,所以 NegBin总是比 Poisson 更适合。然而,这使得考虑类似似然比检验成为可能,但泊松位于负二项式的参数空间边界这一事实可能会影响检验统计量的分布。

无论如何,即使参数数量的差异没有问题,您也不能直接进行KS测试,因为您已经估计了参数,而KS专门针对指定所有参数的情况。您使用引导程序的想法解决了这个问题,但不是第一个问题(参数数量的差异)

我还会考虑拟合优度的平滑测试(例如,参见 Rayner 和 Best 的书),例如,这可以导致将卡方拟合优度测试划分为感兴趣的组件(测量与泊松模型的偏差在这种情况下) - 取出说四阶或六阶,这应该会导致对 NegBin 替代品具有良好功效的测试。

(编辑:您可以通过卡方检验比较您的泊松和 negbin 拟合,但它的功效较低。对卡方进行分区并仅查看前 4-6 个分量,就像平滑测试所做的那样可能会做得更好.)

您可以使用诸如实际值与预测值之间的均方误差之类的指标来比较两个模型。