2016-05-12 63 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)) )' –