Also, which model, if any, falls under centered/noncentered parametrization?
The centered parameterization for a multivariate normal is when you do:
y ~ multi_normal(zero, Sigma);
The non-centered is when you do:
z ~ normal(0, 1);
y = cholesky_decompose(Sigma) * z;
The specifics of the naming I dunno. I always go to Betancourt’s divergences case study if I get confused about this stuff: http://mc-stan.org/users/documentation/case-studies/divergences_and_bias.html
Can somebody advice which cholesky decomposition is more effective in stan?
I think hierarchical models without much data -> divergences. I think there’s a data dependence there. Easiest way to figure out which parameterization works better for you is to try them both, but if your centered parameterization is running fine (no divergences and diagnostics looking good), I don’t think think there’s a huge call to switch. I might be wrong.
The non-centered parameterizations always trip me up for a bit when I’m reading models, so I prefer to keep them centered for readability if I can.
I think you’re using your Choleskys here correctly.
Can models be optimized even more?
sigma = 2.5 * tan(sigma_unif); // sigma ~ cauchy(0, 2.5)
for (k in 1:K) tau[k] = 2.5 * tan(tau_unif[k]); // tau ~ cauchy(0, 2.5)
Why not just use the cauchy syntax here? I’m not sure with the constraints on tau and sigma this is totally right.
And cauchy priors aren’t all roses (Asymmetric Gaussian Hierarchical Model). They’re serious when they talk about those heavy tails :P (draw some numbers from cauchy(0.0, 1.0) and just look at them).