E-BFMI threshold or threshold(s)?

At times, when fitting a stan model involves a low E-BFMI problem, I am provided with the usual warning :

> fit.binom <- stan('simu_CAR.stan', data = dat_binom_stan, 
+                               iter = niter, chains = nchains, verbose = FALSE)
Warning messages:
1: There were 1 chains where the estimated Bayesian Fraction of Missing Information was low.
 See http://mc-stan.org/misc/warnings.html#bfmi-low 
2: Examine the pairs() plot to diagnose sampling problems

However if I call check_energy() , I see no trace of the initial warning :

> check_energy(fit.binom)
E-BFMI indicated no pathological behavior.

It seems that the stan() main function will raise a warning if E-BFMI is lower than 0.3. (as inidcated in 6.1 - A Conceptual Intorduction to Hamiltonian Monte Carlo, p. 44) whereas the check_energy() function will considered 0.2 as a threshold for pathological behaviors as one can see in the help file ?

Is that indeed the case and is there a practical reason to that ? (Not an earth-shattering problem, but still tickling my curiousity)

PS : R version 3.5.0 and rstan version 2.17.3

Yes, that is the case. The practical reason for that is that the original threshold was 0.3 and then it got changed to 0.2 and rstan has not updated yet and it is mostly guesswork as to where in that vicinity you should start to worry.

2 Likes

Thanks for that clarification.