@aloctavodia
You mean like this?
with pm.Model() as model:
alpha = pm.Gamma('alpha', 1,1)
beta = pm.Beta('beta', 1, alpha, shape=K)
w = pm.Deterministic('w', stick_breaking(beta))
#a = pm.Uniform('a', 0, 50, shape=K)
#b = pm.Uniform('b', 0, 50, shape=K)
mu = pm.Uniform('mu', 0, 50, shape=K)
bp = pm.Bound(pm.Poisson, lower=1).dist( mu=mu)
#x = pm.Mixture('obs', w, pm.Poisson.dist(mu), observed=df['x1'].values)
x = pm.Mixture('obs', w, bp, observed=df['x1'].values)
I get the following error:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
C:\Anaconda3\envs\stpy35\lib\site-packages\pymc3\distributions\mixture.py in _comp_modes(self)
95 try:
---> 96 return tt.as_tensor_variable(self.comp_dists.mode)
97 except AttributeError:
AttributeError: '_DiscreteBounded' object has no attribute 'mode'
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call last)
<ipython-input-15-811a1e7927a9> in <module>()
9 bp = pm.Bound(pm.Poisson, lower=1).dist( mu=mu)
10 #x = pm.Mixture('obs', w, pm.Poisson.dist(mu), observed=df['x1'].values)
---> 11 x = pm.Mixture('obs', w, bp, observed=df['x1'].values)
C:\Anaconda3\envs\stpy35\lib\site-packages\pymc3\distributions\distribution.py in __new__(cls, name, *args, **kwargs)
34 raise TypeError("observed needs to be data but got: {}".format(type(data)))
35 total_size = kwargs.pop('total_size', None)
---> 36 dist = cls.dist(*args, **kwargs)
37 return model.Var(name, dist, data, total_size)
38 else:
C:\Anaconda3\envs\stpy35\lib\site-packages\pymc3\distributions\distribution.py in dist(cls, *args, **kwargs)
45 def dist(cls, *args, **kwargs):
46 dist = object.__new__(cls)
---> 47 dist.__init__(*args, **kwargs)
48 return dist
49
C:\Anaconda3\envs\stpy35\lib\site-packages\pymc3\distributions\mixture.py in __init__(self, w, comp_dists, *args, **kwargs)
62
63 try:
---> 64 comp_modes = self._comp_modes()
65 comp_mode_logps = self.logp(comp_modes)
66 self.mode = comp_modes[tt.argmax(w * comp_mode_logps, axis=-1)]
C:\Anaconda3\envs\stpy35\lib\site-packages\pymc3\distributions\mixture.py in _comp_modes(self)
96 return tt.as_tensor_variable(self.comp_dists.mode)
97 except AttributeError:
---> 98 return tt.stack([comp_dist.mode for comp_dist in self.comp_dists],
99 axis=1)
100
TypeError: '_DiscreteBounded' object is not iterable