从先前的样本中取样(使用增量);While循环

2024-03-29 06:37:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用“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的值

我不知道怎么了


Tags: 代码import参数pdfnprandomuniformcurrent