mh.fit.RdThis is the basic computing function for MH and should not be called directly except by experienced users.
mh.fit( N, theta.init, qPROP, qFUN, logPOSTERIOR, nu = 0.001, varnames = NULL, param = list(), ... )
| N | Number of MCMC samples |
|---|---|
| theta.init | Vector of initial values for the parameters |
| qPROP | Function to generate proposal |
| qFUN | Probability for proposal function. First argument is where to evaluate, and second argument is the conditional parameter |
| logPOSTERIOR | Function to calculate and return the log posterior given a vector of values of |
| nu | Single value or vector parameter passed to |
| varnames | Optional vector of theta parameter names |
| param | List of additional parameters for |
| ... | Additional parameters for |
List for mh
mh listNNumber of MCMC samples
thetaNested list of length N of the sampled values of theta for each chain
thetaCombinedList of dataframes containing sampled values, one for each chain
rNULL for Metropolis-Hastings
theta.allNested list of all parameter values of theta sampled prior to accept/reject step for each
r.allNULL for Metropolis-Hastings
acceptNumber of accepted proposals. The ratio accept / N is the acceptance rate
accept_vVector of length N indicating which samples were accepted
MNULL for Metropolis-Hastings
algorithmMH for Metropolis-Hastings
# Logistic regression example X <- cbind(1, seq(-100, 100, by=0.25)) betavals <- c(-0.9, 0.2) lodds <- X %*% betavals prob1 <- as.numeric(1 / (1 + exp(-lodds))) set.seed(9874) y <- sapply(prob1, function(xx) { sample(c(0, 1), 1, prob=c(1-xx, xx)) }) f1 <- mh.fit(N = 2000, theta.init = rep(0, 2), nu = c(0.03, 0.001), qPROP = qprop, qFUN = qfun, logPOSTERIOR = logistic_posterior, varnames = paste0("beta", 0:1), y=y, X=X) f1$accept / f1$N#> [1] 0.4705