code: def LOO(self, kern, X, Y, likelihood, posterior, Y_metadata=None, K=None):
          
          g = posterior.woodbury_vector
          c = posterior.woodbury_inv
          c_diag = np.diag(c)[:, None]
          neg_log_marginal_LOO = 0.5*np.log(2*np.pi) - 0.5*np.log(c_diag) + 0.5*(g**2)/c_diag
          #believe from Predictive Approaches for Choosing Hyperparameters in Gaussian Processes
          #this is the negative marginal LOO
          return -neg_log_marginal_LOO
docs: Leave one out error as found in
          "Bayesian leave-one-out cross-validation approximations for Gaussian latent variable models"
          Vehtari et al. 2014.