An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110411/d2bd7a79/attachment.pl>
Coding matrix equation
4 messages · Matthew Robinson, PIKAL Petr, Joshua Wiley +1 more
Hi r-help-bounces at r-project.org napsal dne 11.04.2011 09:43:03:
Hi all, I have two matrices: G<-matrix(c(2.0, 0.5, 0.5, 0.5, 2.0, 0.5, 0.5, 0.5,2.0),3,3) P<-matrix(c(1.0, 0.5, 0.5, 0.5, 1.0, 0.5, 0.5, 0.5,1.0),3,3) and I want to run this equation to get a new matrix F: F = [P+2G]^-1/2 P [P+2G]^-1/2
Is this what you want? (P+2*G)^-1/2 * P * (P+2*G)^-1/2 Regards Petr
Could someone please tell me how to code this in R? Many thanks in advance for your time. Best wishes, Matt [[alternative HTML version deleted]]
______________________________________________ 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.
Hi Matt,
Petr gave you one possibility. If you are looking for more matrix
operations see:
?"%*%" # the inner product of the matrices
?"%o%" # the outer product of the matrices
?"(" # for parentheses to help order things
require(MASS) # load the package MASS
?ginv # for the generalized inverse of a matrix
For things like constants which you just want treated normally, use
the regular multiplication operator, "*", not the matrix one.
HTH,
Josh
On Mon, Apr 11, 2011 at 12:43 AM, matthew.r.robinson at sheffield.ac.uk
<matthew.r.robinson at sheffield.ac.uk> wrote:
Hi all, I have two matrices: G<-matrix(c(2.0, 0.5, 0.5, 0.5, 2.0, 0.5, 0.5, 0.5,2.0),3,3) P<-matrix(c(1.0, 0.5, 0.5, 0.5, 1.0, 0.5, 0.5, 0.5,1.0),3,3) and I want to run this equation to get a new matrix F: F = [P+2G]^-1/2 P [P+2G]^-1/2 Could someone please tell me how to code this in R? Many thanks in advance for your time. Best wishes, Matt ? ? ? ?[[alternative HTML version deleted]]
______________________________________________ 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.
Joshua Wiley Ph.D. Student, Health Psychology University of California, Los Angeles http://www.joshuawiley.com/
On Mon, Apr 11, 2011 at 08:43:03AM +0100, matthew.r.robinson at sheffield.ac.uk wrote:
Hi all, I have two matrices: G<-matrix(c(2.0, 0.5, 0.5, 0.5, 2.0, 0.5, 0.5, 0.5,2.0),3,3) P<-matrix(c(1.0, 0.5, 0.5, 0.5, 1.0, 0.5, 0.5, 0.5,1.0),3,3) and I want to run this equation to get a new matrix F: F = [P+2G]^-1/2 P [P+2G]^-1/2 Could someone please tell me how to code this in R?
Hi.
Try the following.
sqrtSymMat <- function(A)
{
out <- eigen(A)
D <- diag(out$values)
U <- out$vectors
U %*% sqrt(D) %*% t(U)
}
A <- sqrtSymMat(solve(P + 2*G))
F <- A %*% P %*% A
See also the function svd() and its help ?svd.
The operator A^(1/2) works component-wise. There may be a function
computing the square root of a positive semidefinite matrix in some
of the CRAN extension packages
http://cran.at.r-project.org/web/packages/index.html
but i am not sure. The package mvtnorm
http://cran.at.r-project.org/web/packages/mvtnorm/index.html
computes the square root of a matrix internally. See the help
of the function ?rmvnorm.
Hope this helps.
Petr Savicky.