MathGroup Archive 1995

[Date Index] [Thread Index] [Author Index]

Search the Archive

Precision & Accuracy: SUMMARY


I posted a question yesterday regarding the difference between Accuracy[] 
and Precision[] in Mathematica.  I had two different but interesting 
replies, which I summarise below.  To solve my problem, though, I 
eventually delved into the package NonlinearFit.m to see how the Pro's did 
it: I'll also mention my findings about this here.

The first answer provided an analogy with playing darts.  Accuracy 
implies that the average position of the darts is near the bull's eye, 
although their variance can be quite high, whereas Precision implies that 
all the darts hit the same place, but this may be nowhere near the bull's 
eye.  That is, Accuracy=Unbiased answer, Precision=Low Variance answer.  

The second answer provided a useful example of where the Accuracy and 
Precision of a number vary:
 Accuracy[1.00000000000000000001 * 10^-5]        = 25
 Precision[1.00000000000000000001 * 10^-5]       = 20

I was still left wondering how this could be applied when optimising a 
function.  What is the difference between the accuracy of my optimisation 
and its precision?   I had a delve into the code of NonlinearFit.m, and 
found the answer.  When trying to minimise a cost function (NonlinearFit 
uses the Chi squared function), the function satisfies the accuracy 
constraint if:
	0 <= chisq-newchi < (10^-AccuracyGoal)
but satisfies the precision constraint if:
	0 <= chisq-newchi < newchi*(10^-PrecisionGoal)
where chisq is the value of the cost function at the last iteration, and 
newchi is the value of the cost function at the current iteration.

Thus AccuracyGoal specifies that the algorithm be declared converged when
the _absolute_ difference in the cost function is less than a certain
threshold, whereas PrecisionGoal specifies that the algorithm be declared
converged when the _proportional_ change in the cost function is less 
than a specified threshold.

*** TWO WARNINGS ABOUT NonlinearFit.m ***

1.	Whilst looking at the code for NonlinearFit, I noticed that the
default values for AccuracyGoal and PrecisionGoal are:
	AccuracyGoal -> 1
	PrecisionGoal -> 3
rather than
	AccuracyGoal -> $MachinePrecision-10
	PrecisionGoal -> $MachinePrecision-10
as stated in the "Guide to Standard Mathematica Packages V2.2".  Thus 
results may be considerably less precise than you expect!

2.	Be wary of the message "NonlinearFit::lmpnocon" which warns that the
values of the parameters do not appear to have converged.  The algorithm
produces this warning if the difference between the previous value of a
parameter and its new value is greater than 1 (for any of the parameters),
at the end of the calculation.  It will thus be _highly_ dependent on the
units of the parameters you are fitting!  Be warned! 

Paul E Howland                         

Long Range Ground Radar Systems Section               tel. +44 (0)1684 895767
CSS2 Division, Room BY209                             fax. +44 (0)1684 896315
Defence Research Agency                           email: PEHOWLAND at DRA.HMG.GB 
Malvern, Worcs, WR14 3PS, UK.                      

  • Prev by Date: Re: FFT
  • Next by Date: Re: Calling functions before loading the package
  • Previous by thread: Default methods within Mathematica
  • Next by thread: Summary of responses to Softball Fourier Question