生成具有给定平均相关性的随机相关矩阵

时间:2016-04-01 13:05:21

标签: r matrix correlation

我想生成随机相关矩阵,其中R 为1000 * 1000,其中平均相关性(不包括对角线)为0.3。

我从库clusterGeneration查看genPositiveDefMat,但我无法弄清楚如何指定给定的相关性。

1 个答案:

答案 0 :(得分:0)

这种矩阵的一个无聊的例子是

C = (1-m)*I + m*U*U'

其中I是单位矩阵,U是所有1的向量,m = 0.3。 C是正定的,平均(实际上每个)非对角线元素是m。

因此我们可以尝试生成

形式的矩阵
C = D + alpha*U*U'

其中D是对角线和正定,α是正定标器,U是'随机'矢量。这样的矩阵将是肯定的。为了得到关闭对角线元素的正确平均值,可以得到一个小代数

alpha = dim*(dim-1)*m / (S*S-T)

,其中

S = Sum{ i | U[i] }
T = Sum{ i | U[i]*U[i]}

只要U的所有元素都是正数,我们就会

S*S>T

因此alpha将是正面的。

对于C的对角元素为1.0,我们需要

D[i] = 1 - alpha*U[i]*U[i] (i=1..dim)

所有这些都必须是非负面的。

唉我从理论上找不到如何选择U的元素来保证这一点。然而,实验上,如果U的元素是1.0到5.0之间的均匀随机数,我没有看到任何D [i]都是负数的情况。

上述U,5.0元素的上限控制着各种相关性的差异。对于5.0,它们在大约0.03和0.8之间变化,whild的上限为2.0,它们在大约0.13和0.53之间变化。 选择上限太高会增加方法失败的可能性(D不是正数)。