e@0: # -*- coding: utf-8 -*- e@0: """ e@0: Created on Thu May 28 13:02:25 2015 e@0: e@0: @author: mmxgn e@0: """ e@0: e@0: from pymc import DiscreteUniform, Exponential, deterministic, Poisson, Uniform e@0: e@0: import numpy as np e@0: e@0: disasters_array = \ e@0: np.array([ 4, 5, 4, 0, 1, 4, 3, 4, 0, 6, 3, 3, 4, 0, 2, 6, e@0: 3, 3, 5, 4, 5, 3, 1, 4, 4, 1, 5, 5, 3, 4, 2, 5, e@0: 2, 2, 3, 4, 2, 1, 3, 2, 2, 1, 1, 1, 1, 3, 0, 0, e@0: 1, 0, 1, 1, 0, 0, 3, 1, 0, 3, 2, 2, 0, 1, 1, 1, e@0: 0, 1, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 1, 1, 0, 2, e@0: 3, 3, 1, 1, 2, 1, 1, 1, 1, 2, 4, 2, 0, 0, 1, 4, e@0: 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1]) e@0: e@0: switchpoint = DiscreteUniform('switchpoint', lower=0, upper=110, doc='Switchpoint[year]') e@0: e@0: early_mean = Exponential('early_mean', beta=1.) e@0: late_mean = Exponential('late_mean', beta=1.) e@0: e@0: e@0: @deterministic(plot=False) e@0: def rate(s=switchpoint, e=early_mean, l=late_mean): e@0: ''' Concatenate Poisson means ''' e@0: out = np.empty(len(disasters_array)) e@0: out[:s] = e e@0: out[s:] = l e@0: return out e@0: e@0: e@0: disasters = Poisson('disasters', mu=rate, value=disasters_array, observed=True)