def test_extended_ulh(self): eg = Extended(gaussian) lh = UnbinnedLH(eg, self.data, extended=True, extended_bound=(-20, 20)) minuit = Minuit(lh, mean=4.5, sigma=1.5, N=19000., pedantic=False, print_level=0) minuit.migrad() assert_allclose(minuit.values['N'], 20000, atol=sqrt(20000.)) assert minuit.migrad_ok()
def test_extended_ulh_2(self): eg = Extended(gaussian) lh = UnbinnedLH(eg, self.data, extended=True) minuit = Minuit(lh, mean=4.5, sigma=1.5, N=19000., pedantic=False, print_level=0) minuit.migrad() assert (minuit.migrad_ok()) assert_almost_equal(minuit.values['N'], 20000, delta=sqrt(20000.))
from iminuit import Minuit from probfit import UnbinnedLH, gaussian, Extended from matplotlib import pyplot as plt from numpy.random import randn data = randn(1000) * 2 + 1 ulh = UnbinnedLH(gaussian, data) m = Minuit(ulh, mean=0., sigma=0.5) plt.figure(figsize=(8, 6)) plt.subplot(221) ulh.draw(m) plt.title('Unextended Before') m.migrad() # fit plt.subplot(222) ulh.draw(m) plt.title('Unextended After') #Extended data = randn(2000) * 2 + 1 egauss = Extended(gaussian) ulh = UnbinnedLH(egauss, data, extended=True, extended_bound=(-10., 10.)) m = Minuit(ulh, mean=0., sigma=0.5, N=1800.) plt.subplot(223) ulh.draw(m) plt.title('Extended Before')
# <codecell> #you can define your pdf manually like this def my_gauss(x, mu, sigma): return exp(-0.5*(x-mu)**2/sigma**2)/(sqrt(2*pi)*sigma) # <codecell> #probfit use the same describe magic as iminuit #Build your favorite cost function like this #Notice no RooRealVar etc. It use introspection to #find parameters #the only requirement is that the first argument is #in independent variable the rest are parameters ulh = UnbinnedLH(my_gauss, gdata) describe(ulh) # <codecell> m = Minuit(ulh, mu=0.2, sigma=1.5) m.set_up(0.5) #remember up is 0.5 for likelihood and 1 for chi^2 ulh.show(m) # <codecell> m.migrad(); ulh.show(m) # <markdowncell>
pdf= AddPdfNorm(g0,g1) describe(pdf) # <codecell> seed(0) toydata = gen_toy(pdf, 1000,(-10,10), m0=-2, m1=2, s0=1, s1=1, f_0=0.3, quiet=False) # <codecell> inipars= dict(m0=0, m1=0, s0=1, s1=1, f_0=0.5, error_m0=0.1, error_m1=0.1, error_s0=0.1, error_s1=0.1, error_f_0=0.1) # <codecell> # Normal fit uh1= UnbinnedLH(pdf, toydata) m1= Minuit(uh1, print_level=1, **inipars) m1.migrad(); uh1.draw(); print m1.values # <codecell> # Blind one parameter uh2= UnbinnedLH( BlindFunc(pdf, toblind='m1', seedstring='some_random_stuff', width=0.5, signflip=False), toydata) m2= Minuit(uh2, print_level=1, **inipars) m2.migrad(); uh2.draw(); print m2.values # <codecell>
# ###Fitting # <codecell> from iminuit import Minuit from probfit import UnbinnedLH, gaussian # <codecell> data = randn(10000) hist(data, bins=100, histtype='step') # <codecell> ulh = UnbinnedLH(gaussian, data) ulh.draw(args=dict(mean=1.2, sigma=0.7)) # <codecell> m = Minuit(ulh, mean=1.2, sigma=0.7) # <codecell> m.migrad() # <codecell> print m.values print m.errors ulh.draw(m)
def model(fit_range, bin): nrm_bkg_pdf = Normalized(rename(exp, ['x', 'l%d' % bin]), fit_range) ext_bkg_pdf = Extended(nrm_bkg_pdf, extname='Ncomb_%d' % bin) ext_sig_pdf = Extended(rename(gaussian, ['x', 'm%d' % bin, "sigma%d" % bin]), extname='Nsig_%d' % bin) tot_pdf = AddPdf(ext_bkg_pdf, ext_sig_pdf) print('pdf: {}'.format(describe(tot_pdf))) return tot_pdf fit_range = (2900, 3300) mod_1 = model(fit_range, 1) lik_1 = UnbinnedLH(mod_1, tot_m, extended=True) mod_2 = model(fit_range, 2) lik_2 = UnbinnedLH(mod_2, tot_u, extended=True) sim_lik = SimultaneousFit(lik_1, lik_2) describe(sim_lik) pars = dict(l1=0.002, Ncomb_1=1000, m1=3100, sigma1=10, Nsig_1=1000, l2=0.002, Ncomb_2=1000, m2=3100, sigma2=10, Nsig_2=1000) minuit = Minuit(sim_lik, pedantic=False, print_level=0, **pars) # In[8]: if do_probfit: start = time.time() minuit.migrad()
from iminuit import Minuit from probfit import UnbinnedLH, gaussian, SimultaneousFit, rename from matplotlib import pyplot as plt from numpy.random import randn, seed seed(0) width = 2. data1 = randn(1000) * width + 1 data2 = randn(1000) * width + 2 #two gaussian with shared width pdf1 = rename(gaussian, ('x', 'mu_1', 'sigma')) pdf2 = rename(gaussian, ('x', 'mu_2', 'sigma')) lh1 = UnbinnedLH(pdf1, data1) lh2 = UnbinnedLH(pdf2, data2) simlh = SimultaneousFit(lh1, lh2) m = Minuit(simlh, mu_1=1.2, mu_2=2.2, sigma=1.5) plt.figure(figsize=(8, 3)) plt.subplot(211) simlh.draw(m) plt.suptitle('Before') m.migrad() # fit plt.figure(figsize=(8, 3)) plt.subplot(212) simlh.draw(m)
from iminuit import Minuit from probfit import UnbinnedLH, gaussian, Extended from matplotlib import pyplot as plt from numpy.random import randn data = randn(1000)*2 + 1 ulh = UnbinnedLH(gaussian, data) m = Minuit(ulh, mean=0., sigma=0.5) plt.figure(figsize=(8, 6)) plt.subplot(221) ulh.draw(m) plt.title('Unextended Before') m.migrad() # fit plt.subplot(222) ulh.draw(m) plt.title('Unextended After') #Extended data = randn(2000)*2 + 1 egauss = Extended(gaussian) ulh = UnbinnedLH(egauss, data, extended=True, extended_bound=(-10.,10.)) m = Minuit(ulh, mean=0., sigma=0.5, N=1800.) plt.subplot(223) ulh.draw(m) plt.title('Extended Before')