我不明白为什么MAP会给出错误,因为MCMC在同一场景中工作正常? 我在下面写代码的相关部分。你知道吗
tau = Uniform('tau', lower=0.01, upper=5, doc='tau')
rv = [ Multinomial("rv"+str(i), count[i], prob_distribution[i], value = data[i], observed =True) for i in xrange(0, len(count)) ]
M = MAP([rv, tau])
M.fit()
tau_hat = M.tau.value()
错误:AttributeError:'MAP'对象没有属性'tau'(对于最后一行M。τ值())
另一方面,如果我用MCMC代替MAP,它工作得很好:
m = MCMC([tau, rv])
m.sample(iter = 500)
print m.trace('tau')
我想要tau的点估计,在这个点上后验概率最大,并将其与贝叶斯预测(我使用MCMC)进行比较
有关变量的一些信息:
概率分布是一个确定性函数,给定tau和一些其他信息,它返回一个预测概率分布列表。我有大约200个游戏,所以概率分布是一个200个列表的列表(每个列表包含该游戏动作的概率分布,例如[0.4, 0.4, 0.2]
)。同样,count是一个200个数字的列表,count[I]表示Ith
游戏被玩的次数。数据[i]是ith
游戏的观察信息,例如,如果数据[i]=[10 10 6]
,计数[i]将是26
附加注释
如果我包括以下行:
model = Model([rv, tau])
那我就看看我用不用
M = MAP(model)
或m = MCMC(model)
这会产生如下错误:
TypeError:hasattr():属性名必须是字符串
有人能解释一下发生了什么事吗?你知道吗
在PyMC2中,MCMC对象将模型节点公开为实例变量,而MAP对象不公开。向pymc开发者提交一个特性请求是值得的。您可以通过将最后一行替换为
此解决方案的一个完整的、最少的示例如下:
请注意,
tau
并不是由这个模型中的数据通知的。。。你知道吗相关问题 更多 >
编程相关推荐