【问题标题】:MAP in PyMC is giving unexpected errorPyMC 中的 MAP 出现意外错误
【发布时间】: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


    【解决方案1】:

    在 PyMC2 中,MCMC 对象将模型节点公开为实例变量,但 MAP 对象没有。向 pymc-devs 提交功能请求可能是值得的。您可以通过用

    替换最后一行来获得 tau 的 MAP 值
    tau_hat = tau.value
    

    此解决方法的完整、最小示例如下:

    from pymc import *
    
    count = [10, 10]
    prob_distribution = [[.5, .5], [.1, .2, .7]]
    data = [[2, 8], [2, 3, 5]]
    
    tau = Uniform('tau', lower=0.01, upper=5)
    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 = tau.value
    

    请注意,tau 不会被此模型中的数据告知所写...

    【讨论】:

    • 我希望 tau 应该具有最大化其后验概率的值,因此我使用的是 MAP,但在您的代码中,如果我在使用 MAP 之前和之后打印 tau 的值,它不会改变。如果使用 MAP 无法完成,还有其他方法吗??
    • 这是您构建的模型的问题,而不是 MAP 优化问题。
    • 您能否建议任何更好的模型,其中我可以使用 MAP 优化? Agai,请提供一个小的工作示例,谢谢
    • 不幸的是,我不知道您要建模什么,因此没有关于您应该更改什么的建议。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2012-10-21
    • 2011-07-15
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多