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


17

我有以下计数数据的直方图。我想为其分配一个离散的分布。我不确定该如何处理。在此处输入图片说明

我是否应该首先在直方图上叠加离散分布(例如负二项分布),以便获得离散分布的参数,然后运行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)

然后,在直方图的顶部绘制泊松分布的概率质量函数。 在此处输入图片说明

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


3
一种通用方法是使用最大似然来拟合候选分布。叠加分布以获取参数的含义尚不清楚,但是如果要猜测参数值直到获得合适的拟合度,那就太糟糕了。Kolmogorov-Smirnov在这里没有用。您需要能提供推论结果的软件,因此您需要指明选择的软件,以便使用该软件的人们可以尝试为您提供帮助。您的直方图尚不清楚,但是如果存在差距,则可能没有合适的分布。
尼克·考克斯

3
尽管以这种方式使用KS 测试是一种糟糕的方法(并且在任何情况下KS测试都不适用于离散分布),但可以通过将所有可能参数值的KS统计量最小化来估算参数;但是,如果您采用这种方式(优化拟合优度),则最典型的方法是最小卡方。正如尼克·考克斯(Nick Cox)所建议的那样,机器学习将是显而易见的事情,几乎可以肯定,它更有效,更容易消除标准错误,并且更容易为他人所接受。(还有其他可能,例如矩量法,但最重要的是ML。)
Glen_b-恢复莫妮卡(Monica

我正在使用R。当您说估算MLE时,您会为该工作推荐任何算法吗?找到ML之后,下一步该怎么做?
user1769197

我将从这里开始?MASS::fitdistr,因为它已经在您的R发行版中(请参阅底部的最后一个示例;有关负二项式参数化的更多信息,请参见rnegbin)。....“ 找到ML之后,下一步我该怎么做? ”-到那时,您已经有了参数估计值和标准误差。除此之外,您想实现什么?-我猜不到。
Glen_b-恢复莫妮卡

在我看来,您可能一直在问:“如何评估模型的拟合度?”。如果是这样,您可以更新您的问题以反映这一点吗?
Glen_b-恢复莫妮卡

Answers:


17

拟合离散分布的方法

可以使用三种主要方法*来拟合(估计参数)离散分布。

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

但是大数将不确定(这很大程度上取决于小数位数由其小节高度的像素数表示的准确性),并且可能是这些数的倍数,例如这些数的两倍(原始数会影响标准错误,因此无论是这些值还是两倍大都很重要)

前两组的合并使它有点尴尬(可以这样做,但如果合并某些类别,则不太直接。前两组中有很多信息,因此最好不要让默认直方图将它们混为一谈)。


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


+1,不错的信息。出于好奇,您为什么经常使用1)而不是CV支持的标记编号(即- 1.导致缩进)?
gung-恢复莫妮卡

1
@gung大多数情况下,我不会考虑-我希望列表看起来像我键入它们的方式;但是当我考虑一下时,我发现markdown会将我键入的数字编辑为它认为很烦人的数字(如果我键入“ 36.”,我的意思并不是 “ 1.”)。我确实会使用“ 1”。而不是“ 1)”,我经常最终会键入“ 1 \”。明确地阻止它识别它并做我不打算做的事情。经过5年的reddit,我对这种行为非常满意,以至于我什至不去想-我最终会习惯性地自动干预它。
Glen_b-恢复莫妮卡

1
@gung如果缩进小得多,我可能倾向于忍受重编号的危害并使用它。就目前而言,当我看到它时,我通常会发现它使人分心。但是在这种特殊情况下,我希望使它们看起来更像副标题,因此即使我没有被这种行为推迟,我也可能会避免使用它。(另一方面,在其他人决定编辑我的列表以使其缩进的情况下,我通常让他们自己取悦自己。如果他们想使它看起来某种方式,则只要可以做到, “T改变的意思)。
Glen_b -Reinstate莫妮卡

我会努力克制自己;-)。
gung-恢复莫妮卡

2

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

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

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

有人可以给我一个例子,说明您如何在这里进行卡方拟合优度检验吗?”

这引起了进一步的评论:

  1. 拥有零但希望忽略它们可能是有道理的,但通常来说,统计和主题人物会希望看到一个很好的理由。

  2. 如果您选择忽略零,则表示您处于困难的境地,因为如果遗漏了零,您将无法启动泊松或负二项式等例程。可以,但是答案将是错误的。您需要用于分布的特殊功能或命令,例如零截断的Poisson或零截断的负二项式。这是具有挑战性的内容,需要专门阅读才能清楚地了解您的工作。

  3. 问如何进行卡方检验,对我来说意味着您还没有真正理解我简短地说过的内容,而@Glen_b更详细地说了(对我而言,很清楚)。将其分为两部分:

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

    • 卡方检验没错,但是如果您以最大可能估计参数,则它是不相关的,因为拟合例程会为您提供估计和标准误差,并允许进行测试。@Glen_b在回答中已经举了一个例子。

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

更新:关于卡方检验的补充问题现已删除。目前,让我站在上面的#3,以防其他人遵循同样的方法进行卡方检验。


我必须忽略零,因为我正在尝试对活动计数进行建模。计数= 0称为无效计数。
user1769197

这是一个实质性的选择。请注意,在许多领域中都有所谓的两部分模型,即在模型中(以您的名义)对活动模型与非活动模型进行建模,然后对活动模型进行建模。
尼克·考克斯

我试图通过做“ plot(table(abc()),type =“ h”)“来调整直方图。但是,我不确定如何显示概率
user1769197

我不使用R,但是您可以从中获得建议。您可能需要单独询问。
Nick Cox
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.