def PX(self, t, xp): return dists.IndepProd(dists.Normal(loc=xp[:, 0], scale=self.sigmaX), dists.Normal(loc=xp[:, 1], scale=self.sigmaX), dists.Dirac(loc=xp[:, 0] + xp[:, 2]), dists.Dirac(loc=xp[:, 1] + xp[:, 3]) )
def PX0(self): return dists.IndepProd(dists.Normal(loc=self.x0[0], scale=self.sigmaX), dists.Normal(loc=self.x0[1], scale=self.sigmaX), dists.Dirac(loc=self.x0[2]), dists.Dirac(loc=self.x0[3]) )
def PY(self, t, xp, x): return dists.IndepProd(*[dists.Poisson(np.exp(self.a[k] + np.sum(x*self.b[k], axis=1))) for k in range(self.dy)])
def PX0(self): return dists.IndepProd(*[dists.Dirac(loc=self.x0[i]) for i in range(6)])
def PY(self, t, xp, x): return dists.IndepProd( NegativeBinomial(n=1 / self.tau, p=1 / (1 + self.tau * np.exp(x))), NegativeBinomial(n=1 / self.tau, p=1 / (1 + self.tau * np.exp(x))))
def PY(self, t, xp, x): return dists.IndepProd(dists.Poisson(rate=np.exp(x)), dists.Poisson(rate=np.exp(x)))