Yep, I think those are more interesting questions. I see a lot of questions in issues and on stack overflow where users manually assign Metropolis
as a step method, and this was mostly to point at as evidence that you should not do that unless you have a great reason to do so. One of my favorite textbook series are the âCounterexamples in Xâ, and this was an attempt to make a concrete example of where Metropolis
fails.
I think your two questions would be particularly interesting if you could find examples that were surprising:
-
PyMC3
automatically will use NUTS
for anything continuous, and Metropolis
for discrete, and I do not know any situation where using Metropolis
for all the variables would do better.
-
You would only use HMC
if you wanted to tune a few extra variables by hand. I would be interested to see a situation in which hand-tuned HMC
does better enough to justify the hand tuning.