[R] how to randomly generate a n by n positive definite matrix in R ?
Ravi Varadhan
rvaradhan at jhmi.edu
Thu Feb 7 20:02:30 CET 2008
Here is a simple function:
##########################################################
# Generating a random positive-definite matrix with user-specified positive
eigenvalues
# If eigenvalues are not specified, they are generated from a uniform
distribution
Posdef <- function (n, ev = runif(n, 0, 10))
{
Z <- matrix(ncol=n, rnorm(n^2))
decomp <- qr(Z)
Q <- qr.Q(decomp)
R <- qr.R(decomp)
d <- diag(R)
ph <- d / abs(d)
O <- Q %*% diag(ph)
Z <- t(O) %*% diag(ev) %*% O
return(Z)
}
pdmat <- Posdef(n=5, ev=1:5)
eigen(pdmat)$val
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: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
Behalf Of jinjin
Sent: Thursday, February 07, 2008 1:32 PM
To: r-help at r-project.org
Subject: [R] how to randomly generate a n by n positive definite matrix in R
?
thanks
--
View this message in context:
http://www.nabble.com/how-to-randomly-generate-a-n-by-n-positive-definite-ma
trix-in-R---tp15340155p15340155.html
Sent from the R help mailing list archive at Nabble.com.
______________________________________________
R-help at r-project.org 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