2015-06-18 5 views
0

Я использую PyMC 2.3.4 и пытаюсь получить сводную статистику для подмножества переменных моей модели, но не могу сделать этого, используя метод в документах.PyMC: сводная статистика для подмножества переменных

код модели потенциала:

import pymc 

a = pymc.Normal('a',0,1) 
b = pymc.Normal('b',0,1) 
myModel = pymc.Model((a,b)) 
M = pymc.MCMC(myModel) 
M.sample(1000) 

За документацию на https://pymc-devs.github.io/pymc/database.html, я должен быть в состоянии запустить

M.a.summary() -> summary statistics for a 

, но вместо этого, я получаю

AttributeError: 'MCMC' object has no attribute 'a' 

Однако M.summary() дает сводную статистику для всех переменных.

+0

Думаю, я знаю, в чем ваш вопрос, но, пожалуйста, отредактируйте, если мой ответ не соответствует тому, что вы просите. –

ответ

2

Возможно, существует слишком много способов создания модели в PyMC2. Тот, который вы использовали, передавая итерабельность экземпляров pymc.Node, не записывает имена, поэтому модель не имеет M.a, хотя M.nodes содержит стохастик с именем 'a'.

Если вы хотите создать свою модель таким образом, вы можете получить краткую информацию от a непосредственно с

a.summary() 

Для меня это печатает

a: 

    Mean    SD    MC Error  95% HPD interval 
    ------------------------------------------------------------------ 
    [[-0.016]]  [[ 0.992]]  [[ 0.031]]  [-1.986 1.939] 


    Posterior quantiles: 

    2.5    25    50    75    97.5 
    |---------------|===============|===============|---------------| 
    [[-2.047]]  [[-0.665]]  [[-0.058]]  [[ 0.672]] [[ 1.937]] 

Я считаю, что удобно иметь атрибут M.a доступен, и вы можете получить его, используя словарь вместо списка при построении модели:

M2 = pymc.MCMC({'a':a, 'b':b}) 
M2.sample(1000) 
M2.a.summary() 
Смежные вопросы