TF1 Parameter Errors too large

Hello,
I’m using a TMultiGraph made of several TGraphErrors and I’ve fitted it with a TF1 user defined function: [0]+[1]*x[0]^[2].
The initial fit wasn’t working but after I’ve limited [1] and [2] I’ve got a fit function which works perfectly good, the ratio to data being almost 1.

Now, my problem is that even if the fit works this good, the fit parameters have quite large errors and the offset [0] isn’t corresponding to data points.

This is what I get:

 FCN=3.11353 FROM MIGRAD    STATUS=CONVERGED     190 CALLS         191 TOTAL
                     EDM=1.07763e-06    STRATEGY= 1      ERROR MATRIX ACCURATE 
  EXT PARAMETER                                   STEP         FIRST   
  NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE 
   1  p0          -2.09829e-01   8.02080e-01   9.57594e-06  -1.12207e-01
   2  p1           5.83547e-01   6.93479e-01   3.13843e-06  -3.83076e-01
   3  p2           5.49078e-01   4.21060e-01   4.47777e-06  -2.98546e-01
Also, another big problem is this:
 PARAMETER  CORRELATION COEFFICIENTS  
       NO.  GLOBAL      1      2      3
        1  0.99993   1.000 -0.999  0.997
        2  0.99997  -0.999  1.000 -0.999
        3  0.99986   0.997 -0.999  1.000

What should I do in this case for better estimation of the parameters and of their errors?
I’ve understood that it is possible that the fit function doesn’t take into account the errors on X, but I haven’t found a solid answer in other posts.

Thank you in advance,
Ailema

You need to attach your TMultiGraph here. Try something like: yourmultigraph->SaveAs("MyMultiGraph.C");

Please find attached the part of the program which contains the fit.
Thanks.
MyMultiGraph.C (2.3 KB)

Hi,

The problem is that your data points error are probably too large. They are not reflecting a real normal uncertainty in the data points.
This you can see from the obtained chi2 from the fit.
One possibility is to normalise the error with the obtained chi2. This can be done by doing:

auto r = mg->Fit("fit", "S", "m",x3[7], x2[0]);
   r->NormalizeErrors();
   r->Print();

In addition, the fit function is maybe not appropriate, for this you get very large correlations in the parameters. Probably a simple linear fit is sufficient for your data points

Lorenzo

Thanks a lot :smiley:

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.