r - lmer 的替代优化算法

标签 r optimization lme4 mixed-models

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

根据以下帖子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"))

最佳答案

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

Any minimizing function that allows box constraints can be used provided that it

(1) takes input parameters ‘fn’ (function to be optimized), ‘par’ (starting parameter values), ‘lower’ (lower bounds) and ‘control’ (control parameters, passed through from the ‘control’ argument) and

(2) returns a list with (at least) elements ‘par’ (best-fit parameters), ‘fval’ (best-fit function value), ‘conv’ (convergence code, equal to zero for successful convergence) and (optionally) ‘message’ (informational message, or explanation of convergence failure).

“bobyqa”开头的b代表“bound”(如constrained),我假设其他算法中的u同样代表“unconstrained” ”。您可以查看此文件以了解一些机器(重新)使用一堆不同的优化器来拟契约(Contract)一模型:

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

我目前知道的所有优化器列表允许框约束并且不需要指定显式梯度函数(中的大多数边界约束优化器都需要) optimx 包),如上文件所示,是

  • BOBYQA(minqanloptr 包实现)
  • Nelder-Mead(lme4nloptrdfoptim 包实现)
  • nlminb 来自 base R(来自贝尔实验室 PORT 库)
  • L-BFGS-B 来自 base R,通过 optimx(Broyden-Fletcher-Goldfarb-Shanno,通过 Nash)

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

关于r - lmer 的替代优化算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25142457/

相关文章:

r - 如何从 lme4 获得随机效应(BLUPs/条件模式)的协方差矩阵

r - 汇集估算数据集的 glmers

r - R Plyr 包中变量前的点(即 "variables")的目的是什么?

读取存储在 HDF5 中的数据帧

R:比这个for循环更有效的解决方案

c++ - 使用指向成员的指针数组或开关更好吗?

r - 如何同时提取列表的不同元素

java - Java中 "for"语句每次循环都计算循环条件吗?

debugging - 如何关闭 Clang++ 中的_所有_优化?