Dear list, Here's a suggestion about the different optimization code. There are several optimization procedures in the base package (optim, optimize, nlm, nlminb, ..). However, the output of these functions are slightly different. For instance, 1. optim returns a list with arguments par (the estimates), value the minimum (maxima) of the objective function, convergence (optim .convergence) 2. optimize returns a list with arguments minimum (or maximum) giving the estimates, objective the value of the obj. function 3. nlm returns a list with arguments minimum giving the minimum of the obj. function, minimum the estimates, code the optim. convergence 4. nlminb returns a list with arguments par (the estimates), objective, convergence (conv. code), evaluations Furthermore, optim keeps the names of the parameters while nlm, nlminb don't. s I believe it would be nice if all these optimizers have a kind of homogenized output. This will help in writing functions that can call different optimizers. Obviously, we can write our own function that homogenized the output after calling the optimizer, but I still believe this will be more user-friendly. Do you think this is a reasonable feature to implement - despite it isn't an important point? Best, Mathieu * BTW, if this is relevant, I could try to do it. -- Institute of Mathematics Ecole Polytechnique F?d?rale de Lausanne STAT-IMA-FSB-EPFL, Station 8 CH-1015 Lausanne Switzerland http://stat.epfl.ch/ Tel: + 41 (0)21 693 7907
On 8/8/2008 8:56 AM, Mathieu Ribatet wrote:> Dear list, > > Here's a suggestion about the different optimization code. There are > several optimization procedures in the base package (optim, optimize, > nlm, nlminb, ..). However, the output of these functions are slightly > different. For instance, > > 1. optim returns a list with arguments par (the estimates), value the > minimum (maxima) of the objective function, convergence (optim > .convergence) > 2. optimize returns a list with arguments minimum (or maximum) giving > the estimates, objective the value of the obj. function > 3. nlm returns a list with arguments minimum giving the minimum of > the obj. function, minimum the estimates, code the optim. convergence > 4. nlminb returns a list with arguments par (the estimates), > objective, convergence (conv. code), evaluations > > Furthermore, optim keeps the names of the parameters while nlm, nlminb > don't. > s > I believe it would be nice if all these optimizers have a kind of > homogenized output. This will help in writing functions that can call > different optimizers. Obviously, we can write our own function that > homogenized the output after calling the optimizer, but I still believe > this will be more user-friendly.Unfortunately, changing the names within the return value would break a lot of existing uses of those functions. Writing a wrapper to homogenize the output is probably the right thing to do. Duncan Murdoch> Do you think this is a reasonable feature to implement - despite it > isn't an important point? > Best, > Mathieu > > * BTW, if this is relevant, I could try to do it.
On Fri, 8 Aug 2008, Mathieu Ribatet wrote:> Dear list, > > Here's a suggestion about the different optimization code. There are several > optimization procedures in the base package (optim, optimize, nlm, nlminb, > ..). However, the output of these functions are slightly different. For > instance, > > 1. optim returns a list with arguments par (the estimates), value the > minimum (maxima) of the objective function, convergence (optim > .convergence) > 2. optimize returns a list with arguments minimum (or maximum) giving > the estimates, objective the value of the obj. function > 3. nlm returns a list with arguments minimum giving the minimum of > the obj. function, minimum the estimates, code the optim. convergence > 4. nlminb returns a list with arguments par (the estimates), > objective, convergence (conv. code), evaluations > > Furthermore, optim keeps the names of the parameters while nlm, nlminb don't. > s > I believe it would be nice if all these optimizers have a kind of homogenized > output. This will help in writing functions that can call different > optimizers. Obviously, we can write our own function that homogenized the > output after calling the optimizer, but I still believe this will be more > user-friendly. > > Do you think this is a reasonable feature to implement - despite it isn't an > important point?This would be essentially impossible without breaking most existing code, and in the case of optimize() and nlminb() that goes back many years to uses in S(-PLUS).> Best, > Mathieu > > * BTW, if this is relevant, I could try to do it. > > -- > Institute of Mathematics > Ecole Polytechnique F?d?rale de Lausanne > STAT-IMA-FSB-EPFL, Station 8 > CH-1015 Lausanne Switzerland > http://stat.epfl.ch/ > Tel: + 41 (0)21 693 7907 > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595