Hello 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]))
答案 0 :(得分:1)
这是修复的,修复程序将在即将发布的大修补程序版本(2.3.1)中提供