Hi all,
to determine a significance, I compare the NLL differences for both, my nominal model and a null hypothesis (i.e. the nominal model with N_sig forced to be zero). Unfortunately, this only includes the uncertainties from the fit itself (statistical uncertaintes). I now want to determine a significance, where both uncertainties are included, the statistical and systematic one. What I read is that this could be accomplished by convoluting the likelihood with a Gaussian function, with the width being the relative systematic uncertainty.
Here is a toy example of my mass model:
val_mean = 5366
val_sigma = 20
val_lambda = -0.001
val_nsig = 30
val_nbkg = 40
obs_mass = ROOT.RooRealVar('obs_mass', 'obs_mass', 5000, 5600)
par_mean = ROOT.RooRealVar('par_mean', 'par_mean', val_mean, 5300, 5400)
par_sigma = ROOT.RooRealVar('par_sigma', 'par_sigma', val_sigma, 10, 30)
par_lambda = ROOT.RooRealVar('par_lambda', 'par_lambda', val_lambda, -0.001, 0)
par_nsig = ROOT.RooRealVar('par_nsig', 'par_nsig', val_nsig, 0, 100)
par_nbkg = ROOT.RooRealVar('par_nbkg', 'par_nbkg', val_nbkg, 0, 1000)
# Signal model
pdf_gaus = ROOT.RooGaussian(
'pdf_gaus', 'pdf_gaus', obs_mass, par_mean, par_sigma
)
# Background model
pdf_exp = ROOT.RooExponential(
'pdf_exp', 'pdf_exp', obs_mass, par_lambda
)
pdf_combined = ROOT.RooAddPdf(
'pdf_combined', 'pdf_combined',
ROOT.RooArgList(pdf_gaus, pdf_exp), ROOT.RooArgList(par_nsig, par_nbkg)
)
data = pdf_combined.generate(ROOT.RooArgSet(obs_mass), val_nsig + val_nbkg)
I know that I am able to receive the NLL via pdf_combined.createNLL(data)
:
nll = pdf_combined.createNLL(data)
minuit = ROOT.RooMinuit(pdf_nll)
minuit.migrad()
fitres_minuit = minuit.save()
So is there a convenient way to manipulated the likelihood (or NLL)?
Thanks in advance,
Timon
P.S.: Basically the same question was asked about 10 years ago (Likelihood distribution). But like shencp, I do not really understand the answer Wouter provided. Is multiplying a Gaussian to the PDF the same as convolving the likelihood with a Gaussian?