估计和大小的标准误差" NA"使用fitdist()拟合负二项分布时(而不是NaN)

时间:2018-03-30 14:47:02

标签: r distribution na standard-error fitdistrplus

这是我的第一篇文章,所以如果有任何改进或我可以提供进一步的信息,请告诉我。

我在运行10.11.6的mac上使用R 3.4.3。

我正在使用计数数据。我对负二项分布的theta / dispersion / size参数(k)感兴趣(我的理解是这些术语可以互换使用)。我将NB分布拟合到这些数据,使用fitdistrplus包和fitdist函数通过最大似然估计参数。如果我的数据的不同组使用不同的分布更好地建模,我感兴趣。因此,我适合所有数据的分布。然后根据一个2级因子拆分数据,并将分布拟合到这两个独立的组。

当我将分布拟合到整个数据集时,我会得到mu和size的估计值以及标准误差。然后我拆分数据。这种方法适用于一半数据(A组),但不适用于另一半(B组),理论上它们在结构上应该是相同的。相反,我得到mu和大小的估计,但标准错误的NA。

对于optim后面的fitdist函数强加lower = c(0,0)和upper = c(inf,inf)也没有达到任何效果,并且输出为NA而不是NaN I不要认为它与试图估计负数有任何关系(经常讨论的错误100)。

出于兴趣,我删除了所有零,以防它与此有关,也没有做任何事情。

所以我的问题是为什么要生成NA(最终我如何获得估算的标准误差)?

这是我的数据和我的代码:

require(fitdistrplus)

data.set <- read.csv("data.set.csv")
count.A <- subset(data.set, category == "A")
count.B <- subset(data.set, category == "B")

    # All Data

plotdist(data.set$count, histo = TRUE, demp = TRUE)

count.nb <- fitdist(data.set$count, "nbinom")
plot(count.nb)
LL.nb <- logLik(count.nb)

count.p <- fitdist(data.set$count, "pois")
plot(count.p)
LL.p <- logLik(count.p)

cdfcomp(list(count.p, count.nb),legendtext = c("Poisson", "negative binomial"))

gofstat(list(count.p, count.nb),fitnames = c("Poisson", "negative binomial"))

    # Group A

plotdist(count.A$count, histo = TRUE, demp = TRUE)

A.count.nb <- fitdist(count.A$count, "nbinom")
plot(A.count.nb)
A.LL.nb <- logLik(A.count.nb)

A.count.p <- fitdist(count.A$count, "pois")
plot(A.count.p)
A.LL.p <- logLik(A.count.p)

cdfcomp(list(A.count.p, A.count.nb),legendtext = c("Poisson", "negative binomial"))

gofstat(list(A.count.p, A.count.nb),fitnames = c("Poisson", "negative binomial"))

    # Group B

plotdist(count.B$count, histo = TRUE, demp = TRUE)

B.count.nb <- fitdist(count.B$count, "nbinom", method = "mle")

plot(B.count.nb)
B.LL.nb <- logLik(B.count.nb)

B.count.p <- fitdist(count.B$count, "pois")
plot(B.count.p)
B.LL.p <- logLik(B.count.p)

cdfcomp(list(B.count.p, B.count.nb),legendtext = c("Poisson", "negative binomial"))

gofstat(list(B.count.p, B.count.nb),fitnames = c("Poisson", "negative binomial"))

here is my code

0 个答案:

没有答案