Crear una matriz de correlaciónNecesito crear una matriz de correlación para usarla en algunas simulaciones. Quiero que todos los elementos fuera de la diagonal de la correlación tengan el mismo valor. Aquí hay un script sencillo que lo hace, pero me preguntaba si habría una forma más sencilla de hacerlo.
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">
Automatización y scriptingRe: Crear matriz de correlaciónNo conozco una forma más sencilla, pero si buscas una forma más sencilla porque planeas usar tu código con frecuencia, podrías convertirlo en una función, como se muestra en el ejemplo a continuación. Así, llamarlo será más sencillo cada vez.
//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);