Re: Unstable solutions to NonlinearFit
- To: mathgroup at smc.vnet.net
- Subject: [mg32443] Re: Unstable solutions to NonlinearFit
- From: adam.smith at hillsdale.edu (Adam Smith)
- Date: Mon, 21 Jan 2002 02:54:55 -0500 (EST)
- References: <a2b4lp$ljd$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Without having your data sets to work with it is difficult to give
specific details. But what you describe is a common topic when
working with nonlinear fits.
My first hint would be to look at your initial "guesses" for the
parameters. In your case these are: {{b, -1}, {c, -1}, {d, -1}, {f,
-1}}. By examining a data set can you give mathematica starting
parameters that are nearer to what gives you a reasonable fit. If
your initial guesses are far from the "correct" values the code may be
getting stuck in a local minimum that is far from the best solution.
ANother thing to try. In your function Exp[b r1^2] + Exp[c + d r1] +
10^f, I would avoid the 10^f. Such a term means that small changes
in f will result in very large changes in the "constant" term. This
can cause difficulties in nonlinear fits. You might try replacing it
by a simple constant say g, let Mathematica do the fit then convert g
into your paramter f at the end via f = Log[g].
In a similar manner. Exp[c + d r1] can be rewritten as Exp[c]Exp[d
r1].
Have a new parameter say "amp" = Exp[c] then fit to:
Exp[b r1^2] + amp*Exp[d r1] + g.
I won't promise this will work. But it is worth a try. My experience
is that you sometimes have to play around with nonlinear fits and see
what happens.
Adam
ashcroft at remss.com (Peter Ashcroft) wrote in message news:<a2b4lp$ljd$1 at smc.vnet.net>...
> I'm having trouble using the NonlinearFit function to
> find the best fit for some data. I get answers, but
> in some cases they appear nonsensical. Also, I notice
> that the Confidence Intervals are *very* large for some
> of the parameters.
>
> The data in question describes antenna gain patterns, and
> has a very large dynamic range. I suspect that this large
> range of data values (from 10^-8 to 1) is the reason that
> some of the parameters are estimated so badly.
>
> Simply looking at a plot of the data on a logarithmic
> scale suggests that it could be fit well by something of
> the form: Exp[b r1^2] + Exp[c + d r1] + 10^f
>
> (In other words, the data has an Exp[b r1^2] part for
> small values of r1, a slowly diminishing Exp[c + d r1]
> part for larger values of r1, and eventually plateaus
> at some constant positive value.)
>
> Here's an example where the fit doesn't turn out so well,
> (as judged by a plot of the fit on a logarithmic scale,
> and the confidence intervals that are very large).
>
> NonlinearRegress[linearvpairs,
> Exp[b r1^2] + Exp[c + d r1] +
> 10^f, {r1}, {{b, -1}, {c, -1}, {d, -1}, {f, -1}},
> RegressionReport -> {BestFit, AsymptoticCorrelationMatrix,
> ParameterCITable}]
>
> BestFit ->
> 3.649189*10^-9 + E^(-16.209103 - 4.15162 r1) + E^(-4.106467 r1^2)
>
> ParameterCITable-> Estimate Asymptotic SE CI
> b -4.1064 0.0139 -4.13384,-4.0790
> c -16.209 30903.73 -60595.3,60562.8
> d -4.1516 236105.04 -462829.,462821.
> f -8.4378 5643.3565 -11070.8,11053.9
>
> Note that "b" has a tight cinfidence interval, but the others
> are extremely large.
>
> Here's another example that's even more pathological. I don't
> know what subtlety of the data differentiates this case from the
> one above. (All the data sets look fairly similar on visual
> inspection.)
>
> NonlinearRegress[linearhpairs,
> Exp[b r1^2] + Exp[c + d r1] +
> 10^f, {r1}, {{b, -1}, {c, -1}, {d, -1}, {f, -1}},
> RegressionReport -> {BestFit}]
>
> BestFit ->
> 3.772468*10^-313 + E^(-3.974 r1^2) + E^(-22.626 + 1.698 r1)
>
> Note the 10^-313! I couldn't even compute the confidence
> intervals in this case.
>
> I know that I could get much better behaved fits if I
> fitted to the logarithm of the data rather than the
> data itself, but I would prefer to fit to the data
> directly if possible. (Reasoning that what I want to
> minimize is the sum of the squared error in power
> rather than the squared error in log of the power.)
>
> Does anyone have any suggestions for how I might set
> the NonlinearFit options in order to get more stable
> results? Thanks.