Re: [R] positive semi-definite matrix

From: Francisco J. Zagmutt <>
Date: Sat 22 Jul 2006 - 01:27:17 EST

Take a look at make.positive.definite in the corpcor package. The implementation is very similar to what Duncan suggested.



Dr. Francisco J. Zagmutt
College of Veterinary Medicine and Biomedical Sciences Colorado State University

>From: Duncan Murdoch <>
>To: roger bos <>
>CC: RHelp <>
>Subject: Re: [R] positive semi-definite matrix
>Date: Fri, 21 Jul 2006 09:44:42 -0400
>On 7/21/2006 8:59 AM, roger bos wrote:
> > I have a covariance matrix that is not positive semi-definite matrix and
> > 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. mailing list PLEASE do read the posting guide and provide commented, minimal, self-contained, reproducible code. Received on Sat Jul 22 01:35:58 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 - 02:16:06 EST.

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