Unstable solutions to NonlinearFit
- To: mathgroup at smc.vnet.net
- Subject: [mg32418] Unstable solutions to NonlinearFit
- From: ashcroft at remss.com (Peter Ashcroft)
- Date: Sat, 19 Jan 2002 01:17:18 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
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.