我正在使用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程序包中找到了一些信息,上面写着 “请咨询Powell进行解释”。我做到了(如果需要,您也可以!请参见下面的参考资料和指向它们的链接),但是我不明白。实际上,我没有找到关于减少q的任何信息。
MJD Powell(2007)“ NEWUOA在无导数的无约束最小化方面的发展”,剑桥大学,应用数学和理论物理系,数值分析组,报告NA2007 / 05,http: //www.damtp.cam.ac.uk/ user / 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。
附言:我知道我可以更改优化器,并且我将查看是否可以得到没有警告或错误的输出。根据Ben Bolker的评论/答案,我还将检查渐变和粗麻布。我使用的是glmer
内dredge
从MuMIn
,我不知道,如果本的答案没有一些额外的工作,修修补补,但我会在上面工作,一旦我的电脑上完成它在做什么,反正我离题了。
更新资料
按照下面Bolker博士的评论,我开始浏览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。我将不得不回到纸上来看看,但数学或至少它的象征性表达,对我来说有点障碍。除非有人知道该算法或有学习它的愿望,否则我认为我将不得不通过在论文,代码和互联网之间来回迭代来迭代地提高对警告的理解,直到我理解它为止。手段。
src
目录中)之外,我不确定是否有很多建议。 2.3.tar.gz),并确切地看到此错误(代码中的错误代码430)被触发时发生了什么……