I am using R 2.7.0 on a linux platform. I am trying to reproduce a 2002 example using lme from the nlme library. I want to change the otimizer from the default (nlminb) to optim. Specifically, this is what I am trying to do: R> library(nlme) R> library(car) # for data only R> data(Blackmoor) # from car R> Blackmoor$log.exercise <- log(Blackmoor$exercise + 5/60, 2) R> attach(Blackmoor) R> lme(log.exercise ~ I(age - 8)*group, + random = ~ I(age - 8) | subject, + correlation = corCAR1(form = ~ age-8|subject), + data=Blackmoor) Error in lme.formula(log.exercise ~ I(age - 8) * group, random = ~I(age - : nlminb problem, convergence error code = 1 message = iteration limit reached without convergence (9) This converged in the example that I am studying. Help file indicates that "opt the optimizer to be used, either nlminb (the default since (R 2.2.0) or optim (the previous default)." So tried to go back the old optimize that used in the 2002 example, but I do not seem to be able to get there. lmeControl(opt=optim) Error in match.arg(opt) : 'arg' must be NULL or a character vector R> lmeControl(opt="optim") $maxIter [1] 50 ... $opt [1] "optim" ... R> lme(log.exercise ~ I(age - 8)*group, + random = ~ I(age - 8) | subject, + correlation = corCAR1(form = ~ age-8|subject), + data=Blackmoor) Error in lme.formula(log.exercise ~ I(age - 8) * group, random = ~I(age - : nlminb problem, convergence error code = 1 message = iteration limit reached without convergence (9) Seem that the nlminb minimizer is still being. Try setting it in the function call: R> lme(log.exercise ~ I(age - 8)*group, + random = ~ I(age - 8) | subject, + correlation = corCAR1(form = ~ age-8|subject), + opt=optim, + data=Blackmoor) Error in lme(log.exercise ~ I(age - 8) * group, random = ~I(age - 8) | : unused argument(s) (opt = function (par, fn, gr = NULL, ..., method = c("Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN"), lower = -Inf, upper = Inf, control = list(), hessian = FALSE) This does not look like what I want either. Any suggestions appreciated. My thanks in advance, Ron -- R. R. Burns Oceanside, CA
lme(..., control=lmeControl(opt="optim")) Uwe Ron Burns wrote:> I am using R 2.7.0 on a linux platform. I am trying to reproduce a 2002 > example using lme from the nlme library. > I want to change the otimizer from the default (nlminb) to optim. > > Specifically, this is what I am trying to do: > R> library(nlme) > R> library(car) # for data only > R> data(Blackmoor) # from car > R> Blackmoor$log.exercise <- log(Blackmoor$exercise + 5/60, 2) > R> attach(Blackmoor) > > R> lme(log.exercise ~ I(age - 8)*group, > + random = ~ I(age - 8) | subject, > + correlation = corCAR1(form = ~ age-8|subject), > + data=Blackmoor) > Error in lme.formula(log.exercise ~ I(age - 8) * group, random = ~I(age > - : > nlminb problem, convergence error code = 1 > message = iteration limit reached without convergence (9) > > This converged in the example that I am studying. > Help file indicates that > "opt the optimizer to be used, either nlminb (the default > since (R 2.2.0) or optim (the previous default)." > > So tried to go back the old optimize that used in the 2002 example, but > I do not seem to be able to get there. > > lmeControl(opt=optim) > Error in match.arg(opt) : 'arg' must be NULL or a character vector > > > R> lmeControl(opt="optim") > $maxIter > [1] 50 > ... > $opt > [1] "optim" > ... > > R> lme(log.exercise ~ I(age - 8)*group, > + random = ~ I(age - 8) | subject, > + correlation = corCAR1(form = ~ age-8|subject), > + data=Blackmoor) > Error in lme.formula(log.exercise ~ I(age - 8) * group, random = ~I(age > - : > nlminb problem, convergence error code = 1 > message = iteration limit reached without convergence (9) > > Seem that the nlminb minimizer is still being. Try setting it in the > function call: > > R> lme(log.exercise ~ I(age - 8)*group, > + random = ~ I(age - 8) | subject, > + correlation = corCAR1(form = ~ age-8|subject), > + opt=optim, > + data=Blackmoor) > Error in lme(log.exercise ~ I(age - 8) * group, random = ~I(age - 8) | : > unused argument(s) (opt = function (par, fn, gr = NULL, ..., > method = c("Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN"), > lower = -Inf, upper = Inf, control = list(), hessian = FALSE) > > This does not look like what I want either. Any suggestions appreciated. > > My thanks in advance, > > Ron > >