lmer的替代优化算法

maj*_*jom 2 optimization r lme4 mixed-models

该功能lmerlme4包使用默认情况下bobyqaminqa包作为优化算法.

根据以下帖子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"))
Run Code Online (Sandbox Code Playgroud)

Ben*_*ker 6

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

可以使用任何允许框约束的最小化函数

(1)获取输入参数'fn'(要优化的函数),'par'(起始参数值),'lower'(下界)和'control'(控制参数,从'control'参数传递)和

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

b在"bobyqa"的开始代表"结合的"(如在约束),我假定u在其它算法类似地代表"无约束".您可以查看此文件中的某些机制,以便(重新)使用一堆不同的优化器来匹配相同的模型:

allFit <- system.file("utils", "allFit.R", package="lme4")
file.show(allFit)
Run Code Online (Sandbox Code Playgroud)

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

  • BOBYQA(minqanloptr包实现)
  • 内尔德-米德(lme4,nloptr,和dfoptim包实现)
  • nlminb 来自基地R(来自贝尔实验室PORT图书馆)
  • L-BFGS-B从基地R经过optimx(Broyden-Fletcher-Goldfarb-Shanno,途经纳什)

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