Re: [R] positive semi-definite matrix

From: Duncan Murdoch <>
Date: Fri 21 Jul 2006 - 23:44:42 EST

On 7/21/2006 8:59 AM, roger bos wrote:
> I have a covariance matrix that is not positive semi-definite matrix and I
> need it to be via some sort of adjustment. Is there any R routine or
> package to help me do this?

I think you need to be more specific about what have and what you want, but if the matrix is symmetric and nearly positive semi-definite (but not exactly because of rounding error), you might try something like

fixit <- function(A) {

   eig <- eigen(A, symmetric = TRUE)
   eig$values <- pmax(0, eig$values)
   return(eig$vectors %*% diag(eig$values) %*% t(eig$vectors)) }

Rounding error means this is not guaranteed to be positive semi-definite, but it will be very close.

Duncan Murdoch mailing list PLEASE do read the posting guide and provide commented, minimal, self-contained, reproducible code. Received on Fri Jul 21 23:47:40 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Sat 22 Jul 2006 - 04:15:45 EST.

Mailing list information is available at Please read the posting guide before posting to the list.