2014-01-21 4 views
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])) 

ответ

1

Это исправлено, и исправление будет доступно в предстоящем выпуске большого исправления (2.3.1)