【发布时间】:2014-06-05 00:47:40
【问题描述】:
我不明白为什么 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' object has no attribute 'tau'(对于最后一行 M.tau.value())
另一方面,如果我使用 MCMC 代替 MAP,它可以正常工作:
m = MCMC([tau, rv])
m.sample(iter = 500)
print m.trace('tau')
我想要后验概率最大的 tau 点估计,并将其与贝叶斯预测(我使用 MCMC)进行比较
关于变量的一些信息:
prob_distribution 是一个确定性函数,在给定 tau 和其他一些信息的情况下,它会返回每个游戏的预测概率分布列表。我有大约 200 个游戏,所以 prob_distribution 是 200 个列表的列表(每个列表都包含该游戏的动作概率分布,例如 [0.4, 0.4, 0.2]) 同样 count 是 200 个数字的列表,count[i] 表示 ith 的次数玩了游戏。 data[i] 是 ith 游戏的观察信息,例如如果 data[i] = [10 10 6],count[i] 将为 26
补充说明
如果我包含以下行:
model = Model([rv, tau])
然后不知道我是否使用
M = MAP(model) 或 m = MCMC(model)
这会产生如下错误:
TypeError: hasattr(): 属性名必须是字符串
谁能解释一下是怎么回事?
【问题讨论】:
标签: python distribution pymc mcmc multinomial