File Exchange

image thumbnail


version 1.0 (16.1 KB) by

MCMC -- Markov Chain Monte Carlo Tools



No License

MCMC -- Markov Chain Monte Carlo Tools Copyright (c) 1998, Harvard University. Full copyright in the file Copyright. Some routines require version 5 of Matlab, some will work with version 4

There are three parts to this library of routines.
1. *[rnd,pdf,lpr].m - distribution function tools to complement MATLAB's
2. mcmc*.m - routines to calculate and display summaries of MCMC output
3. other - other useful routines

1. Distribution Function Tools

These function help in random number generation and various calculations involving density functions.

randrand - randomize both random number chains off the clock
mvnormrnd - random multivariate normal - different from MATLAB's mvnrnd
wishrnd - random Wishart value
wishirnd - random Wishart value - integer df only
invwishrnd - random inverse Wishart value
invwishirnd - random inverse Wishart value - integer df only
invwishpdf - inverse Wishart density
metrop - a general Metropolis-Hastings step
betalpr - log probability ratio for beta distribution
gamlpr - log probability ratio for gamma distribution
invwishlpr - log probability ratio for inverse wishart distribution
mvnormlpr - log probability ratio for multivariate normal distribution

2. MCMC Summaries

mcmclt - lower triangle - for symmetric matricies to use with mcmctrace
mcmcsumm - calculate summary statistics(includes autocorrelations and Gelman-Rubin statistics)
mcmctrace - matrix of trace plots
mcmcacf - to plot autocorrelations
mcmcgr - Gelman-Rubin R statistic for convergence
mcmcdemo - short demonstration program

3. Other

ltvec - convert a lower-triangular matrix into a vector
veclt - convert a vector into a lower-triangular matrix
ltindex - convert row and column index into lt-index

Please see the contents.m file for a full description.

Comments and Ratings (21)

Why does mcmcgr anticipate that the data will be a 3 dimensional array? Suppose I have M chains of N values, so that my data is only two 2D. How can I use this script with that?


David (view profile)

There is a bug in this code:

In the definition of of the inverse wishart pdf the multivariate gamma distributrion is calculated as gammaln((d-k-klst)/2) which does not fit the definition of the multivariate gamma distribution: it should be gammaln(d - (k-klst)/2)


Hi David,

Thanks very much for help!

I am using your matlab function "mcmcgr" and have found one question.

I set up 5 chains each with length say 10000, and each chain only contains
zero components, so each chains is like "0,0,0,..." with 10000 zeros in it.

Obvious the convergence holds, but after I used mcmcgr to find its R
statistics, a "NaN" was reported. I don't know why this happens.

I am very grateful if you can help me with it!
Thanks a lot!

ipek cameller

kadek nanax

Zhang J.L.

Your programs are helpful for me, save my time. I will study it,thank you!

Estevan Charreteiro

The veclt command only works for column vectors. But one can but in a transformation step to suit needs. Still a good program. thanks for posting.

Atique Malik

yao hs

la chen

zhao xiaolin

chen bw

I don't know how to excute ARS (adaptive rejection sampling) with matlab if the density is not standard.

Mario Albeerto

inverse log function

Saverio Massi

Very good random generator for the Wishart: works much better than the one included in matlab (which is sometimes returning "strange samples")

Felipe Reyes

mohammad atef

plz send the file to me

Peter Xu

Could you send me the examples of MCMC (Markov Chain Monte Carlo) modelling.


from Peter Xu

Birajashis Pattnaik

Problem with vesion

pulak Ghosh

Erasmo Mejia

MATLAB Release
MATLAB 5.2 (R10)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video