# Copulas for generating uniform random variables with correlations

I want to generate uniform random variables which have a correlation structure defined by a graph i.e. a variable is only correlated with its neighbors in the graph and is uncorrelated with the rest conditional on its neighbors.

It seems that I should specify this as a precision matrix (and not a correlation matrix) with 0s entries for non-neighbors of a node; for simplicity lets also assume that the non-zero entries are distributed $\mathcal{U}(0,1)$. This is so since the precision matrix implies partial correlations and that's what I should target as having 0 correlations in a graph. I hope that makes sense?

So, I have been thinking of this problem as a copula with margins given by uniform and the joint also a uniform with the correlation matrix as the inverse of the precision matrix above.

However,

1). The results that I get don't seem to show the desired correlation structure.

2). It is computationally inefficient to invert a 50k*50k matrix in R.

Any thoughts on how I could efficiently do this while also assuring that the correlation matrix stays positive definite?

• I would suggest a Gibbs sampling strategy as it breaks the dimension problem into a sequence of much smaller problems thanks to the conditional independence provided by the correlation matrix. Commented Jan 29, 2015 at 13:20
• @Xi'an: Thanks! Can you please be a bit more specific? Commented Jan 29, 2015 at 13:22