rmcgibbo / pyhmc

Hamiltonain Monte Carlo in Python
https://pythonhosted.org/pyhmc
Other
39 stars 16 forks source link

Other correlation time estimators #3

Open rmcgibbo opened 9 years ago

rmcgibbo commented 9 years ago
  1. Sokal's notes (page 16), citing an earlier paper use an procedure for choosing the window for summing the empirical ACF where the length of the window, M is chosen to be the smallest value such that M is at least c times the estimated autocorrelation time, where c is something like 4, 6, or 10.
  2. Jenke also uses the same scheme, with c=6.
  3. Evertz doesn't seem to like this procedure (page 59)
  4. LaplacesDemon's in R uses the Geyer IPS estimator.
  5. Geyer's ICS estimator.
rmcgibbo commented 9 years ago

A paper from David van der Spoel's group truncates the window when the empirical ACF goes below 0.05 http://cmb.bio.uni-goettingen.de/pub/Hub_JCTC2010.pdf

rmcgibbo commented 9 years ago

For batch means, batch sizes ~n^(1/3) are apparently optimal (page 10) http://projecteuclid.org/download/pdfview_1/euclid.aos/1266586622. They also talk about the tukey-hanning window. Code is in CRAN http://cran.r-project.org/web/packages/mcmcse/mcmcse.pdf

jchodera commented 9 years ago

In case you haven't seen Geyer's chapter from the Handbook of Markov chain Monte Carlo, it's has some nice discussion of this as well in Section 1.10 "Variance Estimation".

I'd love to see the initial convex sequence (ICS) estimator be implemented as well (discussed in Section 1.10.2). The canonical reference for this and related methods seems to be:

Geyer, C. J. 1992. Practical Markov chain Monte Carlo (with discussion). Statistical Science, 7:473–511.

PDF available here.

rmcgibbo commented 9 years ago

Yes, I've read the paper and cited it in the IPS docs. Adding the ICS is a good idea too.

rmcgibbo commented 9 years ago

Also there's another ACF from http://www.sciencedirect.com/science/article/pii/0370269389915633 that I just saw, where you truncate the summation after a fixed number of terms (e.g. 20), and then add in a remainder based on the ratio of the final two values included in the sum, which looks like an analytical correction based on the assumption that the terms are decaying exponentially.