DRAMRUN Metropolis-Hastings MCMC run with adaptive delayed rejection (DRAM)
This function generates MCMC chain using DRAM adaptation for a model defined
by user supplied sum-of-squares function and with additive i.i.d. Gaussian
errors for the observations. The error variance sigma2 is updated
using conjugate inverse gamma distribution.
[results,chain,s2chain]=dramrun(model,data,params,options)
input:
model.ssfun = ; % sum-of-squares function, ss=ssfun(par,data),
% that returns -2*log(p(y|par))
model.priorfun = ; % prior "sum-of-squares", priorfun(par,params),
% that returns -2*log(p(par)),
% default: inline('0','x','params')
data = ; % extra argument for ssfun (to pass the data etc.)
params.par0 = ; % initial parameter vector (a row vector)
params.sigma2 = 1;% initial/prior value for the Gaussian error variance
params.n0 = -1;% precision of sigma2 as imaginative observations
% if n0<0, no sigma2 update
params.n = ; % number of actual observations (for sigma2 update)
params.bounds = ; % 2*npar matrix of parameter bounds
% default: [-Inf,Inf]
options.nsimu = 2000; % length of the chain
options.qcov = ; % proposal covariance matrix
parameters for DRAM
options.adaptint = 10; % how often to adapt, if zero, no adaptation
options.drscale = 3; % scale for the second proposal, if zero, no DR
output:
results structure that contains some info about the run
chain nsimu*npar MCMC chain
s2chain sigmaČ chain (if generated)