我正在使用R 中的包中的glmer
函数,并且正在使用优化器(即在我的情况下的默认值)。我收到一个警告,我很好奇这意味着什么。 lme4
bobyqa
Warning message:
In optwrap(optimizer, devfun, start, rho$lower, control = control, :
convergence code 3 from bobyqa: bobyqa -- a trust region step failed to reduce q
我搜索了“一个信任区域步骤未能减少 q”。在minqa 包中找到一些信息,上面写着“Consult Powell for explain”。我做到了(如果你愿意,你也可以!请参阅下面的参考资料和链接),但我不明白。事实上,我没有找到任何关于减少 q 的信息。
MJD Powell (2007) “无导数的无约束最小化 NEWUOA 的发展”,剑桥大学,应用数学和理论物理系,数值分析组,报告 NA2007/05,http: //www.damtp.cam.ac.uk/用户/na/NA_papers/NA2007_05.pdf。
MJD Powell (2009),“无导数约束优化的 BOBYQA 算法”,报告编号 DAMTP 2009/NA06,英国剑桥大学数学科学中心。http://www.damtp.cam.ac.uk/user/na/NA_papers/NA2009_06.pdf。
Ps 我知道我可以更改优化器,我会看看我是否可以在没有警告或错误的情况下获得输出。根据 Ben Bolker的评论/回答,如果可以的话,我还将检查梯度和 Hessian 。我正在使用glmer
within dredge
from MuMIn
,我不确定Ben的答案是否会在没有额外修改的情况下工作,但是一旦我的计算机完成它正在做的事情,我就会继续工作,无论如何,我离题了。
更新
根据下面博克博士的评论,我开始查看 FORTRAN 代码(这里是任何有兴趣但不下载它的人的代码)。“430”出现在代码的 bobyqb.f 部分。只需搜索“430”或“减少Q”即可找到相关代码。
这是我第一次遇到 FORTRAN 代码,但我认为代码说如果满足以下条件,则产生警告:NTRITS
> 0,VQUAD
> = 0,IPRINT
> 0。“整数 NTRITS 设置为数字“信任区域”自上次“替代”迭代以来发生的迭代。” VQUAD
出现了好几次,我还不清楚它的重要性,因为它的值似乎取决于各种其他变量,这些变量的值有时取决于其他变量。来自 bobyqa.f:“IPRINT 的值应该是设置为0、1、2或3,控制打印量。具体来说,如果IPRINT=0则不输出,如果IPRINT=1则仅在返回时输出。
所以,似乎任务是弄清楚VQUAD
>= 0 的意义,也许,理解 / 何时IPRINT
变成 > 0。我得回去看看论文,但是数学,或者至少它的象征性表达,对我来说有点障碍。除非有人知道该算法或有了解它的愿望,否则我认为我将不得不通过在论文、代码和互联网之间来回反复来增加我对警告的理解,直到我理解它是什么方法。