Rev Language Reference


srMinESS - Effective sample size stopping rule

Terminates an MCMC run when the effective sample sizes (ESS) of all parameters exceed the specified value.

Usage

srMinESS(RealPos minEss, String filename, Natural frequency, String burninMethod)

Arguments

minEss : RealPos (pass by value)
The minimum ESS threshold when stopping is allowed.
filename : String (pass by value)
The name of the file containing the samples.
frequency : Natural (pass by value)
The frequency how often to check for convergence.
Default : 10000
burninMethod : String (pass by value)
Which type of burnin method to use.
Default : ESS
Options : ESS|SEM

Details

The ESS is the number of independent samples generated by a MCMC sampler. It takes into account the correlation between samples within a chain. Low ESS values represent high autocorrelation, and consequently more uncertainty associated with the parameter estimate. The MCMC analysis will terminate once all parameters in every run meet the ESS threshold. As such, performing additional runs will not decrease the number of generations required to meet the ESS threshold, even though it may increase the number of indepedent samples in the final, pooled posterior sample. The number of samples to be removed as burnin before calculating the test statistic is determined using the `burninMethod`. Different burnin lengths are tested, increasing from 0 to 50% (for `ESS`) or 100% (for `SEM`) of the length of the trace in increments of 10 samples. If the `ESS` option is chosen (default), ESS is calculated for all monitored parameters after removing the number of samples corresponding to each candidate burnin length. The best burnin length for a given parameter is the one that maximizes its ESS value. If the `SEM` option is chosen, the standard error of the mean (SEM) is calculated instead, and the best burnin length for a given parameter is the one that minimizes its SEM value. In both cases, the final burnin length is set to the maximum of the parameter-specific burnin lengths. The [convergence assessment](https://revbayes.github.io/tutorials/convergence/) tutorial contains a discusson on the calculation and interpretation of the ESS diagnostic.

Example

# Binomial example: estimate success probability given 7 successes out of 20 trials
r ~ dnExp(10)
p := Probability(ifelse(r < 1, r, 1))
n <- 20
k ~ dnBinomial(n, p)
k.clamp(7)
mymodel = model(k)

moves = VectorMoves()
moves.append( mvSlide(r, delta=0.1, weight=1) )

paramFile = "parameters.log"

monitors = VectorMonitors()
monitors.append( mnModel(filename=paramFile, printgen=100, p) )

# Stop when all monitored parameters have attained an estimated sample size of 50
stopping_rules[1] = srMinESS(50, file = paramFile, freq = 1000)

# Create the MCMC object
mymcmc = mcmc(mymodel, monitors, moves)

# Begin the MCMC run
mymcmc.run(rules = stopping_rules)

See Also