Créer ma propre carte de couleurs sur la corrélation et la matrice de corrélationrepublication, j'ai dû accidentellement supprimer le message d'origine :
J'écris un script d'enseignement et de démonstration qui va :
- Créez une matrice de covariance aléatoire d'une taille spécifiée et calculez la matrice de corrélation correspondante (C)
- Créer des données normales multivariées aléatoires avec un nombre spécifié de lignes et un vecteur moyen, basées sur la matrice de covariance
- générer les données simulées dans une table de données et exécuter l'analyse de la plateforme multivariée sur ces données
ce que je souhaite également inclure dans la sortie du script, dans la fenêtre du rapport, c'est un affichage de la matrice de corrélation de départ (C) que j'ai créée et la carte de couleurs correspondante, similaire à celle affichée dans la plateforme multivariée pour la matrice de corrélation estimée. Je n'arrive pas à comprendre comment créer les cases d'axe pour la matrice de corrélation (C), ni comment créer la carte de couleurs sur les corrélations de la matrice C.
Voici mon script :
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>Voici un exemple de sortie :

Re : Créer ma propre carte de couleurs sur la corrélation et la matrice de corrélationVous pouvez faire la même chose dans Graph Builder, en utilisant une Shape Map. Vous pouvez créer une carte de forme de 50 x 50 ou plus, puis l'utiliser avec n'importe quelle matrice de corrélation jusqu'à cette dimension. La carte n'affichera que les éléments pour lesquels elle contient des données, vous ne verrez donc que la matrice XxX réelle.
Re : Créer ma propre carte de couleurs sur la corrélation et la matrice de corrélationMerci, Marc, pour la suggestion. Je savais que je pouvais le faire si je transformais la matrice en un tableau empilé et utilisais un générateur de graphiques ou un tracé de cellules. J'espérais juste pouvoir utiliser l'objet d'affichage Cell Plot Box(), mais je pense que cet élément d'affichage n'est disponible que pour les fonctions internes de JMP, pas via JSL. Au moins l'élément d'affichage Matrix Box() peut être utilisé via JSL.
J'ai trouvé une solution de contournement, en utilisant simplement une boîte graphique, qui obtient au moins la carte des couleurs (sans étiquettes d'axes). Voir ci-dessous.
// 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
)
)
);
)
);ce qui donne ce résultat pour la matrice 3x3

Re : Créer ma propre carte de couleurs sur la corrélation et la matrice de corrélationJe comprends maintenant que vous avez les corrélations dans une matrice, pas dans une plateforme. L'approche suivante pourrait fonctionner. Si tel est le cas, il peut être ajouté à votre script.
J'ai utilisé le Aptitude table de données du dossier JMP Sample Data. j'ai sélectionné Analyser > Méthodes multivariées > Multivarié . Je suis entré Oxy à travers MaxPulse dans le Oui rôle. Voici le résultat :


Vous souhaitez réaliser cette carte avec votre matrice de corrélations.
- Faites un clic droit sur ce tableau et sélectionnez Transformer en table de données . (Notez que vous devez d'abord enregistrer votre matrice en tant que tableau de données, ajouter la colonne de ligne correspondante et nommer les colonnes de données de manière appropriée.)
- Sélectionner les tables > Empiler .
- Sélectionner Âge à travers MaxPulse et cliquez Empiler .
- Entrer Corrélation pour le nom de la colonne de données.
- Entrer Colonne pour le nom de la colonne d'étiquette.
- Cliquez sur D'ACCORD .
- Sélectionner Graphique > Générateur de graphiques .
- Traîner Rangée à X .
- Traîner Colonne à Oui .
- Traîner Corrélation à Couleur .
- Clique le Carte de chaleur élément en haut.
Voici le résultat :

Je pense donc que vous pouvez utiliser quelques objets JMP de haut niveau pour obtenir la carte thermique que vous souhaitez.
Je ne pense pas qu'il serait possible de scripter la carte thermique à partir de zéro étant donné sa structure dans la plateforme multivariée, mais d'autres pourraient connaître un moyen. Voici la partie de l'arborescence d'affichage de la carte de corrélations présentée ci-dessus :

Re : Créer ma propre carte de couleurs sur la corrélation et la matrice de corrélationPourquoi ne pas utiliser la carte des couleurs des corrélations dans le rapport multivarié ?
Nous recommandons généralement d'utiliser autant que possible les objets intégrés (plateformes entières ou zones d'affichage spécifiques dans le rapport), plutôt que de créer de tels objets à partir de zéro.
Il est facile d'inclure de tels objets dans votre fenêtre personnalisée. Incluez simplement référence de la table de données << Multivarié( ... ) si vous souhaitez que l'objet soit « en direct », c'est-à-dire répondez avec l'interactivité habituelle ou créez la plate-forme séparément, clonez l'objet souhaité, fermez la plate-forme et incluez ou ajoutez l'objet cloné si l'interactivité n'est pas requise. (Notez que vous pouvez supprimer les objets indésirables de la plateforme si vous souhaitez simplifier le rapport en fonction de vos besoins.)