Hmm, when I add point and size to random it samples from the PP.
But instead of values it returns a list of un-evaluted theano, see below:
class ShiftedLognormal(pymc3.Lognormal):
def __init__(self, mu, sigma, shift, tau=None, sd=None, *args, **kwargs):
transform = pymc3.distributions.transforms.lowerbound(shift)
super().__init__(mu=mu, sd=sigma, tau=tau, *args, **kwargs,
transform=transform)
self.shift = shift
self.mean += shift
self.mode += shift
def random(self, point, size):
return super().random(point=point, size=size) + self.shift
def logp(self, x):
return super().logp(x - self.shift)
sampling the PP leads to:
{‘y_obs’: array([Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
Elemwise{add,no_inplace}.0, Elemwise{add,no_inplace}.0,
…
What am I doing wrong?