R:使用fitdistrplus来拟合离散数据直方图上的曲线

问题描述:

所以我有这个离散数据集合my_dat,我试图拟合曲线以便能够根据my_dat生成随机变量。我在连续数据上使用fitdistrplus取得了巨大成功,但尝试将其用于离散数据时出现了许多错误。R:使用fitdistrplus来拟合离散数据直方图上的曲线

表设置:

library(fitdistrplus) 

my_dat <- c(2,5,3,3,3,1,1,2,4,6, 
      3,2,2,8,3,4,3,3,4,4, 
      2,1,5,3,1,2,2,4,3,4, 
      2,4,1,6,2,3,2,1,2,4, 
      5,1,2,3,2) 

我看看数据的直方图第一:

hist(my_dat) 

<code>hist(my_dat)</code>

由于数据的离散,我决定尝试二项分布或负二项分布,以适应,这是我遇到麻烦:在这里我尝试定义每个:

fitNB3 <- fitdist(my_dat, discrete = T, distr = "nbinom") #NaNs Produced 
fitB3 <- fitdist(my_dat, discrete = T, distr = "binom") 

我收到两个错误:

  1. fitNB3似乎运行,但指出,“公司生产的NaN” - 任何人都可以让我 知道为什么是这样?
  2. fitB3根本没有运行,并提供给我以下错误:“start.arg.default(data10,distr = distname)中的错误:分发binom的未知起始值。” - 任何人都可以指出为什么这不起作用?我不清楚提供起始数字,因为数据是离散的(我试图在fitdist函数中使用start = 1,但我收到另一个错误:“fitdist中的错误(my_dat,discrete = T,distr =”binom“,start = 1 ):该函数MLE未能估计参数,错误代码100"

我一直在纺纱我的车轮上这一段时间,但我会采取对这些错误的任何反馈

  1. 请勿在离散数据上使用hist,因为它不会执行您认为正在执行的操作。

    比较plot(table(my_dat))hist(my_dat) ...然后思考你之前做过多少错误的印象。如果你必须使用hist,请确保你指定了中断,不要依赖为连续变量设计的默认值。

    Histogram and plot(table()) showing distinctly different appearance because hist is combining '1' and '2' into first bin

    hist(my_dat) 
    lines(table(my_dat),col=4,lwd=6,lend=1) 
    
  2. 无论你的模型可以适合作为这两个分布从0,而不是1开始,并与你有值的大小,P(0)不会是可忽略小。

  3. 我在运行代码时没有遇到任何适合负二项式的错误。

  4. 您有相关配件二项式是您需要提供的参数,这是所谓的size(n)和prob(P)的初始值,所以 你需要说的这个问题是这样的:

    fitdist(my_dat, distr = "binom", start=list(size=15, prob=0.2)) 
    

    但是,您将会遇到新的问题!优化器假定参数是连续的,并且将在size上失败。

    在另一方面,这可能是一件好事,因为未知ň MLE不是很乖,特别是当p小。

    通常,对于二项式,预计您会知道n。在这种情况下,p估计可以做如下:

    fitdist(my_dat, distr = "binom", fix.arg=list(size=20), start=list(prob=0.15)) 
    

    然而,随着固定ñ,最大似然估计是在任何情况下简单 - 你不需要为一个优化。

    如果你真的不知道n,有很多比MLE更好的估计值,但这不在这个问题的范围之内。