I have a latent factor model where there are N latent factors on every block. To make this simpler let’s assume there are 2 blocks each with T time points (N < T and J groups. The big matrix is cholesky_factor_cov[2 * T, 2 * N] F
. The sub-matrices are \mathbf{A, B, C} and are size and type cholesky_factor_cov[T, L]
, i.e.,
where \mathbf{1^D} is a diagonal matrix with 1s on the diagonal of size N \times N. \mathbf{M} is basically just a pad matrix that maintains the 0s across the first N rows and then a diagonal 1s because the N latent factors for group 1 shouldn’t be correlated with the N latent factors of group 2. The rest of \mathbf{M} are composed of 0s until the group 2 \mathbf{L_C} starts.
As you can see, I’ve constrained the diagonals of the submatrices to be 1. In the code I’ve put priors on the lower triangle of the matrices each with separate normal(mu, sigma)
where mu
and sigma
are dimension size 3. I construct the final cholesky_factor_cov
for the multivariate_normal_cholesky
by
cholesky_factor_cov[T_two] F_Sigma = cholesky_decompose(add_diag(multiply_lower_tri_self_transpose(F), sigma_y);
Y ~ multi_normal_cholesky(Mu, F_Sigma);
I’m trying to come up with a to hierarchically share information across the blocks of \mathbf{A, B, C}. Right now they each have their own normal. I was thinking something like multivariate priors for hierarchical models in the manual where, in this case, it would be a 2 vector of means and a 2 x 2 covariance matrix. But I’m struggling with how best to share information using this to the covariance block \mathbf{B}. Maybe I’m missing something simple but any suggestions are welcome.
Thanks!