[R] positive semi-definite matrix

Ravi Varadhan rvaradhan at jhmi.edu
Fri Jul 21 17:33:23 CEST 2006

There is a paper by N.J. Higham (SIAM J Matrix Anal, 1998) on a modified
cholesky decomposition of symmetric and not necessarily positive definite
matrix (say, A), with an important goal of producing a "small-normed"
perturbation of A (say, delA), that makes (A + delA) positive definite.

There is also an algorithm in Gill, Murray and Wright's text - Practical
Optimization (section 4.4.2).

These may be relevant to your problem.  I am not sure if these algorithms
have been implemented in R, for example, in the "matrix" library. 


Ravi Varadhan, Ph.D.
Assistant Professor,  The Center on Aging and Health
Division of Geriatric Medicine and Gerontology
Johns Hopkins University
Ph: (410) 502-2619
Fax: (410) 614-9625
Email:  rvaradhan at jhmi.edu
Webpage: http://www.jhsph.edu/agingandhealth/People/Faculty/Varadhan.html 

> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch [mailto:r-help-
> bounces at stat.math.ethz.ch] On Behalf Of Duncan Murdoch
> Sent: Friday, July 21, 2006 9:45 AM
> To: roger bos
> Cc: RHelp
> Subject: Re: [R] positive semi-definite matrix
> 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
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-
> guide.html
> and provide commented, minimal, self-contained, reproducible code.

More information about the R-help mailing list