2016-05-12 40 views
0

我想模拟3个具有特定相关结构的变量(通常用平均值= 1和sd = 1分配)。为3个变量创建所有可能的相关矩阵

对于每个我想要经过相关的变量值0.1〜0.9的三个变量的0.1

SO可能的相关的增量将是

X1 X2 X3 
0.1 0.1 0.1 
0.1 0.1 0.2 
0.1 0.1 0.3 
.. 
0.9 0.9 0.9 

在我想结束使用这三个相关值来构造方差 - 协方差矩阵。

有没有简单的方法来做到这一点?

+0

如果我理解正确,您希望生成一组(可能)729个数据集,每个数据集都有不同的相关结构? –

+0

是的,这正是我正在寻找的 – user6193945

+0

好的,那么请注意,一些“相关矩阵”实际上不是相关矩阵:它们将具有负的特征值。例如组合0.8 0.7 0.1将给出不是相关矩阵的东西。 (我跑了一些计算,我认为这涉及729个可能的组合中的78个) –

回答

0

尝试将R包mvtnorm

定义你的相关矩阵s,并模拟像这样的变量:

x<-rmvnorm(n, mean = rep(0, nrow(sigma)), sigma = s) 

现在你可以构造一个循环,并办理要S的所有组合。

+0

我认为可以在这里使用'mapply'而不是显式循环,例如do.call(mapply,c(FUN = function(i,j,k){i + j + k),expand.grid(i = 1:3,j = 1:3,k = 1:3)) )' –