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.


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?

  • 1
    $\begingroup$ 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. $\endgroup$ – Xi'an Jan 29 '15 at 13:20
  • $\begingroup$ @Xi'an: Thanks! Can you please be a bit more specific? $\endgroup$ – Blade Runner Jan 29 '15 at 13:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.