Crea matrice di correlazioneDevo creare una matrice di correlazione da usare per alcune simulazioni. Voglio che tutti gli elementi fuori diagonale della correlazione abbiano lo stesso valore. Ecco uno script semplice che lo fa, ma mi chiedevo se ci fosse un modo più semplice per farlo.
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">
Automazione e scriptingRe: Creare matrice di correlazioneNon conosco un modo più semplice, ma nel caso in cui volessi un modo più semplice perché hai intenzione di usare il tuo codice di frequente, potresti trasformarlo in una funzione, come nell'esempio seguente. Quindi, chiamarlo è più semplice ogni volta.
//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);