我正在努力解决二项式和pymc的问题 我有一个分组的样本,我想用MCMC评估从易感到感染状态的转换率,并以类似于here的方式绘制结果
当我编译脚本时,我收到此消息:
Traceback (most recent call last):
File "statisticMCMC_bin.py", line 23, in <module>
plot(mc.finalhcc.stats()['mean'],color='red',linewidth=2)
File "/Library/Python/2.7/site-packages/pymc-2.3a-py2.7-macosx-10.8-intel.egg/pymc/Node.py", line 265, in stats
return self.trace.stats(alpha=alpha, start=start, batches=batches,
AttributeError: 'Binomial' object has no attribute 'trace'
并且没有产生情节.....我该如何解决?
这是模型和启动脚本:
import sys
import pickle
import pykov
import random
import scipy.integrate as spi
import numpy as np
import pylab as pl
import math as mt
import scipy.linalg as linear
import decimal
from pymc import *
import numpy as np
n = np.array([647,1814,8838,9949,1920])###initial population
originalHCC=np.array([0,197,302,776,927], dtype=float)
beta=Uniform('beta',0.001,1.0)####death rate
vectorp=np.array([beta,beta,beta,beta,beta]);
finalhcc = pymc.Binomial('finalhcc', n=n, p=vectorp, value=originalHCC, observed=True)
#
import numpy as np
from pymc import *
from pylab import *
import scipy as sc
#from pymc.Matplot import plot
from scipy.stats.mstats import mquantiles
import MCMC_bin as mod
reload(mod)
mc=MCMC(mod)
mc.use_step_method(AdaptiveMetropolis, [mod.beta])
mc.sample(iter=500000,burn=5000, thin=20,verbose=1)
n = np.array([647,1814,8838,9949,1920,39])
figure(1)
title('HCC with uncertainty')
plot(mc.originalHCC, 's', mec='black', color='black',alpha=0.9)
plot(mc.finalhcc.stats()['mean'],color='red',linewidth=2)
plot(mc.finalhcc.stats()['95% HPD interval'],color='red',linewidth=1,linestyle='dotted')
axis(0,6,0.9*min(mc.originalHCC),1.2*max(mc.originalHCC))
savefig('HCC.png')
答案 0 :(得分:0)
这是因为,在您的模型中,观察到二项式节点finalhcc
(数据可能性)。因此,它没有痕迹,因为它没有被采样。它的值是固定的(数据)。只有非数据随机指标和确定性节点才有痕迹。