Выборка из априора (с использованием дельты); Пока цикл - PullRequest
1 голос
/ 10 апреля 2019

Я пытаюсь сделать MCMC с 'a' в качестве одного из параметров.Предложенное значение 'a' получается случайным образом из равномерного распределения (a-delta, a + delta), если pdf предлагаемого значения 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 (потому что a.pdf (x), где x меньше 1 илиболее 80 будет 0).Но когда я запускаю этот код несколько раз, я часто получаю значение, которое больше 80 или меньше 1.

Я не уверен, что не так.

...