这是我的第一篇文章,所以如果有任何改进或我可以提供进一步的信息,请告诉我。
我在运行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"))