Créer une matrice de corrélationJe dois créer une matrice de corrélation pour certaines simulations. Je souhaite que tous les éléments hors diagonale de la corrélation aient la même valeur. Voici un script simple qui le permet, mais je me demandais s'il existait une méthode plus simple.
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">
Automatisation et scriptsRe: Créer une matrice de corrélationJe ne connais pas de méthode plus simple, mais si vous souhaitez une méthode plus simple parce que vous prévoyez d'utiliser votre code fréquemment, vous pouvez le transformer en fonction, comme dans l'exemple ci-dessous. L'appeler sera alors plus simple à chaque fois.
//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);