Function vector_autocorr_tau (o2scl)¶
-
template<class vec_t, class resize_vec_t>
size_t o2scl::vector_autocorr_tau(const vec_t &ac_vec, resize_vec_t &five_tau_over_M, int verbose = 0)¶ Use the Goodman method to compute the autocorrelation length.
Representing the lag-k correlation coefficient by \( \hat{C}(k) \), Goodman defines
\[ \hat{\tau}(M) = 1 + 2 \sum_{s=1}^{M} \frac{\hat{C}(k)}{\hat{C}(0)} \]Then the autocorrelation length is the value of \( \hat{\tau}(M) \) for which\[ 5 \hat{\tau}(M)/M \leq 1 \](See Goodman’s MCMC notes at https://www.math.nyu.edu/~goodman/teaching/MonteCarlo2005/notes/MCMC.pdf )
This function computes the value of \( 5 \hat{\tau}(M)/M \) and stores it in the
five_tau_over_M
vector and then returns the first value of \( M \) for which the vector is less than or equal to 1.0. If this function returns 0, then \( 5 \hat{\tau}(M)/M \) is greater than 1.0 for all \( M \), and this can be a sign that the autocorrelation length is too long to accurately resolve.On completion, the vector
five_tau_over_m
will have one less element than the vectorac_vec
.Note that this method has limited accuracy for limited data set sizes. Also, it almost never reports a zero auto-correlation, even for completely uncorrelated data.