Taken from: _https://darrenjw.wordpress.com/2010/08/15/metropolis-hastings-mcmc-algorithms/_
The data generation AKA innovations function.
metrop1=function(n=1000,eps=0.5)
{
vec=vector("numeric", n)
x=0
vec[1]=x
for (i in 2:n) {
innov=runif(1,-eps,eps)
#notice the acceptance ratio = minus eps over eps.
can=x+innov
aprob=min(1,dnorm(can)/dnorm(x))
u=runif(1)
if (u < aprob)
x=can
vec[i]=x
}
vec
}
Plotting:
plot.mcmc<-function(mcmc.out)
{
op=par(mfrow=c(2,2))
plot(ts(mcmc.out),col=2)
hist(mcmc.out,30,col=3)
qqnorm(mcmc.out,col=4)
abline(0,1,col=2)
acf(mcmc.out,col=2,lag.max=100)
par(op)
}
metrop.out<-metrop1(10000,1)
plot.mcmc(metrop.out)

LS0tCnRpdGxlOiAiTWV0cm9wb2xpcyBBbGdvcml0aG0iCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KClRha2VuIGZyb206IApfaHR0cHM6Ly9kYXJyZW5qdy53b3JkcHJlc3MuY29tLzIwMTAvMDgvMTUvbWV0cm9wb2xpcy1oYXN0aW5ncy1tY21jLWFsZ29yaXRobXMvXwoKKipUaGUgZGF0YSBnZW5lcmF0aW9uIEFLQSBpbm5vdmF0aW9ucyBmdW5jdGlvbi4qKgpgYGB7cn0KbWV0cm9wMT1mdW5jdGlvbihuPTEwMDAsZXBzPTAuNSkgCnsKICAgICAgICB2ZWM9dmVjdG9yKCJudW1lcmljIiwgbikKICAgICAgICB4PTAKICAgICAgICB2ZWNbMV09eAogICAgICAgIGZvciAoaSBpbiAyOm4pIHsKICAgICAgICAgICAgICAgIGlubm92PXJ1bmlmKDEsLWVwcyxlcHMpCiAgICAgICAgICAgICAgICAjbm90aWNlIHRoZSBhY2NlcHRhbmNlIHJhdGlvID0gbWludXMgZXBzIG92ZXIgZXBzLgogICAgICAgICAgICAgICAgY2FuPXgraW5ub3YKICAgICAgICAgICAgICAgIGFwcm9iPW1pbigxLGRub3JtKGNhbikvZG5vcm0oeCkpCiAgICAgICAgICAgICAgICB1PXJ1bmlmKDEpCiAgICAgICAgICAgICAgICBpZiAodSA8IGFwcm9iKSAKICAgICAgICAgICAgICAgICAgICAgICAgeD1jYW4KICAgICAgICAgICAgICAgIHZlY1tpXT14CiAgICAgICAgfQogICAgICAgIHZlYwp9CmBgYAoKCioqUGxvdHRpbmc6KioKYGBge3J9CnBsb3QubWNtYzwtZnVuY3Rpb24obWNtYy5vdXQpCnsKICAgIG9wPXBhcihtZnJvdz1jKDIsMikpCiAgICBwbG90KHRzKG1jbWMub3V0KSxjb2w9MikKICAgIGhpc3QobWNtYy5vdXQsMzAsY29sPTMpCiAgICBxcW5vcm0obWNtYy5vdXQsY29sPTQpCiAgICBhYmxpbmUoMCwxLGNvbD0yKQogICAgYWNmKG1jbWMub3V0LGNvbD0yLGxhZy5tYXg9MTAwKQogICAgcGFyKG9wKQp9CiAKbWV0cm9wLm91dDwtbWV0cm9wMSgxMDAwMCwxKQpwbG90Lm1jbWMobWV0cm9wLm91dCkKYGBgCgo=