我正在运行以下代码,即在向量中保存负二项分布的AIC值。
数据文件位于:https://www.dropbox.com/s/m5iqkmfacu257hh/SOFQ1.csv?dl=0
samples <- read.table(file.choose(), header = FALSE, sep = ",")
nbinom_aic <- data.frame(NBINOM_AIC = numeric(0))
for(i in 1:336) {
a <- samples[, i]
d <- fitdist(a, distr = "nbinom")
nbinom_aic <- rbind(nbinom_aic, d$aic)
}
我收到以下错误消息:
fitdist中的错误(a,distr =“nbinom”):函数mle无法估计参数,错误代码为100
另外:
产生2:以sqrt(1 / diag(V)):NaNs产生3:在cov2cor(varcovar) :diag(。)有0或NA条目;非有限结果值得怀疑
警告消息:1:在sqrt(diag(varcovar)中):NaNs
此外,输出仅包含62个值,而我期望336个值,因为我有336组分布
答案 0 :(得分:0)
如果在您的代码中添加调试代码:
for(i in 1:336) {
a <- samples[, i]
print(i)
d <- fitdist(a, distr = "nbinom")
nbinom_aic <- rbind(nbinom_aic, d$aic)
}
您会发现代码停在i=63
现在检查数据是什么样的:
a <- samples[, 63]
summary(a)
全部为0。我认为这就是fitdist失败的原因。
要解决此问题,如果您想要fitdist
所有列,只需要检查是否只有1个唯一值,它是0。