这是我的第一篇文章,所以如果有任何改进或我可以提供的更多信息,请告诉我。
我在运行 10.11.6 的 Mac 上使用 R 3.4.3。
我正在处理计数数据。我对负二项分布的 theta/色散/尺寸参数 (k) 感兴趣(我的理解是这些术语可以互换使用)。我正在将 NB 分布拟合到这些数据中,通过使用该fitdistrplus
包的最大似然fitdist
函数来估计参数。如果我的不同数据组使用不同的分布更好地建模,我很感兴趣。因此,我将分布拟合到所有数据。然后根据一个 2 水平因子拆分数据,并将分布拟合到这两个单独的组。
当我将分布拟合到整个数据集时,我得到了带有标准误差的 mu 和大小的估计值。然后我拆分数据。同样的方法适用于一半的数据(A 组),但不适用于另一半(B 组),理论上应该在结构上相同。相反,我得到了 mu 和 size 的估计值,但标准误差为 NA。
optim
对后面的函数施加 lower = c(0,0) 和 upper = c(inf, inf)fitdist
也没有实现任何效果,并且由于输出是 NA 而不是 NaN 我认为它与试图无论如何估计负数(经常讨论的错误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"))