Why is sampling sometimes slow?

It’s more of a problem when the bad conditioning comes from correlation than simply from varying scales. Consider these two ways to get thin cigars out of 2D normals with bad conditioning:

  1. A highly correlated 2D normal, e.g., normal(0, [[1, 0.99], [0.99, 1]]).
  2. A differently scaled 2D normal, e.g., normal(0, [[4, 0], [0, 0.01]]).

Both give you long narrow regions with mismatched scales. The axis-aligned version (2) is easier to adjust for with a diagonal mass matrix, which is what PyMC is going to use by default. So (2) shouldn’t be a problem, but (1) will be.

It’s mainly (1) that you are adjusting with non-centered parameterizations.

1 Like