In Bayesian data analysis, the log determinant of symmetric positive definite matrices often pops up as a normalizing constant in MAP estimates with multivariate Gaussians (ie, chapter 27 of Mackay). Oftentimes, the determinant of A will evaluate as infinite in Matlab although the log det is finite, so one can’t use log(det(A)). However, we know that:
(Cholesky decomposition)
(determinant of a lower triangular matrix)
(log rule)
Thus to calculate the log determinant of a symmetric positive definite matrix:
L = chol(A); logdetA = 2*sum(log(diag(L)));
Thank you for this! Was having problems with log(det(K)) for optimizing GP hyperparameters.
Thanks for sharing! Does it work for positive semi-definite matrices too?
no
[…] of the determinant. The solution, if you’re just wanting the log likelihood anyway, is given by this post, but I repeat the main Matlab commands (Note: the covariance matrix must be positive definite for […]
[…] the determinant. The solution, if you’re just wanting the log likelihood anyway, is given by this post, but I repeat the main Matlab commands (Note: the covariance matrix most be positive definite for […]
[…] inference in models with Gaussian priors or likelihoods. They can be quite troublesome to compute; done through the Cholesky decomposition, it’s an operation. It’s pretty much infeasible to compute the exact log det for […]