如何拟合离散分布来计算数据?

机器算法验证 r 泊松分布 离散数据 计算统计 负二项分布
2022-01-25 22:11:36

我有以下计数数据的直方图。我想对其进行离散分布。我不知道我应该怎么做。在此处输入图像描述

我是否应该首先在直方图上叠加一个离散分布,比如负二项分布,以便获得离散分布的参数,然后运行 ​​Kolmogorov-Smirnov 检验来检查 p 值?

我不确定这种方法是否正确。

是否有解决此类问题的通用方法?

这是计数数据的频率表。在我的问题中,我只关注非零计数。

  Counts:     1    2    3    4    5    6    7    9   10 
 Frequency: 3875 2454  921  192   37   11    1    1    2 

更新:我想问一下:我使用 R 中的 fitdistr 函数来获取拟合数据的参数。

fitdistr(abc[abc != 0], "Poisson")
     lambda  
  1.68147852 
 (0.01497921)

然后我在直方图的顶部绘制泊松分布的概率质量函数。在此处输入图像描述

但是,泊松分布似乎无法对计数数据进行建模。有什么我可以做的吗?

2个回答

拟合离散分布的方法

有三种主要方法*用于拟合(估计参数)离散分布。

1)最大似然

这会找到最有可能提供样本的参数值(给定其他假设,如独立性、常数参数等)

2)矩量法

这会找到使前几个总体时刻与您的样本时刻相匹配的参数值。这通常很容易做到,并且在许多情况下会产生相当合理的估计量。它有时也用于为 ML 例程提供起始值。

3)最小卡方

这最小化了离散分布上的拟合统计量的卡方优度,尽管有时对于较大的数据集,为了方便起见,可能会合并最终类别。它通常工作得很好,甚至可以说在特定情况下它比 ML 有一些优势,但通常它必须迭代到收敛,在这种情况下,大多数人往往更喜欢 ML。

前两种方法也用于连续分布;在这种情况下,通常不使用第三个。

这些绝不是一个详尽的列表,例如,通过最小化 KS 统计量来估计参数是很有可能的——甚至(如果你调整离散性)如果你是如此倾向。由于您在 R 中工作,因此对于负二项式很容易实现 ML 估计。如果您的样本在 中x,则很简单library(MASS);fitdistr (x,"negative binomial")

> library(MASS) 
> x <- rnegbin(100,7,3)
> fitdistr (x,"negative binomial")
     size         mu    
  3.6200839   6.3701156 
 (0.8033929) (0.4192836)

这些是参数估计及其(渐近)标准误差。

在泊松分布的情况下,MLE 和 MoM 都在样本均值处估计泊松参数。

如果您想查看示例,您应该发布一些实际计数。请注意,您的直方图已使用选择的 bin 完成,以便将 0 和 1 类别组合在一起,并且我们没有原始计数。

据我猜测,您的数据大致如下:

    Count:  0&1   2   3   4   5   6  >6    
Frequency:  311 197  74  15   3   1   0

但是大数字将是不确定的(这在很大程度上取决于低计数由其条形高度的像素计数表示的准确程度)并且可能是这些数字的倍数,例如这些数字的两倍(原始计数影响标准错误,所以它们是关于这些值还是两倍大很重要)

前两组的组合使它有点尴尬(有可能这样做,但如果你组合一些类别就不那么简单了。很多信息都在前两组中,所以最好不要让默认直方图将它们混为一谈)。


* 其他拟合离散分布的方法当然是可能的(例如,可以匹配分位数或最小化其他拟合优度统计)。我提到的那些似乎是最常见的。

在编辑中,您提供了一些数据,并添加了一个新问题:

“这是计数数据的频率表。在我的问题中,我只关注非零计数。

   Counts:     1    2    3    4    5    6    7    9   10 
Frequency:  3875 2454  921  192   37   11    1    1    2 

谁能给我一个例子,说明你将如何在这里进行卡方拟合优度测试?”

这导致进一步的评论:

  1. 有零但又想忽略它们是有道理的,但通常统计和主题的人希望看到一个很好的理由。

  2. 如果您选择忽略零,那么您将自己置于困难的境地,因为如果您忽略零,您不能只启动例如泊松或负二项式的例程。嗯,你可以,但答案是错误的。您需要用于分布的特殊用途函数或命令,例如零截断泊松或零截断负二项式。这是具有挑战性的事情,需要专门阅读才能清楚您在做什么。

  3. 询问如何进行卡方检验向我表明,您并没有真正理解我所说的非常简短的内容,而 @Glen_b 说得更详细(而且,在我看来,非常清楚)。将其一分为二:

    • 没有预期频率就没有卡方检验,没有参数估计就没有预期频率。您可能最熟悉卡方检验例程,在该例程中检验双向表中行和列的独立性。尽管这是入门课程中最常遇到的卡方检验,但实际上在卡方检验中通常非常不寻常,因为通常的软件实际上会为您进行参数估计,从而获得预期的频率。除此之外,在大多数更复杂的问题中,例如您的问题,您必须首先获得参数估计。

    • 卡方检验没有错,但如果您通过最大似然估计参数,则它是无关紧要的,因为拟合例程会为您提供估计值和标准误差,并允许在它们之后进行测试。@Glen_b 在他的回答中已经举了一个例子。

一个附带问题是调整直方图以尊重变量的离散性并显示概率而不是密度会更清楚。明显的差距只是默认 bin 选择的假象,不考虑变量的离散性。

更新:关于卡方检验的补充问题现已删除。目前我让上面的#3 站立,以防其他人遵循相同的路径想要卡方检验。