2014-06-16 5 views
0

내가 PyMC에 새로운 해요 내 이전에, 예를 들어, 평균 및 표준 편차와 관련된 매개 변수를 받고 약간의 문제가 발생하고PyMC MCMC 분석 - .summary() "

나는 내 모델을 설명합니다. 과 같이 '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) 

그리고 i를 MCMC 체인 실행 ipython에서 다음 스크립트를 사용

  import pymc 
      import model 
      M=pymc.MCMC(model) 
      M.sample(100000, burn=10000) 
      M.summary() 

모든 최종 명령 M. 때까지 작동하는 것 같다을 summary() 내가 t를 얻는 곳 그는 오류 :


AttributeError 역 추적 (마지막으로 가장 최근 통화)에서 () ----> 1 M.summary()

AttributeError : 'MCMC'개체가 어떤 속성이없는 '요약'

M.trace ('alpha_0end') [:] 명령으로 체인이 성공적으로 실행되었음을 확신하지만 거기에는 체인 요소가 있지만 이전과 같은 정보는 알 수 없습니다. 또는 표준 편차. 요약 명령의 다른 순열을 시도했습니다. 예 : M.alpha_0end.summary()

표준 편차 및 사전의 수단을 쉽게 얻을 수있는 방법이 있는지 알고 있으면 도움이됩니다. 이 최소한의 예에서 나를 위해

답변

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 
0

요약 서브 루틴은 2012 년 2 월 추가 된 (a04551094a70451a4afee4e11be8b6872e74fe46). 당시 버전 번호는 2.2-grad였습니다.

pm.__version__이 2.2 수준 이하인 경우이 함수를 사용하기에는 너무 오래된 pymc 버전이 있습니다. 버전 2.2-beta 이상이 작동해야합니다.