Анализ PyMC MCMC — .summary() "

Я новичок в 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()

Было бы полезно узнать, есть ли простой способ получить стандартное отклонение и средние значения априорных значений.


person user3745461    schedule 16.06.2014    source источник


Ответы (2)


Я не могу запустить ваш код, но M.summary() у меня работает в этом минимальном примере:

In [1]: import pymc as pm

In [2]: pm.__version__
Out[2]: '2.3.2'

In [3]: X = pm.Normal('X', 0, 1)

In [4]: M = pm.MCMC(dict(X=X))

In [5]: M.sample(100000, burn=10000)
 [-----------------100%-----------------] 100000 of 100000 complete in 5.0 sec
In [6]: M.summary()

    X:

        Mean             SD               MC Error        95% HPD interval
        ------------------------------------------------------------------
        -0.0             1.003            0.003            [-1.897  2.026]


        Posterior quantiles:

        2.5             25              50              75             97.5
         |---------------|===============|===============|---------------|
        -1.961           -0.673          0.0            0.675         1.964
person Abraham D Flaxman    schedule 17.06.2014

Подпрограмма сводки была добавлена ​​в феврале 2012 г. (a04551094a70451a4afee4e11be8b6872e74fe46). На тот момент номер версии был 2.2-град.

Если ваш pm.__version__ имеет уровень 2.2 или ниже, у вас слишком старая версия pymc для использования этой функции. Версия 2.2-beta или более поздняя должна работать.

person wltrimbl    schedule 10.07.2014