2

我正在尝试使用emceepython 包从分布中提取样本并最大化我的数据来自采样参数的可能性。

例如,我有一个参数N,我试图为 N 找到一个最大化后验似然的值。(我实际上使用了 3 个参数,但为了简单起见,我在此示例中使用了 1)。

我跑了: sampler = emcee.EnsembleSampler(100, 3, logL, args=[new_data])

我为我的参数选择了初始位置p0

然后我跑了:

pos, prob, state = sampler.run_mcmc(p0, 100)  # burn in
sampler.reset()
pox, prob, state = sampler.run_mcmc(pos, 100, rstate0=state)  # sample

它大部分都在工作,但有时采样器会为 N 选择非物理的值。

那么如何对采样器选择的值范围进行限制呢?例如,也许我希望采样器停止尝试N作为负数或停止N大于 100。

我知道我可以更改自己的似然函数,以使非物理值付出很大的代价并不受青睐——但我不希望采样器一开始就被允许选择它们。


我现在认为我应该建立我的似然函数,以便我不希望采样器选择的数字(例如负数)受到惩罚并给予非常低的可能性。

我只是希望有人确认这是我应该做的,以防我错过了一种更简单的方法来限制Emcee本身选择哪些数字。

4

0 回答 0