[R] MCMC gradually slows down

jim holtman jholtman at gmail.com
Sun Nov 8 20:44:21 CET 2009


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.malmros at 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 at 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.
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem that you are trying to solve?




More information about the R-help mailing list