lmer的替代优化算法

时间:2014-08-05 15:19:03

标签: r optimization lme4 mixed-models

lmer包中的函数lme4默认使用bobyqa包中的minqa作为优化算法。

根据以下帖子https://stat.ethz.ch/pipermail/r-sig-mixed-models/2013q1/020075.html,可以在minqa包中使用其他优化算法

如何使用uobyqanewuoa作为lmer的优化算法?

library(lme4)
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy, control=lmerControl(optimizer="bobyqa"))

1 个答案:

答案 0 :(得分:5)

您不能使用newuoauobyqa,因为它们都不允许对参数进行约束。来自?lmerControl(强调添加)

  

任何允许框约束

的最小化函数都可以使用

     

(1)取输入参数'fn'(要优化的功能),'par'(起始参数值),'lower'(下限)和'control'(控制参数,从'control'传来)论证)和

     

(2)返回一个列表,其中包含(至少)元素'par'(最适合                 参数),'fval'(最佳拟合函数值),'conv'                 (收敛代码,成功等于零)                 收敛)和(可选)'消息'(信息                 消息,或对收敛失败的解释)。

&#34; bobyqa&#34;开头的b代表&#34;绑定&#34; (如在约束中),我假设其他算法中的u同样代表&#34;无约束&#34;。您可以查看此文件中的某些机制,以便(重新)使用一堆不同的优化器来匹配相同的模型:

allFit <- system.file("utils", "allFit.R", package="lme4")
file.show(allFit)

我目前所知道的所有优化器列表允许使用框约束,并且不需要指定显式渐变函数(大多数绑定约束优化器都需要{ {1}} package),如上面的文件所示,是

  • BOBYQA(optimxminqa包实施)
  • Nelder-Mead(nloptrlme4nloptr包实施)
  • 来自基地R的
  • dfoptim(来自贝尔实验室PORT图书馆)
  • 来自基地R的
  • nlminb,通过L-BFGS-B(Broyden-Fletcher-Goldfarb-Shanno,来自纳什)

除了optimx内置的这些内容之外,您还可以使用allFit.R中的COBYLA或subplex优化器:请参阅nloptr?nloptwrap包中有另一个subplex实现:可能还有其他一些我错过了。