我不明白为什么 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.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] 表示我th
玩游戏的次数。data[i] 是 ith
游戏的观察信息,例如如果 data[i] = [10 10 6]
,count[i] 将为 26
附加说明
如果我包括以下行:
model = Model([rv, tau])
然后不知道我是否使用
M = MAP(model)
或者m = MCMC(model)
这会产生如下错误:
TypeError: hasattr(): 属性名必须是字符串
有人可以解释发生了什么吗?