2013-12-16 145 views
0

我正在嘗試創建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 
+0

'corr(A(:),B(:))'對我而言約爲0.68。這是'問題'嗎? –

+0

是的。雖然價值觀可能會分化更多。後三個我嘗試過:0.4485,0.8335,0.6640。它不應該至少接近0.6的標誌嗎? – AJM

回答

0

喬列斯基因子分解對這個操作很有效,但是我發現它給了一點點太高的相關性。以每行的平均相關給出

corrAvg = 0.68對於n = 100和幾乎相同的對於n = 1000

一種更好的方式採取矩陣平方根在MATLAB是使用sqrtm。

這使平均相關性

corrAvg = 0.61 N = 100和0.60 N = 1000

然後,當然,標準偏差爲N = 1000小得多,如果你只使用100值是每個列獲得完美的0.60相關性是一個問題。

+0

太好了。正是我在找什麼! – AJM