Here’s an example figure of Geyer’s initial positive sequence
Upper plot shows the autocorrelation estimated as described in BDA3. The autocorrelation with lag 1 is negative (-0.082) and the current chains.hpp code then cuts at t=0. The bottom plot shows the sums of even and odd lag autorrelation pairs. Geyer writes that series of these are positive, monotone and convex, and thus proposes cutting when the first one of the pairs is negative. This still allows negative autocorrelations for odd lags which is possible to happen. In this example, the first negative pair is for lags 4 and 5, and thus the last autocorrelation to be included is lag 3. Sum of autocorrelations from lags 0, 1, 2 and 3 is 0.945 and the relative efficiency is 106%. Usually the autocorrelation for lag 0 is shown in equations directly as 1, and then the sum of autocorrelations from lags 1, 2 and 3 is -0.055. I did test with longer chains, and the negative autocorrelation at lag 1 persists.
Years ago (my code is from 2002-2003) I experimented with this a lot, and I found it to work well and I trust it so much that I put it in BDA3. I experimented also with Geyer’s monotone and convex sequence estimators, but there wasn’t much difference and initial positive sequence estimator is slightly more conservative.
I would prefer to use Geyer’s monotone sequence estimator as described in BDA3, and I would not cap n_eff, but I would try to inform widely to not be surprised that n_eff can be larger than N. Some people have also wondered how it’s possible to get exactly n_eff equal to N.