Crea la mia mappa dei colori sulla correlazione e sulla matrice di correlazioneripostando, devo aver cancellato accidentalmente il post originale:
Sto scrivendo un copione didattico e dimostrativo che:
- Creare una matrice di covarianza casuale di una dimensione specificata e calcolare la matrice di correlazione corrispondente (C)
- Crea dati normali multivariati casuali con un numero specificato di righe e un vettore medio, in base alla matrice di covarianza
- emettere i dati simulati in una tabella di dati ed eseguire l'analisi della piattaforma multivariata su tali dati
quello che voglio includere anche nell'output dello script, nella finestra del report, è una visualizzazione della matrice di correlazione iniziale (C) che avevo creato, e la mappa dei colori corrispondente, simile a quanto mostrato nella piattaforma multivariata per la matrice di correlazione stimata. Non riesco a capire come creare le caselle degli assi per la matrice di correlazione (C), né come creare la mappa dei colori sulle correlazioni della matrice C.
Ecco la mia sceneggiatura:
Names Default To Here( 1 );
//simulate multivariate normal data with random correlation
//number of rows of data
n = 10;
// number of variables
k = 20;
//create list of variable names
varlist = {};
For( ii = 1, ii <= k, ii++,
Insert Into( varlist, "X" || Char( ii ) )
);
//create mean vector
meanvec = J( k, 1, 0 );
//create random M matrix
M = Diag( J( k, 1, 10 + Random Normal() ) );
//make empty E matrix
E = [];
//fill the E matrix
For( ii = 1, ii <= k, ii++,
// create random eigenvector
vec = J( k, 1, Random Uniform() - (0.5) );
// normalize it
vec = vec / Sqrt( vec` * vec );
//append to E matrix
E = E || vec;
);
// create covariance matrix from eigenvector (E) matrix and eigenvalue (M) matrix
covariance = E * M * E`;
// create correlation matrix by scaling covariance by the diagonal elements
correlation = J( k, k, . );
For( ii = 1, ii <= k, ii++,
For( jj = 1, jj <= k, jj++,
correlation[ii, jj] = covariance[ii, jj] / (Sqrt( covariance[ii, ii] * covariance[jj, jj] ))
)
);
// simulate multivariate normal data
data = J( n, k, Random Normal() );
data = data * Sqrt( Diag( M ) ) * E`;
// make into data table
_dt_out = As Table( data, <<COLUMN names=""></COLUMN>Ecco un esempio di output:

Ri: Crea la mia mappa dei colori sulla correlazione e sulla matrice di correlazionePuoi fare la stessa cosa in Graph Builder, usando una Shape Map. Puoi creare una mappa Shape di 50x50 o più grande, quindi usarla con qualsiasi matrice di correlazione fino a quella dimensione. La mappa visualizzerà solo gli elementi per i quali ha dati, quindi vedrai solo la matrice XxX effettiva
Ri: Crea la mia mappa dei colori sulla correlazione e sulla matrice di correlazioneGrazie, Marco, per il suggerimento. Sapevo di poterlo fare se avessi trasformato la matrice in una tabella impilata e utilizzato il costruttore di grafici o il grafico delle celle. Speravo solo di poter utilizzare l'oggetto di visualizzazione Cell Plot Box (), ma penso che l'elemento di visualizzazione sia disponibile solo per le funzioni JMP interne, non tramite JSL. Almeno l'elemento di visualizzazione Matrix Box() può essere utilizzato tramite JSL.
Ho escogitato una soluzione, usando solo una casella grafica, che ottiene almeno la mappa dei colori (senza etichette degli assi). Vedi sotto.
// start matrix color map script
names default to here(1);
corr_mat = [1 0 -1,
0 1 .5,
-1 .5 1];
_nw = New Window("Color Map",
_gb=graph box(
SuppressAxes,
xscale(0,1),
yscale(0,1),
frame size(300,300),
nr=nrows(corr_mat);
nc=ncols(corr_mat);
xinc=1/nc; yinc=1/nr;
for(ii=1, ii<=nr, ii++,
for(jj=1, jj<=nc, jj++,
fill color(heat color((corr_mat[ii,jj]+1)/2, <<"Blue to Gray to Red"));
Rect((jj-1)*xinc,
1-(ii-1)*yinc,
jj*xinc,
1-(ii*yinc),
1
)
)
);
)
);che fornisce questo risultato per la matrice 3x3

Ri: Crea la mia mappa dei colori sulla correlazione e sulla matrice di correlazioneOra capisco che hai le correlazioni in una matrice, non in una piattaforma. Il seguente approccio potrebbe funzionare. Se è così, allora può essere aggiunto al tuo script.
Ho usato il Fitness tabella di dati dalla cartella dei dati di esempio di JMP. Ho selezionato Analizzare > Metodi multivariati > Multivariato . Entrai Oxy Attraverso MaxPulse nel Y ruolo. Ecco il risultato:


Vuoi creare questa mappa con la tua matrice di correlazioni.
- Fare clic con il tasto destro su questa tabella e selezionare Trasforma in tabella dati . (Si noti che prima si salva la matrice come tabella di dati, si aggiunge la colonna Riga corrispondente e si denominano le colonne di dati in modo appropriato.)
- Selezionare Tabelle > Pila .
- Selezionare Età Attraverso MaxPulse e clicca Pila .
- accedere Correlazione per il nome della colonna di dati.
- accedere Colonna per il nome della colonna dell'etichetta.
- Clic OK .
- Selezionare Grafico > Costruttore di grafici .
- Lagna Riga A X .
- Lagna Colonna A Y .
- Lagna Correlazione A Colore .
- Clicca il Mappa di calore elemento in alto.
Ecco il risultato:

Quindi penso che tu possa usare alcuni oggetti JMP di alto livello per ottenere la mappa termica che desideri.
Non penso che sarebbe possibile scrivere da zero la mappa di calore data la sua struttura nella piattaforma multivariata, ma altri potrebbero conoscere un modo. Ecco la parte dell'albero di visualizzazione per la mappa delle correlazioni mostrata sopra:

Ri: Crea la mia mappa dei colori sulla correlazione e sulla matrice di correlazionePerché non utilizzare la mappa dei colori delle correlazioni nel report multivariato?
In genere consigliamo di utilizzare il più possibile gli oggetti incorporati (piattaforme intere o caselle di visualizzazione specifiche nel report), piuttosto che creare tali oggetti da zero.
È facile includere tali oggetti nella tua finestra personalizzata. Basta includere riferimento tabella dati << Multivariato( ... ) se si desidera che l'oggetto sia "live", ovvero rispondere con la consueta interattività o creare la piattaforma separatamente, clonare l'oggetto desiderato, chiudere la piattaforma e includere o aggiungere l'oggetto clonato se l'interattività non è richiesta. (Si noti che è possibile eliminare gli oggetti indesiderati dalla piattaforma se si desidera semplificare il rapporto per il proprio scopo.)