MCMC toolbox » Examples » Cauchy distribution

MCMC toolbox example

This example targets 10 dimensional Cauchy distribution. Cauchy distribution does not have finite second moment, so the AM method, which calculates chain variance will have troubles. In practice, it gives good results. Here, we use RAM adaptation, which does not use variance information (http://dx.doi.org/10.1007/s11222-011-9269-5).

clear model options params

nsimu = 40000;
npar = 10;

model.ssfun    = @(x,d) 2*sum(log(1+x.^2));
options.nsimu  = nsimu;
options.method = 'ram';
for i=1:npar, params{i} = {sprintf('x_{%d}',i), 0}; end

[res,chain] = mcmcrun(model,[],params,options);
Sampling these parameters:
name   start [min,max] N(mu,s^2)
x_{1}: 0 [-Inf,Inf] N(0,Inf)
x_{2}: 0 [-Inf,Inf] N(0,Inf)
x_{3}: 0 [-Inf,Inf] N(0,Inf)
x_{4}: 0 [-Inf,Inf] N(0,Inf)
x_{5}: 0 [-Inf,Inf] N(0,Inf)
x_{6}: 0 [-Inf,Inf] N(0,Inf)
x_{7}: 0 [-Inf,Inf] N(0,Inf)
x_{8}: 0 [-Inf,Inf] N(0,Inf)
x_{9}: 0 [-Inf,Inf] N(0,Inf)
x_{10}: 0 [-Inf,Inf] N(0,Inf)

Plot the chain

iii = 1:min(npar,4); % plot first 4 chain columns

figure(1); clf
mcmcplot(chain,iii,res);
figure(2); clf
mcmcplot(chain,iii,res,'hist');
for i=iii
  subplot(2,2,i)
  xlim([-10,10]);
  xx = linspace(-10,10);
  yy = cauchypf(xx);
  hold on
  plot(xx,yy)
  hold off
end