Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.soft-sys.math.mathematica > #1325 > unrolled thread

Re: specifying further options to NMinimize method when using NonlinearModelFit

Started byDarren Glosemeyer <darreng@wolfram.com>
First post2011-03-31 09:01 +0000
Last post2011-03-31 09:01 +0000
Articles 1 — 1 participant

Back to article view | Back to comp.soft-sys.math.mathematica


Contents

  Re: specifying further options to NMinimize method when using NonlinearModelFit Darren Glosemeyer <darreng@wolfram.com> - 2011-03-31 09:01 +0000

#1325 — Re: specifying further options to NMinimize method when using NonlinearModelFit

FromDarren Glosemeyer <darreng@wolfram.com>
Date2011-03-31 09:01 +0000
SubjectRe: specifying further options to NMinimize method when using NonlinearModelFit
Message-ID<in1ftf$4hs$1@smc.vnet.net>
On 3/30/2011 4:15 AM, Peter Pein wrote:
> Am 29.03.2011 13:56, schrieb Alex Gittens:
>> I'm using NonlinearModelFit to fit a model with UnitStep statements in it, so my only option seems to be to use the NMinimize method (judging from the errors I get, all the other options seem to need symbolic gradient information).
>>
>> The results are poor, so I'd like to specify that NonlinearModelFit use NMinimize with the Differential Evolution method. How do I go about doing that?
>>
> Hi Alex,
>
> are you sure that NlMFit uses NMinimize? I constructed a hard-to-fit
> example and tried to set different methods for NMinimize; to no avail:
>
> In[1]:= data=Table[{x,Exp[-x]+.1Sin[Pi x]},{x,0,1,1/50}]//N;
> In[2]:= model=a+b/(x+c);
> In[3]:=
> Table[SetOptions[NMinimize,Method->met];NonlinearModelFit[data,model,{a,b,c},x]//Normal,{met,{Automatic,
> "DifferentialEvolution", "NelderMead", "RandomSearch",
> "SimulatedAnnealing"}}]
>
> ... some warnings (each the same) ...
>
> Out[3]= {
>     -7.50222+108.153/(12.7003 +x),
>     -7.50222+108.153/(12.7003 +x),
>     -7.50222+108.153/(12.7003 +x),
>     -7.50222+108.153/(12.7003 +x),
>     -7.50222+108.153/(12.7003 +x)}
>
>
> I see no difference, do you?
>
> Hmm... an Option Method is not documented for NlMFit under "Options".
> But who will give up as soon? Using Method->"foo" will give the possible
> valuses for NlMNFit:
>
> using
>
> In[6]:= Table[
>    NonlinearModelFit[data, model, {a, b, c}, x, Method ->  met] //
>     Normal, {met, {Automatic, "Gradient", "ConjugateGradient",
>      "InteriorPoint", "QuasiNewton", "Newton", "NMinimize",
>      "LevenbergMarquardt"}}]
>
> ...some warnings ...
>
> Out[6]= {
>     -7.50222 + 108.153/(12.7003 + x),
>     -3.58119 + 29.3825/( 6.38402 + x),
>     -1.13263 + 5.36751/(2.46604 + x),
>      2.02043 - 172.578/(129.759 + x),
>     -3.16362 + 24.1187/(5.76332 + x),
>     -5.39831 + 59.8129/(9.32438 + x),
>     -15.3664 + 414.781/(25.3272 + x),
>      -7.50222 + 108.153/(12.7003 + x)}
>
> gives us a broader range to choose of :-)
>
> Whatever fits your needs best...
>
> Peter
>

The version 8 docs for NonlinearModelFit now state:

"Possible settings for Method include "ConjugateGradient", "Gradient", 
"LevenbergMarquardt", "Newton", "NMinimize", and "QuasiNewton", with the 
default being Automatic."


That note was absent in version 7, though, so perhaps you were looking 
in the version 7 docs.

It does not use NMinimize by default, but use of NMinimize can be set 
optionally. Options to NMinimize can be passed in as suboptions to the 
Method option, e.g.

NonlinearModelFit[data, model, {a, b, c}, x,  Method -> {"NMinimize", 
Method -> "DifferentialEvolution"}]

I seem to recall that there were some issues with processing when Method 
was set to "NMinimize" in version 7, but those should all be 
straightened out in version 8.

Darren Glosemeyer
Wolfram Research

[toc] | [standalone]


Back to top | Article view | comp.soft-sys.math.mathematica


csiph-web