[R] MCMC gradually slows down

Jens Malmros jens.malmros at gmail.com
Sun Nov 8 20:45:50 CET 2009


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




More information about the R-help mailing list