Thanks a lot, this works. jim holtman wrote: > First of all, allocate 'theta' to be the final size you need. Every > time through your loop you are extending it by one, meaning you are > spending a lot of time copying the data each time. Do something like: > > theta <- numeric(n) > > and then see how fast it works. > > On Sun, Nov 8, 2009 at 2:11 PM, Jens Malmros <jens.malm...@gmail.com> wrote: >> Hello, >> >> I have written a simple Metropolis-Hastings MCMC algorithm for a >> binomial parameter: >> >> MHastings = function(n,p0,d){ >> theta = c() >> theta[1] = p0 >> t =1 >> while(t<=n){ >> phi = log(theta[t]/(1-theta[t])) >> phisim = phi + rnorm(1,0,d) >> thetasim = exp(phisim)/(1+exp(phisim)) >> r = (thetasim)^4*(1-thetasim)^8/(theta[t]^4*(1-theta[t])^8) >> if(runif(1,0,1)<r){ >> theta[t+1] = thetasim >> } else { >> theta[t+1] = theta[t] >> } >> t = t+1 >> if(t%%1000==0) print(t) # diagnostic >> } >> data.frame(theta) >> } >> >> The problem is that it gradually slows down. It is very fast in the >> beginning, but slows down and gets very slow as you reach about 50000 >> iterations and I need do to plenty more. >> >> I know there are more fancy MCMC routines available, but I am really >> just interested in this to work. >> >> Thank you for your help, >> Jens Malmros >> >> ______________________________________________ >> R-help@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. >> > > >
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.