Стандартные ошибки оценки и размера "NA" (не NaN) при подборе отрицательного биномиального распределения с использованием fitdist()
Это мой первый пост, поэтому, если есть какие-либо улучшения или дополнительная информация, которую я могу дать, пожалуйста, дайте мне знать.
Я использую R 3.4.3 на Mac под управлением 10.11.6.
Я работаю с данными подсчета. Меня интересует параметр тета / дисперсия / размер (k) отрицательного биномиального распределения (насколько я понимаю, эти термины используются взаимозаменяемо). Я подгоняю распределение NB к этим данным, оценивая параметры по максимальной вероятности, используя fitdistrplus
пакет, с fitdist
функция. Меня интересует, лучше ли моделируются разные группы моих данных с использованием разных распределений. Поэтому я подгоняю распределение ко всем данным. Затем данные разделяются на основе одного двухуровневого фактора, и распределение соответствует этим двум отдельным группам.
Когда я подгоняю распределение ко всему набору данных, я получаю оценку му и размера со стандартными ошибками. Затем я разделил данные. Этот же подход прекрасно работает для половины данных (группа A), но не для другой половины (группа B), которая, теоретически, должна быть структурно одинаковой. Вместо этого я получаю оценку му и размера, но с NA для стандартных ошибок.
Наложение нижнего = с (0,0) и верхнего = с (инф, инф) для optim
функция позади 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"))