def _logpdf(self, samples):
if self.theta >= 1.0:
vals = np.zeros(samples.shape[0])
vals[samples[:, 0] == samples[:, 1]] = np.inf
elif self.theta <= -1.0:
vals = np.zeros(samples.shape[0])
vals[samples[:, 0] == 1 - samples[:, 1]] = np.inf
else:
nrvs = norm.ppf(samples)
vals = 2 * self.theta * nrvs[:, 0] * nrvs[:, 1] - self.theta**2 \
* (nrvs[:, 0]**2 + nrvs[:, 1]**2)
vals /= 2 * (1 - self.theta**2)
vals -= np.log(1 - self.theta**2) / 2
return vals
评论列表
文章目录