2016-05-12 8 views
0

特定の相関構造を持つ3つの変数(通常は平均= 1とsd = 1で作成)をシミュレートしたいと思います。3つの変数のすべての相関行列を作成します。

I相関を通過したい各変数は、0.1

の増分で0.1〜0.9の値については、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 

あろうこれら3つの相関値を用いて分散共分散行列を構築する。

これを行う簡単な方法はありますか?

+0

私が正しく理解していれば、それぞれ異なる相関構造を持つ一連の(可能な)729個のデータセットを生成したいでしょうか? –

+0

はい、まさに私が探しているものです – user6193945

+0

OK、あなたの「相関行列」のいくつかは実際には相関行列ではないことに注意してください:負の固有値を持つことになります。例えば、0.8〜0.7の組み合わせは、相関行列ではない何かを与える。 (私はいくつかの計算を実行し、これは729の可能な組み合わせのうち78に関係していると思う) –

答えて

0

rパッケージmvtnormを試してください。

は、あなたの相関行列sを定義し、このような変数をシミュレート:

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

今、あなたはループを構築し、あなたが望む秒のすべての組み合わせ、通過することができます。

+0

明示的なループの代わりにここで 'mapply'を使うことができると思います。 expand.grid(i = 1:3、j = 1:3、k = 1:3)) 'do.call(mapply、c(FUN = function(i、j、k){i + j + k} ) ' –

関連する問題