Я новичок в PyMC, и у меня возникли небольшие проблемы с получением параметров, связанных с моим предыдущим, например, средним значением и стандартным отклонением.
Я описываю свою модель в файле под названием «model.py» следующим образом:
import pymc
import numpy
#constants
r_div=numpy.loadtxt("r_div", comments="#", unpack=False)
map=numpy.loadtxt("map", comments="#", delimiter=",", unpack=False)
M_star=3*10^6;
#data
n=numpy.loadtxt("n")
#priors
alpha_0=pymc.Uniform('alpha_0end',-10,10, value=0)
logA_0=pymc.Uniform('logA_0end',-10,10,value=-6.1246)
#model
@pymc.deterministic(plot=False)
def r(logA_0=logA_0,alpha_0=alpha_0,M_star=M_star,r_div=r_div):
r=r_div*numpy.exp(logA_0)*((numpy.exp(map[:,1])/M_star)**(alpha_0))
return r
#likelihood
Distribution=pymc.Poisson('Distribution',mu=r,value=n,observed=True)
Затем я использую следующий скрипт в ipython для запуска цепочки MCMC:
import pymc
import model
M=pymc.MCMC(model)
M.sample(100000, burn=10000)
M.summary()
Кажется, все работает до последней команды M.summary(), где я получаю сообщение об ошибке:
AttributeError Traceback (последний последний вызов) in () ----> 1 M.summary()
AttributeError: объект «MCMC» не имеет атрибута «сводка»
Я уверен, что цепочка прошла успешно, так как команда M.trace('alpha_0end')[:] показывает, что там есть элементы цепочки, но я не могу получить никакой информации об априоре, такой как среднее значение или стандартное отклонение. Я пробовал разные перестановки сводной команды. Например: M.alpha_0end.summary()
Было бы полезно узнать, есть ли простой способ получить стандартное отклонение и средние значения априорных значений.