使用pymc.potential来防止在无意义的参数值下评估函数

时间:2014-11-18 11:48:50

标签: bayesian pymc

我正在构建一个pymc模型,它必须评估一个非常昂贵的cpu功能(在非常体面的硬件上每次调用最多1秒)。我试图通过潜在的方式将探索的参数空间限制为有意义的解决方案(我的变量列表的总和必须保持在给定范围内)。这有效但我注意到即使我的潜力返回无限值并禁止参数选择,也会对此函数进行评估。有办法防止这种情况吗?是否可以强制采样器使用给定的评估序列(选择必要的变量,检查电位是否正常,如果允许则继续)

我想过使用函数本身的潜力并用它来确定它是否必须继续或立即返回,但是有更好的方法吗?

让弗朗索瓦

1 个答案:

答案 0 :(得分:0)

我不知道如何命令评估潜力。这可能不是最好的方法,但您可以在模拟开始时检查参数是否合理。如果参数不在合理的范围内,您可以返回一个值,该值将使您的后验值为零。

另一个选择是为您的可能性创建一个函数。在此功能的开头,您可以检查参数是否在合理的限制范围内。如果不是,您可以在不运行模拟的情况下返回-inf。如果它们合理,您可以运行模型并计算日志(p)。

这绝对不是一个优雅的解决方案,但它应该有效。

完全披露 - 我绝不是一位pymc专家。