用lme4设置rhoend参数

时间:2014-11-12 15:28:43

标签: r lme4 mixed-models

我正在使用lmer运行verbose = 2L模型,如下面的简单示例所示:

library(lme4)
myData <- data.frame(Y = rnorm(100), 
                     Group = sample(LETTERS[1:2], 100, replace = TRUE))
LMER <- lmer(Y ~ (1 | Group), data = myData, verbose = 2L)

详细输出如下所示:

npt = 3 , n =  1 
rhobeg =  0.2 , rhoend =  2e-07 
   0.020:   6:      293.717;0.200000 
  0.0020:   8:      293.684;0.166601 
 0.00020:  12:      293.683;0.160047 
 2.0e-05:  14:      293.683;0.160260 
 2.0e-06:  15:      293.683;0.160260 
 2.0e-07:  17:      293.683;0.160254 
At return
 20:     293.68311: 0.160254

我想更改rhoend参数,以减少拟合所需的时间,大概是以不太精确的估算为代价。

如何重新编写lmer()调用以更改rhoend参数?

1 个答案:

答案 0 :(得分:3)

像这样:

请参阅?lmerControl:您需要将rhoend设置放在名为optCtrl的列表中,以便传递给优化程序。

LMER2 <- lmer(Y ~ (1 | Group), data = myData, 
  verbose = 2L, control=lmerControl(optCtrl=list(rhoend=1e-5)))
npt = 3 , n =  1 
rhobeg =  0.03090896 , rhoend =  1e-05 
start par. =  0.1545448 fn =  314.382 
rho:   0.0031 eval:   3 fn:      314.382 par:0.154545 
rho:  0.00031 eval:   5 fn:      314.380 par:0.165471 
rho:  5.6e-05 eval:   7 fn:      314.380 par:0.164620 
rho:  1.0e-05 eval:   9 fn:      314.380 par:0.164573 
At return
eval:  10 fn:      314.37951 par: 0.164571

您还可以考虑在control=lmerControl(optimizer="nloptwrap")的最新版本(1.1-7)中使用lme4 - 默认情况下,它使用BOBYQA优化器的不同实现。请参阅?nloptwrap中的示例,了解您可以更改参数(xtol_abs)或响应(ftol_abs)更改的容差。 nloptwrap的默认容差比默认优化程序的默认容差更温和(=更快的运行时间)。

顺便说一句,我的答案与你的答案完全不同,因为我们选择了不同的随机数。最好使用set.seed(101)(或您选择的其他任意整数)来重现。