for循环中的Fitdist出错

时间:2017-01-06 21:24:35

标签: r

我正在运行以下代码,即在向量中保存负二项分布的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组分布

1 个答案:

答案 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。