你好 PyMC 开发人员,
该功能似乎存在错误laplace_like
。它现在返回:
return flib.gamma(np.abs(x-mu), 1, tau) - np.log(2)
但是什么时候x
是一个数组(实际上总是如此),它应该返回
N = 1
if hasattr(x, "__len__"): N = x.__len__()
return flib.gamma(np.abs(x-mu), 1, tau) - N * np.log(2)
简单的测试用例:
import pymc
print -pymc.distributions.laplace_like(array([8]), 10, 1)
print -pymc.distributions.laplace_like(array([9]), 10, 1)
# likelihood of values 8 and 9 together
print -pymc.distributions.laplace_like(array([8]), 10, 1) -pymc.distributions.laplace_like(array([9]), 10, 1)
# should give the same answer, but doesn't without the suggested fix
print -pymc.distributions.laplace_like(array([8,9]), 10, 1)
这也证实了与的laplace.nnlf
比较scipy.stats
print laplace.nnlf((10,1),array([8,9]))