nlminb 中的收敛错误代码——存储在哪里?

问题描述 投票:0回答:2

我正在构建一个 Monte Carlo 模拟来进行功率估计,我需要运行 10,000 次迭代,每次迭代都涉及将一堆混合线性和逻辑模型拟合到我生成的数据。千载难逢,我收到这样的错误:

nlminb 问题,收敛错误码 = 1 ;消息 = 迭代限制 没有收敛就达到了

我从谷歌搜索中发现,这是常见的错误,并且可能是我的数据的函数(因为在模拟程序的大多数运行中都不会发生这种情况)。然而,这很痛苦,因为它会使我的模拟崩溃,并且可能会损失几天的运行时间。我想通过添加一些错误处理来使程序更加健壮,但我不知道“收敛错误代码”存储在哪里(如果有的话)。 检查 lme、lmeObject 和 nlminb 的手册页并没有真正帮助。有什么想法吗?

r
2个回答
1
投票
nlminb

返回的列表的“收敛”元素将为 0,表示成功收敛。我想问您是否想增加控制列表中的“iter.max”元素。此信息位于帮助页面上。

    


0
投票

x <- rnbinom(100, mu = 10, size = 10) hdev <- function(par) { -sum(dnbinom(x, mu = par[1], size = par[2], log = TRUE)) } fit <- nlminb(c(9, 12), hdev, control=list(iter.max=1))

完成此操作后,收敛代码 (1) 将存储在 
fit$convergence

中,并且警告(“在没有收敛的情况下达到迭代限制 (10)”)将存储在

fit$message
中。
    

© www.soinside.com 2019 - 2024. All rights reserved.