Gaussian Processes. Latent vs Marginal

Hello, PyMC community!

I recently started discovering Gaussian Processes, but feel that those can be very powerful tools for modelling.

Can you please help me understand the difference between Latent and Marginal processes?
From PyMC docs I can only understand that Marginal has additive noise (while Latent does not).


  1. Can you please say if there’s any difference for using Marginal and Latent processes on interpretation level? (i.e. for modelling which cases is best to choose which?)

  2. I can as well see that there are some differences on how Marginal and Latent are implemented technically, e.g.:

  • you cannot use Periodic covariance function with Latent processes (only Marginal)
  • you can add some Latent process into your pm.Deterministic, while it seems to be impossible for Marginal
  • Marginal process requires some very specific gp.marginal_likelihood

Are those peculiarities related to some conceptual difference of the processes or are purely technical?

Very much appreciate your recommendations!


The latent GP is typically used when you have a non-normal likelihood, or when you want to add additional components to the model before passing it to the likelihood. For example, if you are analyzing count data, you will likely assume a Poisson or negative binomial data generating process, so you would model the mean as a latent GP, and transform it before passing it to the likelihood. The interpretation is really no different. You should be able to use a periodic covariance with a latent GP, AFAIK.


Just want to add that you can use any covariance for either Marginal or Latent, no restrictions.