# Generic implementation of Metropolis Hastings algorithm. mh_update <- function(state, log_target_density, proposal, log_proposal_density = function(x,y) { 0.0 } ) { log_mh_ratio <- 0 log_mh_ratio <- log_mh_ratio + log_target_density(proposal) - log_target_density(state) log_mh_ratio <- log_mh_ratio + log_proposal_density(state,proposal) - log_proposal_density(proposal,state) if ( log(runif(1)) < log_mh_ratio ) return(proposal) else return(state) } # Generic diagnostic plots of MCMC chain diagnostic_plots <- function(parameter) { cat("Acceptance rate:",length(unique(parameter))/length(parameter),"\n") plot(parameter,type="l") acf(parameter) hist(parameter,freq=FALSE) } # Generic acceptance rate of MCMC chain acceptance_rate <- function(chain){ 1-mean(chain[-1]==chain[-length(n)]) }