RE: Use of ShowProgress Option output
- To: mathgroup at smc.vnet.net
- Subject: [mg34799] RE: [mg34783] Use of ShowProgress Option output
- From: "Annetts, Dave (E&M, North Ryde)" <David.Annetts at csiro.au>
- Date: Fri, 7 Jun 2002 01:09:04 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Hi Andre,
> ... may be my question was not clear in detail, but I realy
> can't find a
> solution.
> I will show you an example from the help browswer to
> ilustrate my problem.
>
>
> data={{1.0,1.0,.126},{2.0,1.0,.219},{1.0,2.0,.076},{2.0,
> 2.0,.126},{.1,.0,.186}};
>
> NonlinearRegress[data,
> theta1 theta3 x1/(1+theta1 x1+theta2
> x2),{x1,x2},{theta1,theta2,theta3},
> RegressionReport->BestFitParameters,ShowProgress->True]
In essence, you want to retain the values of Chi^2 and your model
parameters?
Short of modifying the code in the package, I don't see how NonlinearRegress
is going to give you this so you'll need to do things "manually".
The idea is to loop, and append the results of each fit to a list which you
can plot.
Something like the following block should get you started.
diff[chsq_, csqo_] := 100. * Abs[chsq - csqo]/chsq;
Off[FindMinimum::fmlim];
prog = {};
csqo = 1.;
i = 0;
{ith1, ith2, ith3} = {1., 1., 1.};
While[diff[chsq, csqo] > 1.,
tmp = NonlinearRegress[data, th1 th3 x1 /(1 + th1 x1 + th2 x2),
{x1, x2},
{{th1, ith1}, {th2, ith2}, {th3, ith3}},
RegressionReport -> {FitResiduals, BestFitParameters},
MaxIterations -> 1
] ;
i += 1;
csqo = chsq;
chsq = #^2 & /@ (FitResiduals /. tmp);
chsq = Apply[Plus, chsq];
Print["it = ", i, " ", chsq, " ", csqo, " ", diff[chsq, csqo],
" ", {ith1, ith2, ith3} ];
ith1 = th1 /. (BestFitParameters /. tmp);
ith2 = th2 /. (BestFitParameters /. tmp);
ith3 = th3 /. (BestFitParameters /. tmp);
lst = {chsq, {BestFitParameters /. tmp}};
prog = AppendTo[prog, lst];
]
Points to note are:-
1. The code is in no sense elegant or efficient -- I recall something
like this using FindMinimum in a FAQ on WRI's site so you may want to search
there further;
2. For a given tolerance, altering MaxIterations gives you multiple
"bites" per step -- at 1, convergence is in 29 its but at 2, convergence is
in 5 steps.;
3. Convergence rates are dependent upon both the definition of "diff"
and the tolerance;
Regards,
Dave.
--------------------------------------------------------
Dr. David Annetts EM Modelling Analyst
Tel: (+612) 9490 5416 CSIRO DEM, North Ryde
Fax: (+612) 9490 5467 David.Annetts at csiro.au
Include "usual_disclaimers"
--------------------------------------------------------