我正在使用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
参数?
答案 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)
(或您选择的其他任意整数)来重现。