Crear mi propio mapa de colores en correlación y matriz de correlación.volviendo a publicar, debo haber borrado accidentalmente la publicación original:
Estoy escribiendo un guión de enseñanza y demostración que:
- Cree una matriz de covarianza aleatoria de un tamaño específico y calcule la matriz de correlación correspondiente (C)
- Cree datos normales multivariantes aleatorios con un número específico de filas y un vector medio, en función de la matriz de covarianza
- enviar los datos simulados a una tabla de datos y ejecutar el análisis de plataforma multivariable en esos datos
lo que también quiero incluir en la salida del script, en la ventana del informe, es una visualización de la matriz de correlación inicial (C) que había creado y el mapa de color correspondiente, similar a lo que se muestra en la plataforma multivariante para la matriz de correlación estimada. No puedo entender cómo crear los cuadros de eje para la matriz de correlación (C), ni cómo crear el mapa de color en las correlaciones de la matriz C.
Aquí está mi guión:
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>Aquí hay una salida de ejemplo:

Re: Crear mi propio mapa de colores en correlación y matriz de correlaciónPuede hacer lo mismo en Graph Builder, usando un mapa de formas. Puede crear un mapa de formas de 50x50 o más grande y luego usarlo con cualquier matriz de correlación hasta esa dimensión. El mapa solo mostrará los elementos para los que tiene datos, por lo que solo verá la matriz XxX real
Re: Crear mi propio mapa de colores en correlación y matriz de correlaciónGracias, Marcos, por la sugerencia. Sabía que podía hacerlo si convertía la matriz en una tabla apilada y usaba un generador de gráficos o un gráfico de celdas. Solo esperaba poder usar el objeto de visualización Cell Plot Box(), pero creo que ese elemento de visualización solo está disponible para las funciones internas de JMP, no a través de JSL. Al menos el elemento de visualización Matrix Box() se puede usar a través de JSL.
Se me ocurrió una solución, solo usando un cuadro de gráfico, que al menos obtiene el mapa de color (sin etiquetas de ejes). Vea abajo.
// 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
)
)
);
)
);lo que da este resultado para la matriz 3x3

Re: Crear mi propio mapa de colores en correlación y matriz de correlaciónAhora entiendo que tienes las correlaciones en una matriz, no en una plataforma. El siguiente enfoque podría funcionar. Si es así, entonces se puede agregar a su script.
usé el Aptitud física tabla de datos de la carpeta JMP Sample Data. Yo seleccioné Analizar > Métodos multivariantes > multivariado . Entré oxi a través de Pulso máximo en el Y role. Aquí está el resultado:


Quieres hacer este mapa con tu matriz de correlaciones.
- Haga clic derecho en esta tabla y seleccione Convertir en tabla de datos . (Tenga en cuenta que primero guardaría su matriz como una tabla de datos, agregaría la columna Fila correspondiente y nombraría las columnas de datos apropiadamente).
- Seleccionar Mesas > Pila .
- Seleccionar Edad a través de Pulso máximo y haga clic Pila .
- Ingresar Correlación para el nombre de la columna de datos.
- Ingresar Columna para el nombre de la columna de la etiqueta.
- Hacer clic DE ACUERDO .
- Seleccionar Grafico > Generador de gráficos .
- Arrastrar Fila a X .
- Arrastrar Columna a Y .
- Arrastrar Correlación a Color .
- Haga clic en el Mapa de calor elemento en la parte superior.
Aquí está el resultado:

Entonces, creo que puede usar algunos objetos JMP de alto nivel para obtener el mapa de calor que desea.
No creo que sea posible escribir el mapa de calor desde cero dada su estructura en la plataforma Multivariante, pero otros pueden saber cómo hacerlo. Aquí está la parte del árbol de visualización para el mapa de correlaciones que se muestra arriba:

Re: Crear mi propio mapa de colores en correlación y matriz de correlación¿Por qué no utilizar el mapa de color de las correlaciones en el informe multivariante?
Por lo general, recomendamos usar los objetos integrados (plataformas completas o cuadros de visualización específicos en el informe) tanto como sea posible, en lugar de crear dichos objetos desde cero.
Es fácil incluir dichos objetos en su ventana personalizada. solo incluye referencia de la tabla de datos << Multivariante (...) si desea que el objeto esté 'en vivo', es decir, responda con la interactividad habitual o cree la plataforma por separado, clone el objeto deseado, cierre la plataforma e incluya o agregue el objeto clonado si no se requiere interactividad. (Tenga en cuenta que puede eliminar objetos no deseados de la plataforma si desea simplificar el informe para su propósito).