Erstellen Sie meine eigene Farbkarte zur Korrelation und KorrelationsmatrixBeim erneuten Posten muss ich versehentlich den ursprünglichen Beitrag gelöscht haben:
Ich schreibe ein Lehr- und Demonstrationsskript, das:
- Erstellen Sie eine zufällige Kovarianzmatrix einer bestimmten Größe und berechnen Sie die entsprechende Korrelationsmatrix (C).
- Erstellen Sie zufällige multivariate Normaldaten mit einer angegebenen Anzahl von Zeilen und einem Mittelwertvektor basierend auf der Kovarianzmatrix
- Geben Sie die simulierten Daten in eine Datentabelle aus und führen Sie die multivariate Plattformanalyse für diese Daten aus
Was ich auch in die Ausgabe des Skripts im Berichtsfenster einbinden möchte, ist eine Anzeige der von mir erstellten Startkorrelationsmatrix (C) und der entsprechenden Farbkarte, ähnlich dem, was in der multivariaten Plattform angezeigt wird die geschätzte Korrelationsmatrix. Ich kann nicht herausfinden, wie man die Achsenfelder für die Korrelationsmatrix (C) erstellt oder wie man die Farbkarte für Korrelationen der C-Matrix erstellt.
Hier ist mein Skript:
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>Hier ist eine Beispielausgabe:

Betreff: Erstellen Sie meine eigene Farbkarte zur Korrelation und KorrelationsmatrixDas Gleiche können Sie im Graph Builder mithilfe einer Shape Map tun. Sie können eine Formkarte von 50 x 50 oder größer erstellen und sie dann mit jeder Korrelationsmatrix bis zu dieser Dimension verwenden. Auf der Karte werden nur die Elemente angezeigt, für die Daten vorhanden sind. Sie sehen also nur die tatsächliche XxX-Matrix
Betreff: Erstellen Sie meine eigene Farbkarte zur Korrelation und KorrelationsmatrixDanke, Mark, für den Vorschlag. Ich wusste, dass ich es schaffen würde, wenn ich die Matrix in eine gestapelte Tabelle umwandeln und den Graph Builder oder Cell Plot verwenden würde. Ich hatte nur gehofft, dass ich das Anzeigeobjekt „Cell Plot Box()“ verwenden könnte, aber ich denke, dass dieses Anzeigeelement nur für interne JMP-Funktionen verfügbar ist, nicht über JSL. Zumindest das Anzeigeelement Matrix Box() kann über JSL verwendet werden.
Ich habe mir eine Lösung ausgedacht, indem ich einfach ein Diagrammfeld verwendet habe, das zumindest die Farbkarte (ohne Achsenbeschriftungen) erhält. Siehe unten.
// 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
)
)
);
)
);was dieses Ergebnis für die 3x3-Matrix ergibt

Betreff: Erstellen Sie meine eigene Farbkarte zur Korrelation und KorrelationsmatrixIch verstehe jetzt, dass Sie die Korrelationen in einer Matrix haben, nicht in einer Plattform. Der folgende Ansatz könnte funktionieren. Wenn ja, kann es Ihrem Skript hinzugefügt werden.
Ich habe das verwendet Fitness Datentabelle aus dem JMP-Beispieldatenordner. ich wählte Analysieren > Multivariate Methoden > Multivariat . ich betrat Oxy durch MaxPulse im Y Rolle. Hier ist das Ergebnis:


Sie möchten diese Karte mit Ihrer Korrelationsmatrix erstellen.
- Klicken Sie mit der rechten Maustaste auf diese Tabelle und wählen Sie aus In Datentabelle umwandeln . (Beachten Sie, dass Sie Ihre Matrix zunächst als Datentabelle speichern, die entsprechende Zeilenspalte hinzufügen und die Datenspalten entsprechend benennen.)
- Wählen Tische > Stapel .
- Wählen Alter durch MaxPulse und klicken Stapel .
- Eingeben Korrelation für den Namen der Datenspalte.
- Eingeben Spalte für den Namen der Beschriftungsspalte.
- Klicken OK .
- Wählen Graph > Graph Builder .
- Ziehen Reihe Zu X .
- Ziehen Spalte Zu Y .
- Ziehen Korrelation Zu Farbe .
- Drücke den Wärmekarte Element oben.
Hier ist das Ergebnis:

Daher denke ich, dass Sie ein paar JMP-Objekte auf hoher Ebene verwenden können, um die gewünschte Heatmap zu erhalten.
Ich glaube nicht, dass es angesichts ihrer Struktur in der Multivariate-Plattform möglich wäre, die Heatmap von Grund auf zu skripten, aber andere kennen vielleicht einen Weg. Hier ist der Teil des Anzeigebaums für die oben gezeigte Korrelationskarte:

Betreff: Erstellen Sie meine eigene Farbkarte zur Korrelation und KorrelationsmatrixWarum nicht die Farbkarte der Korrelationen im multivariaten Bericht verwenden?
Generell empfehlen wir, die integrierten Objekte (ganze Plattformen oder bestimmte Anzeigefelder im Bericht) so weit wie möglich zu verwenden, anstatt solche Objekte von Grund auf neu zu erstellen.
Es ist einfach, solche Objekte in Ihr benutzerdefiniertes Fenster einzubinden. Einfach einbinden Datentabellenreferenz << Multivariate( ... ) Wenn Sie möchten, dass das Objekt „live“ ist, reagieren Sie also mit der üblichen Interaktivität oder erstellen Sie die Plattform separat, klonen Sie das gewünschte Objekt, schließen Sie die Plattform und schließen Sie das geklonte Objekt ein oder hängen Sie es an, wenn keine Interaktivität erforderlich ist. (Beachten Sie, dass Sie unerwünschte Objekte von der Plattform löschen können, wenn Sie den Bericht für Ihren Zweck vereinfachen möchten.)