Algorithm 1 Automated Blocking 1: i ← 0 2: Ψ$_{0}$ ← Ψ$_{scalar}$ 3: loop : 4: i ← i + 1 5: Generate samples of Θ under Ψ$_{i}$$_{−}$$_{1}$, where X$_{j}$ represents the sample chain of θ$_{j}$ 6: Discard initial 50% of each chain X$_{j}$ 7: ρ$_{j,k}$ ← cor( X$_{j}$, X$_{k}$ ) 8: d$_{j,k}$ ← 1 − | ρ$_{j,k}$ | 9: Construct distance matrix D from elements d$_{j,k}$ 10: Construct hierarchical clustering tree T from D 11: Ψ$_{cand}$ ← { Ψ( T$_{cut=0}$ ) , Ψ( T$_{cut=0}$$_{.}$$_{1}$ ) , Ψ( T$_{cut=0}$$_{.}$$_{2}$ ) , . . . , Ψ( T$_{cut=1}$ ) } 12: Ψ$_{i}$ ← argmax$_{Ψ}$$_{∈}$$_{Ψ}$$_{cand}$ E (Ψ) 13: if E (Ψ$_{i}$) > E (Ψ$_{i}$$_{−}$$_{1}$) and Ψ$_{i}$ = Ψ$_{i}$$_{−}$$_{1}$ then goto loop 14: Ψ$_{AutoBlock}$ ← Ψ$_{i}$ 15: return Ψ$_{AutoBlock}$ somewhat arbitrary initial 50% of all samples. This should not be confused with a traditional “burn- in,” whose purpose is to “forget” the initial state and ensure convergence to the target distribution. Instead, discarding these initial samples allows all adaptive scalar and block samplers ample time to self-tune, and thereby achieve their theoretically optimal algorithmic efficiency. The choice of 50% is largely arbitrary, and excessive in most cases, and could almost certainly be relaxed without affecting algorithm performance. Empirical correlations are transformed into distances using the transformation d$_{j,k}$ = 1 − | ρ$_{j,k}$ | . The form of this transformation is selected to induce several properties for elements of the distance matrix D : the main diagonal consists of zeros; strong correlation results in d ≈ 0; weak or zero correlation results in d ≈ 1; and correlations of ρ and − ρ result in the same distance. We use the R function hclust to create the hierarchical tree T from the distance matrix D . The default “complete linkage” clustering (Everitt, 2011, chapter 4) is appropriate, since this ensures that all parameters within each cluster have a minimum absolute pairwise correlation. At height h ∈ [0 , 1] in T , the absolute correlation between parameter pairs (within clusters) is at least 1 − h . We use the R function cutree for cutting the hierarchical clustering tree T at a specified height h ∈ [0 , 1] to produce disjoint parameter groupings, which may be used to define parameter blocks for the purpose of MCMC sampling. We justify this means of generating parameter sampling blocks, insofar as to increase algorithmic efficiency we strive to group correlated parameters into sampling 15