[R] positive semi-definite matrix

Martin Maechler maechler at stat.math.ethz.ch
Fri Jul 21 19:13:39 CEST 2006


>>>>> "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