In [1]:
%matplotlib inline
In [2]:
from pprint import pprint
import datetime
import pymc
import numpy as np
import spacepy.plot as spp # for the style
import matplotlib.pyplot as plt
import spacepy.toolbox as tb
import spacepy.plot as spp
In [3]:
print(datetime.datetime.now())
In [4]:
# test data
case = {
'a':[31., 1., 1.],
'b':[60.,20.,1.],
'c':[60.,1.,1/30],
'd':[60.,3000., 100.],
'e':[170.,172.,1.]
}
In [5]:
for c in sorted(case.keys()):
#priors
s = pymc.Uniform('s', 0.0, 1e4)
bkg = pymc.Uniform('bkg', 0, 1e4)
# model
obstot = pymc.Poisson('obstot', s+bkg/case[c][2], observed=True, value=case[c][0])
obsbkg = pymc.Poisson('obsbkg', bkg, observed=True, value=case[c][1])
model = pymc.MCMC((s, bkg, obstot, obsbkg))
model.sample(50000, 1000, burn_till_tuned=True, thin=20, progress_bar=False)
print('{0} {1:.2} {2:.2} {3:.2} {4:.2} +/- {5:.2} {6:.2} +/- {7:.2}'.format(c,
case[c][0],
case[c][1],
case[c][2],
bkg.stats()['mean']*case[c][2],
bkg.stats()['standard deviation']*case[c][2],
s.stats()['mean'],
s.stats()['standard deviation'],
))
In [6]:
pymc.Matplot.plot(model)
In [7]:
from matplotlib.colors import LogNorm
_ = spp.plt.hist2d(s.trace()[:], bkg.trace()[:], bins=50, normed=True, norm=LogNorm(), vmin=1e-4, vmax=1e-2)
spp.plt.colorbar()
Out[7]:
In [ ]: