[R] generating symmetric matrices

Douglas Bates bates at stat.wisc.edu
Mon Jul 30 18:48:18 CEST 2007

On 7/30/07, Gregory Gentlemen <gregory_gentlemen at yahoo.ca> wrote:
> Douglas Bates <bates at stat.wisc.edu> wrote:
>  On 7/27/07, Gregory Gentlemen wrote:
> > Greetings,
> > I have a seemingly simple task which I have not been able to solve today.
> 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.
> Could you provide more detail on the properties of the symmetric
> matrices that you would like to generate? It seems that you are
> trying to generate correlation matrices. Is that the case? Do you
> wish the matrices to be a random sample from a specific distribution.
> If so, what distribution?
> Yes, my goal is to generate correlation matrices whose entries have been
> sampled independently from a normal with a specified mean and variance.

I think that will be difficult.  For one thing correlations are
constrained to be in [-1,1].  Also, when you get into dimensions
greater than 2 the set of allowable correlation matrices is
constrained with difficult constraints.

Maybe you should reconsider what you are trying to do.

More information about the R-help mailing list