Random Walk MH

# random walk Metropolis-Hastings
function rmh(T, delta, f::Function, initval = 5)
x = ones(T+1)
x[1] = initval
for t = 1:T
# generate Yt
epsi = rand() * 2 * delta - delta
Yt = epsi + x[t]
# accept or not
u = rand()
r = f(Yt)/f(x[t])
if r >= 1
x[t+1] = Yt
else
if u <= r
x[t+1] = Yt
else
x[t+1] = x[t]
end
end
end
return(x)
end


Last updated