创建相关向量矩阵

时间:2013-12-16 18:09:46

标签: matlab correlation

我正在尝试创建2个nxm矩阵(A和B),其中A和B的所有列彼此相关(0.6)。矩阵A和B中的值来自单独的正态分布。我有以下内容,但是当我检查输出中的相关性时,不是0.6。我做错了什么?

m=30
n=100    
%Two distributions
Mu1=0.0033;
stdev1=0.0208;
Mu2=0.0033;
stdev2=0.016801;
cor=0.6;
%creating a nxm matrix by calculating correlated vectors one by one
for y=1:m
W(1:n,1)=Mu1+stdev1*randn(n,1);
W(1:n,2)=Mu2+stdev2*randn(n,1);
R=[1 cor;cor 1];
L=chol(R);
W=W*L;
%Transfer to seperate matrices A and B
A(:,y)=W(:,1);
B(:,y)=W(:,2);
end 

1 个答案:

答案 0 :(得分:0)

Cholesky因子分解对这种操作非常有效,但是我发现它的相关性太高了。取每行的平均相关性给出

对于n = 100,corrAvg = 0.68并且对于n = 1000

几乎相同

在matlab中获取矩阵平方根的更好方法是使用sqrtm。

这给出了平均相关性

对于n = 100,corrAvg = 0.61,对于n = 1000,则为0.60。

当然,对于n = 1000,标准偏差要小得多,如果你只使用100个值,那么每列都能得到完美的0.60相关性。

相关问题