met<-function(pi,proposal,X0, n, s) { output<-c(X0) x<-X0 for (i in 1:n) { y<-x + s * proposal(1) u<-runif(1) if (log(pi(y)/pi(x)) > log(u)) (x<-y) output<-c(output,x) } output } metGauss<-function(proposal,X0, n, s) { output<-c(X0) x<-X0 for (i in 1:n) { y<-x + s * proposal(1) u<-runif(1) if ((x^2 - y^2)/2 > log(u)) (x<-y) output<-c(output,x) } output } opt.sca_function() { z<-rep(0,100) a<-rep(0,100) s<-rep(0,100) for (i in 1:20) { s[i]<-1+ (i-1)/5 x<-met(dnorm,rnorm,0,10000,s[i]) z[i]<-sum((x[1:3999]-x[2:4000])^2) a[i]<-acceptance.rate(x) } par(mfcol=c(1,2)) plot(s,z) plot(a,z) par(mfcol=c(1,1)) } acceptance.rate<-function(x) { k<-length(x) number<-c(k-1) for (i in 1:(k-1)) { if (x[i]==x[i+1]) (number<-number-1) } number/(k-1) } determplots<-function(n,x,proposal) { k<-length(x) y<-metGauss(proposal,x[1],n,2.4) plot(y,type="l",ylim=c(-5,max(x)*1.1)) for (i in 2:k) { y<-metGauss(proposal,x[i],n,2.4) points(y,type="l") } } independence.sampler<-function(lambda, X0, n) { output<-c(X0) x<-X0 for (i in 1:n) { y<- rexp(1)/lambda u<-runif(1) if ((x-y)*(1-lambda ) > log(u)) (x<-y) output<-c(output,x) } output } clt.i.s<-function(m,lambda) { z_rep(0,m) for (i in 1:m) z[i]<-mean(independence.sampler(lambda,1,10000)) z }