[R] positive semi-definite matrix

Ravi Varadhan rvaradhan at jhmi.edu
Fri Jul 21 19:34:30 CEST 2006


Martin,

You are most welcome.  I apologize for my faux pas.  I really did mean to
say "Matrix" package, but got sloppy!

There is also another (more recent) article by Higham:
http://www.maths.man.ac.uk/~nareports/narep369.pdf
 

Best,
Ravi.

--------------------------------------------------------------------------
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: Martin Maechler [mailto:maechler at stat.math.ethz.ch]
> Sent: Friday, July 21, 2006 1:14 PM
> To: Ravi Varadhan
> Cc: 'Duncan Murdoch'; 'roger bos'; 'RHelp'; bates at r-project.org
> Subject: Re: [R] positive semi-definite matrix
> 
> >>>>> "Ravi" == Ravi Varadhan <rvaradhan at jhmi.edu>
> >>>>>     on Fri, 21 Jul 2006 11:33:23 -0400 writes:
> 
>     Ravi> There is a paper by N.J. Higham (SIAM J Matrix Anal,
>     Ravi> 1998) on a modified cholesky decomposition of
>     Ravi> symmetric and not necessarily positive definite matrix
>     Ravi> (say, A), with an important goal of producing a
>     Ravi> "small-normed" perturbation of A (say, delA), that
>     Ravi> makes (A + delA) positive definite.
> 
>     Ravi> http://epubs.siam.org/sam-bin/dbq/article/30289
> 
>     Ravi> There is also an algorithm in Gill, Murray and
>     Ravi> Wright's text - Practical Optimization (section
>     Ravi> 4.4.2).
> 
> Thanks a lot, Ravi,
> for the interesting references, in the past I once had looked
> for such things but did not find any --- most probably because I
> used wrong keywords.
> 
>     Ravi> These may be relevant to your problem.  I am not sure
>     Ravi> if these algorithms have been implemented in R, for
>     Ravi> example, in the "matrix" library.
> 
> Ooooo... !  It's  "Matrix" and  `package', yes `package', yes `package' ..
> 
> but no, it hasn't been implemented there yet, AFAIK.
> OTOH, it's not a bad idea to do there, since it's building on
> the  LDL' cholesky factorization   which we are using
> in "Matrix" in other places anyway.
> 
> Thanks again for your help!
> Martin Maechler, ETH Zurich
> 
>     Ravi> ----------------------------------------------------------------
> ----------
>     Ravi> Ravi Varadhan, Ph.D.
>     Ravi> Assistant Professor,  The Center on Aging and Health
>     Ravi> Division of Geriatric Medicine and Gerontology
>     Ravi> Johns Hopkins University
>     Ravi> Ph: (410) 502-2619
>     Ravi> Fax: (410) 614-9625
>     Ravi> Email:  rvaradhan at jhmi.edu
>     Ravi> Webpage:
> http://www.jhsph.edu/agingandhealth/People/Faculty/Varadhan.html
>     Ravi> ----------------------------------------------------------------
> ----------
> 
>     >> -----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
>



More information about the R-help mailing list