0

我是 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() :


() ----> 1 M.summary() 中的 AttributeError Traceback (最近一次调用最后一次)

AttributeError:“MCMC”对象没有属性“摘要”

我相信链已经成功运行,因为命令 M.trace('alpha_0end')[:] 显示那里有链元素,但我无法获取有关先验的任何信息,例如平均值或标准偏差。我尝试了 summary 命令的不同排列。例如:M.alpha_0end.summary()

了解是否有一种简单的方法可以得出先验的标准差和均值会很有帮助。

4

2 回答 2

0

The summary subroutine was added in February 2012 (a04551094a70451a4afee4e11be8b6872e74fe46). At that time, the version number was 2.2-grad.

If your pm.__version__ is 2.2-grad or lower, you have a version of pymc that is too old to use this function. Version 2.2-beta or later should work.

于 2014-07-10T22:00:21.687 回答
0

我无法运行您的代码,但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
于 2014-06-17T19:32:37.253 回答