使用数组调用laplace_like pymc2中的错误

时间:2014-01-21 21:21:41

标签: pymc

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]))

1 个答案:

答案 0 :(得分:1)

这是修复的,修复程序将在即将发布的大修补程序版本(2.3.1)中提供