【问题标题】:Error in Fitdist in for loopfor 循环中的 Fitdist 错误
【发布时间】:2017-01-06 21:24:35
【问题描述】:

我正在运行以下代码,即将负二项式分布的 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)) 中:NaN 产生 3:在 cov2cor(varcovar) : diag(.) 有 0 或 NA 条目;非限定结果值得怀疑

警告消息:1:在 sqrt(diag(varcovar)) 中:NaN

输出也只包含 62 个值,而我期望 336 个值,因为我有 336 组分布

【问题讨论】:

    标签: r


    【解决方案1】:

    如果在你的代码中添加调试代码:

    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。

    【讨论】:

    • 谢谢思翔...它工作了..删除了所有只有0的列..
    猜你喜欢
    • 2012-07-29
    • 2016-08-15
    • 2018-08-04
    • 2011-10-23
    • 2011-06-21
    • 2016-07-27
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多