Create Lower Triangular Matrix RV for Multi Output GP with LCM

#1

Hi all,

I have been playing with a simple toy problem with multi output GP with Linear model of coregionalization (reference paper can be seen in https://www.researchgate.net/publication/322077462_Remarks_on_Multi-Output_Gaussian_Process_Regression).

I am currently stuck at creating a lower triangular matrix L for A = L*L.T (trying to reproduce page 10 in the paper). I need to have a lower triangular matrix L where each element is a correlation parameter.
The L would be the input W for ‘’‘pymc3.gp.cov.Coregion’’’.

I tried several things (simple double loop with numpy, using theano shared variable, using theano scan), but all of them come with some errors.
My recent attempt is here: https://gist.github.com/ferdianjovan/e96e9d2c33ea0a42dc5d7c35a9a4bbc0
(focus on line 53 - 58).
Current error is because a TensorVariable does not have test value, but if you just take the 3 functions there (row_update, column_update, and matrix_update) and test them with simple array, they work.

Any pointer is much appreciated
Thank you

#2

Hi @fjovan

Check out this notebook for the multivariate Gaussian where a lower-triangular matrix is created:

https://docs.pymc.io/notebooks/LKJ.html

And take a look at the docstring for expand_packed_triangular.

1 Like
#3

Thank you so much @chartl for pointing to LKJ and expand_packed_triangular.

That helped me.