1
разработчиков
Здравствуйте PyMC,ошибка в laplace_like pymc2, когда вызывается с массивом
Там, кажется, ошибка в функции 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]))