Dear root experts,
I am using Roofit tools to perform a series of four EFT fits. In each fit, I am allowing one Wilson coefficient (parameter of interest) to vary, and set the other three parameters of interest to 0. In addition to this, I have multiple nuisance parameters which are allowed to vary simultaneously.
The fit is performed using RooMinimizer with a negative log-likelihood, with the measurement modelled as a multivariate Gaussian. I have MIGRAD for the minimisation of the likelihood, and the MINOS algorithm for parameter error estimation.
The likelihood minimisation appears to run successfully, but MINOS is seen to fail for the parameter error estimation in a few cases. Error messages of the following form are often observed when the error occurs:
MIGRAD TERMINATED WITHOUT CONVERGENCE.
NEGATIVE MINOS ERROR NOT CALCULATED FOR PARAMETER
The filtered version of the output log, with the print level of RooMinimizer set as 3, is attached below.
filtered_lognew.txt (1.3 MB)
Note that the lines “Minimizing for pulls, with all POIs but ___ fixed at zero” mark the start of the fit for each coefficent.
As a related question, the minimisation is performed using the following snippet of code:
logging.info('doing Migrad')
self.minimizer.migrad()
if minos:
logging.info('doing Minos')
self.minimizer.setEps(1e-2) # Smaller step size for better precision
self.minimizer.setMaxFunctionCalls(10000)
self.minimizer.setStrategy(2)
self.minimizer.minos()
where
self.nll=self.pdf.createNLL(self.dataset)
self.minimizer=RooMinimizer(self.nll)
However, in the output log, I see the following lines:
doing Minos
**********
** 79 **MINOS 1e+04 1
**********
DETERMINATION OF POSITIVE MINOS ERROR FOR PARAMETER 1 CT18nnlo
PARAMETER 1 SET TO -8.265e-02 + 9.066e-01 = 8.239e-01
START MIGRAD MINIMIZATION. STRATEGY 1. CONVERGENCE WHEN EDM .LT. 2.50e-05
This suggests that the strategy and eps change in the above lines do not apply properly. I believe that strategy=2 may help the numerical stability of the fits.
If anyone can help provide me with some insight into why the parameter error estimation isn’t working correctly, then that would be great.
I also see messages such as “RooAbsMinimizerFcn: Minimized function has error status”. Are these related to minos parameter error estimation problems I am seeing?
This error status could result in discontinuities in the negative log-likelihood, resulting from taking the log of 0. This could explain the parameter error estimation issues. How can such “top-level p.d.f evaluates to zero” issues be fixed?
Many
Thanks,
James