Lkj(1) vs no prior on correlation matrix?

Hey all,

A simple question (hopefully): Is using lkj_corr_cholesky(1) the same thing as having no prior at all on the cholesky correlation matrix?

I was under the impression that not having a prior on a cholesky factorized cor matrix implies lkj(1).
However, I was fitting two models - identical, but coded differently, that involves a 4x4 correlation matrix. One model had lkj(1), one had no prior. The two yielded very similar, but still consistently different correlation estimates. Once I added the lkj(1) prior to the model missing it, the two lined up perfectly (within MCMC error, anyway).

Is there a reason for this?

L ~ lkj_corr_cholesky(1) is a non-uniform prior on L that implies L * L' is uniformally distributed over correlation matrices of that size. There is really no such thing as “no prior”. However, if you were to omit the L ~ lkj_corr_cholesky(1), then you would be expressing your beliefs that L is uniformally distributed over the space of Cholesky factors of correlation matrices of that size, in which case L * L' would be non-uniformally distributed over correlation matrices of that size in a weird way.


Excellent, thank you.

So if I instead had a cor matrix (not a cholesky cor matrix), then lkj_corr(1) would be the same as no [expressed] prior. (Sorry - I mispoke; I meant no expressed prior).

That is:
R ~ lkj_corr(1) is the same as //R ~ lkj_corr(1) [as in - it’s commented out and is not evaluated].

Yeah, if lkj_corr(1) gets called then it does check that it is a valid correlation matrix and throws and exception otherwise, but that should be valid by construction if you declare it in the parameters block.

1 Like

As always, thank you. Very helpful.