Recently I have been playing with fitting using ROOT::Fit classes. I came across a ROOT::Fit::FitConfig::SetNormErrors() method. I understood, that it should make the Fitter rescale errors on fit parameters according to
sigma = sigma * sqrt(FCNmin/NDF)
However, I see no difference in results with and without calling the method.
I couldn’t find any information about this method in the RootTalk, Savannah nor SVN log of the root/trunk. Did I understand correctly the effect that it should cause? If so, why it seems not to work?
In principle it should work as you describe. When fitting a TGraph (which has no errors) for example it is used internally to do this. Do you have an example showing this problem ?
Sorry for a late reply, I thought that e-mail notification is set by default in the forum, but it was not. I hope now, I will get your answer soon after you write it
I think, I understood the issue. It seems this method works if one uses Fitter::Fit() and not if one uses Fitter::FitFCN().
In the attachment you can find 2 files. One is written by me, the other is your tutorial macro. In both you can find lines fitter.Config().SetNormErrors(). If you look at the output with this line and commenting it out, you can find out that in my macro SetNormErrors() makes a difference while in yours it does not. The difference is that mine uses Fitter::Fit() while yours uses Fitter::FitFCN(). When I played with it before posting the initial message, I have probably tested it with Fitter::FitFCN()…
Now my question is: am I right?
And another one: is it intentional?
And the final one: if it is intentional, what is the motivation?
test_root_fit.tar.gz (1.9 KB)
Yes, you are right, the normalization of errors work only when you are doing a least square fit, where like in a typical regression problem, you don’t have the point error available. Also the number of degree of freedom is needed for re-normalizing the errors. So, it cannot be done in general for whatever FCN function you are using.
However, I could implement the possibility, if the user specifies that is a chi2 fit, that one could have the errors renormalized.
I should update the documentation about this,