Я пытаюсь сделать 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.
Я не уверен, что не так.