I realise that technically this may be a Minuit problem, but I thought someone might be able to offer some advice. I have a model with 11 parameters (8 of which are fixed), which I have implemented as a TF1. When I try to fit this model to a TGraph, the fitter works for some time, then terminates with the following error:
[quote]Warning in : Abnormal termination of minimization.
THERE ARE CURRENTLY NO PARAMETERS DEFINED[/quote]
and if I attempt to access the parameter errors thereafter I get:
If I draw the function, it appears to have fit the data and the Chi-squared value <~ 1. Does anyone know what might cause Minuit exit with this error? How might I go about fixing it?
I’m particularly confused by the “THERE ARE CURRENTLY NO PARAMETERS DEFINED”, because there are clearly three variables defined.
It is maybe a problem with the function and the parameter definition.
Can you please send a running script reproducing this problem ?
Or, if this is not easy possible, could you please fit the verbose (“V”) option and then send the output of the fit.
Unfortunately the model relies on several custom classes so a simple script is not feasible. However I have attached the verbose fitting output. Hopefully the answer is there.
fit_output.txt (14.5 KB)
thank you for the log.
The fit does not converge to the minimum because maybe you end up in a region where the hessian is not positive defined. Try to start with different parameter values, or maybe you might have a problem with your function.
Concerning confusing the print error you are getting, this is fixed if you use the latest version of ROOT (5.21.06). However, moving to the new version will not be sufficient to have your fit converging to the right minimum.
Just to clarify, by “wrong with my function” do you mean it may be discontinuous or contain singularities in terms of the parameters? If not, what criteria should I ensure my function fulfils? What is indicated by non-positive definiteness of the Hessian? As you can tell I’m not really expert in fitting algorithms!
The problem with the function is probably due its derivatives, which are calculated numerically by Minuit. It could be a numerical error or maybe a problem in your implementation.
Since you are fitting a TGraph, I would check first the function with your data , if you get what you expect and if you are not too far away at the beginning from the data.
The non-positive definiteness of the hessian (second derivative matrix) is shown in the log by some warning in Minuit when running HESSE at the end (some diagonal element are negative).
In a minimum the matrix must be positive defined (it is like a parabola).
Are you fitting a TGraphErrors ? A possible problem could come from the errors, especially in in X. I would try eventually to set the X errors to zero, and be sure that errors in Y are not too small.