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 PX0(self): return dists.IndepProd(*[dists.Dirac(loc=self.x0[i]) for i in range(6)])
def PX(self, t, xp): # Distribution of X_t given X_{t-1}=xp (p=past) # Division by 4 done to scale distributions #return dists.Normal(loc=self.a(self.c, self.m, xp), scale=1e-2) return dists.Dirac(loc=self.a(self.c, self.m, xp))
def PX0(self): # Distribution of X_0 return dists.Dirac(loc=self.a0)
def PX(self, t, xp): # Distribution of X_t given X_{t-1}=xp (p=past) return dists.Dirac(loc=self.a(self.c, self.m, xp))