我正在尝试使用“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_电流的最大值不应大于;80或小于1(因为x小于1或大于80的.pdf(x)将为0)。但当我多次运行这段代码时,经常会得到一个大于80或小于1的值
我不知道怎么了
目前没有回答
相关问题 更多 >
编程相关推荐