Turing's summary statistics - ESS


I’m new to MCMC, and I’m using the Turing package to implement NUTS.

par_NUTS = sample(model, NUTS(1000, 0.65), MCMCThreads(), 1000, 3)

I’m trying to figure out what the Effective Sample Size (ESS) values returned in the summary statistics mean.

I’ve run 3 separate chains. When I check the ESS values for the individual chains and the combined chains they turn out to be identical:

summarystats(par_NUTS; append_chains=true) # Appended chains


summarystats(par_NUTS; append_chains=false)[1] # Individual chains


summarystats(par_NUTS; append_chains=false)[2] # Individual chains


summarystats(par_NUTS; append_chains=false)[3] # Individual chains


What does this mean? Is it the relative ESS values that are returned?

1 Like

The documentation of MCMCChains.rhat references the paper https://arxiv.org/pdf/1903.08008.pdf
from which it apparently takes the calculation of rhat (and ess?).
I have only skimmed over the first two pages just now, and hope I do understand correctly. The authors make the point that in general the convergence of MCMC cannot be reliably assessed from a single chain.

Thus, those observables are not calculated for every chain separately, which explains the identical values you observe. You may force a split by calling ess_rhat(chains[:,:,1]) etc., but again, those might not reliably report failed convergence and overestimate the ESS.

(P.S.: Please do not double post 'ESS' in Turing.jl if a question doesn’t receive any attention for a couple of days. That happens. Instead, you can bump it with a comment after a while.)

I think this is worth a bug report in MCMCChains. While an argument can be made that the R-hat computed for all chains should be returned for each chain, the same cannot be said for the ESS. It’s absolutely incorrect to return for a single chain the ESS or MCSE for all chains together. It’s probably best that MCMCChains then computes the ESS, R-hat, and MCSE for each chain separately. While this decreases the usefulness of the diagnostics, it avoids potential footguns.