# IainNZ/RandomCorrelationMatrices.jl

Functions to generate random correlation matrices
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.

# RandomCorrelationMatrices

Generate random correlation matrices, for some definition of random. Currently supports just one definition/method:

Lewandowski, Daniel, Dorota Kurowicka, and Harry Joe. "Generating random correlation matrices based on vines and extended onion method." Journal of multivariate analysis 100.9 (2009): 1989-2001. doi:10.1016/j.jmva.2009.04.008

This package has two functions, `randcormatrix(d, η)` and `randcovmatrix(d, η, σ)` . `d` is the dimension, and `η` is a parameter that controls the distribution of the off-diagonal terms. `randcovmatrix` is used to generate a covariance matrix from the output of `randcormatrix`, where the standard deviation of each component is controlled by `σ`.

To get a feel for how to set `η`, consider the following output from `test/runtests.jl`, which shows some example matrices and the average range of off-diagonals:

``````η => 2
1.00  0.07  0.59  0.78
0.07  1.00  0.28 -0.03
0.59  0.28  1.00  0.69
0.78 -0.03  0.69  1.00
mean(ranges) => 0.9609607012737842
median(ranges) => 0.9522641114303307
η => 8
1.00 -0.24  0.15  0.18
-0.24  1.00 -0.10 -0.06
0.15 -0.10  1.00  0.02
0.18 -0.06  0.02  1.00
mean(ranges) => 0.5846747844778034
median(ranges) => 0.5787807331445632
η => 32
1.00 -0.06  0.08 -0.11
-0.06  1.00 -0.05  0.12
0.08 -0.05  1.00 -0.14
-0.11  0.12 -0.14  1.00
mean(ranges) => 0.3094525766085337
median(ranges) => 0.3050648782864559
η => 128
1.00  0.05 -0.00 -0.02
0.05  1.00 -0.05  0.07
-0.00 -0.05  1.00  0.03
-0.02  0.07  0.03  1.00
mean(ranges) => 0.15721653854980638
median(ranges) => 0.15120529987720227
``````

Pull requests welcome for additional methods of generating random correlation matrices that are described in the literature.