[R] positive semi-definite matrix

Francisco J. Zagmutt gerifalte28 at hotmail.com
Fri Jul 21 17:27:17 CEST 2006

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 <murdoch at stats.uwo.ca>
>To: roger bos <roger.bos at gmail.com>
>CC: RHelp <r-help at stat.math.ethz.ch>
>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
>R-help at stat.math.ethz.ch mailing list
>PLEASE do read the posting guide 
>and provide commented, minimal, self-contained, reproducible code.

More information about the R-help mailing list