I’m using TFitter to solve a likelihood fit: 5000 evts and 23 parameters, minuit use MIGRAD with method 2.
Some times the fit doesn’t reach the convergence returning the status FAILED and the internel code 4.
In these case is possible the fitter do 2 or 3 interaction in which shows the partial results, the result are very close, the FCN value is the same, within the precision of the print-out, and EDM decrease. After these interaction can happen that the EDM continues to decrease or can increase a bit. When the last condition occurs the fit end, not ever, without reaching the convergence with error value 4.
Confronting a failed fit with another on the same data the final parameter and their resolutions are the same very close, almost the same.
Anybody can explain me why this happens?
I suspect a problem with the numerical derivatives calculated by Minuit. Probably the numerical error is larger than your required tolerance and the minimization oscillates around the minimum. A solution would probably be to increase the tolerance, TFitter::SetPrecision(). The default value is rather small, 1E-6.
However, what message do you get? A return status = 4 indicates only that MIGRAD did not converge, but normally (if you increase the print level) you should get an error message.
I will try to improve the precision of TFitter. I also require a precision of 1e-4 for the fit: can be a to low value? is probabli a standard 1e-3 enough?
I will run again the fit increasing the verbosity and followig your suggestions.
PS I don’t remember exactly the message but smetimes I received a message like “MIGRAD FAILS FIND FURTHER IMPROVEMENTS”. After this message Miniut continue to evaluate or said that have reached the convergence, verifying then it.
Remember that the actual value used, i.t. when the minimization will stop,
is when the estimated vertical distance to the minimum (EDM) is less than 0.001*[tolerance]*UP (see SET ERR).
I think a tolerance value of 0.1 or even 1 is probably fine.
I ran the fit again increasing the debug. A summary of the output that I received is attached to this post, I cutted some part but I think the important messages are within the log.
In the previous message I used the some name for 2 differents stuffs: I eqruest for a tolerance=.1 and a precision 1e-9, begore I left the precision to the standard value of 1e-6.
Thanks for any further suggestion and help.
fit.txt (4.35 KB)
I would use a tolerance of 1 and do a MINOS error analysis at the end.
I guess you are suffering from numerical errors in your likelihood normalization. Are you calculating a numerical integral ? If this is the case you can maybe increase the precision of the numerical integration.
In addition I would probably use strategy 1. I think strategy 2 is not worth if you have large numerical errors.