[R] Constructing correlation matrices

2007-07-30 Thread Gregory Gentlemen
Greetings,

I have a seemingly simple task which I have not been able to solve today and I 
checked all of the help archives on this and have been unable to find anything 
useful. I want to construct a symmetric matrix of arbtriray size w/o using 
loops. The following I thought would do it:

p - 6
Rmat - diag(p)
dat.cor - rnorm(p*(p-1)/2)
Rmat[outer(1:p, 1:p, )] - Rmat[outer(1:p, 1:p, )] - dat.cor

However, the problem is that the matrix is filled by column and so the 
resulting matrix is not symmetric.

I'd be grateful for any adive and/or solutions.

Gregory 
   
-

[[alternative HTML version deleted]]

__
R-help@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.


Re: [R] Constructing correlation matrices

2007-07-30 Thread Bert Gunter
See ?dist for an object oriented approach that may be better.

Directly, you can do something like (see  ?row ?col):

x - matrix(NA, 10,10)
## Lower triangular :
x[row(x) = col(x) ] - rnorm(55) 
x[row(x)  col(x)] - x[row(x)  col(x)]
## or you could have saved the random vector and re-used it.


Bert Gunter
Genentech Nonclinical Statistics


-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Gregory Gentlemen
Sent: Sunday, July 29, 2007 7:32 PM
To: r-help@stat.math.ethz.ch
Subject: [R] Constructing correlation matrices

Greetings,

I have a seemingly simple task which I have not been able to solve today and
I checked all of the help archives on this and have been unable to find
anything useful. I want to construct a symmetric matrix of arbtriray size
w/o using loops. The following I thought would do it:

p - 6
Rmat - diag(p)
dat.cor - rnorm(p*(p-1)/2)
Rmat[outer(1:p, 1:p, )] - Rmat[outer(1:p, 1:p, )] - dat.cor

However, the problem is that the matrix is filled by column and so the
resulting matrix is not symmetric.

I'd be grateful for any adive and/or solutions.

Gregory 
   
-

[[alternative HTML version deleted]]

__
R-help@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.

__
R-help@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.


Re: [R] Constructing correlation matrices

2007-07-30 Thread Horace Tso
Greg,

I take it that you're trying to generate a random correlation matrix, so first 
create a covariance matrix,

p = 6
v = matrix(rnorm(p*p), ncol=p)
cov = t(v) %*% v

Then convert it to a correlation matrix,

cov2cor(cov)

HTH.

Horace


 Gregory Gentlemen [EMAIL PROTECTED] 7/29/2007 7:31:36 PM 
Greetings,

I have a seemingly simple task which I have not been able to solve today and I 
checked all of the help archives on this and have been unable to find anything 
useful. I want to construct a symmetric matrix of arbtriray size w/o using 
loops. The following I thought would do it:

p - 6
Rmat - diag(p)
dat.cor - rnorm(p*(p-1)/2)
Rmat[outer(1:p, 1:p, )] - Rmat[outer(1:p, 1:p, )] - dat.cor

However, the problem is that the matrix is filled by column and so the 
resulting matrix is not symmetric.

I'd be grateful for any adive and/or solutions.

Gregory 
   
-

[[alternative HTML version deleted]]

__
R-help@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.

__
R-help@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.


Re: [R] Constructing correlation matrices (follow up)

2007-07-30 Thread Horace Tso
Greg, in light of Doug Bates' question, what i have suggested a little early in 
response to your question is known as a Wishart matrix with n degree of 
freedom, which is guarenteed to be positive definite. If this is not what you 
want, you have to be more specific about the property of this correlation 
matrix you want to simulate.

H.




=
Greg,

I take it that you're trying to generate a random correlation matrix, so first 
create a covariance matrix,

p = 6
v = matrix(rnorm(p*p), ncol=p)
cov = t(v) %*% v

Then convert it to a correlation matrix,

cov2cor(cov)

HTH.

Horace


 Gregory Gentlemen [EMAIL PROTECTED] 7/29/2007 7:31:36 PM 
Greetings,

I have a seemingly simple task which I have not been able to solve today and I 
checked all of the help archives on this and have been unable to find anything 
useful. I want to construct a symmetric matrix of arbtriray size w/o using 
loops. The following I thought would do it:

p - 6
Rmat - diag(p)
dat.cor - rnorm(p*(p-1)/2)
Rmat[outer(1:p, 1:p, )] - Rmat[outer(1:p, 1:p, )] - dat.cor

However, the problem is that the matrix is filled by column and so the 
resulting matrix is not symmetric.

I'd be grateful for any adive and/or solutions.

Gregory 
   
-

[[alternative HTML version deleted]]

__
R-help@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.

__
R-help@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.