相関行列を作成するいくつかのシミュレーションで使用する相関行列を作成する必要があります。相関の非対角要素をすべて同じ値にしたいです。これを実行する簡単なスクリプトはここにありますが、もっと簡単な方法があるかどうか疑問に思っています。
names default to here(1);
// create correlation matrix with specified correlation
k=5;
r=0.9;
corr_matrix=J(k,k,r);
// diagonal elements equal to 1 by adding (1-r)
corr_matrix=corr_matrix + diag(J(k,1,1-r));
This creates the matrix
[1 0.9 0.9 0.9 0.9,
0.9 1 0.9 0.9 0.9,
0.9 0.9 1 0.9 0.9,
0.9 0.9 0.9 1 0.9,
0.9 0.9 0.9 0.9 1]
</CODE></P>
<BR />
<PRE><CODE class=" language-jsl">
自動化とスクリプトRe: 相関行列の作成もっと簡単な方法は知りませんが、コードを頻繁に使用する予定で、もっと簡単な方法が必要な場合は、以下の例のように関数にすることができます。そうすれば、毎回呼び出すのが簡単になります。
//function
make_cm = function ({k,r},
corr_matrix=J(k,k,r);
// diagonal elements equal to 1 by adding (1-r)
corr_matrix=corr_matrix + diag(J(k,1,1-r));
);
//call the function
make_cm (5, .9);