从先前采样(使用增量); While循环

时间:2019-04-10 17:29:22

标签: python while-loop sampling

我正在尝试使用“ a”作为参数之一进行MCMC。只要a的建议值的pdf不为零,即可从均匀分布(a-delta,a + delta)中随机获得'a'的建议值。这是我编写的代码的测试。

from scipy.stats import uniform
import numpy as np

prior_a= uniform(1,79)
delta = 5

a_current = 40
all_a = []
for i in range(1,1000):
    a_proposal = np.random.uniform(a_current-delta, a_current+delta)
    while prior_a.pdf(a_proposal)<0:
        a_proposal = np.random.uniform(a_current-delta, a_current+delta)
    a_current = a_proposal
    all_a.append(a_current)

print(max(all_a))
print(min(all_a))

原则上,a_current的最大值不应大于80或小于1(因为x小于1或大于80的a.pdf(x)将为0)。但是,当我多次运行此代码时,经常会得到一个大于80或小于1的值。

我不确定是怎么回事。

0 个答案:

没有答案