Cómo calculo las correlaciones: no cuadrático (ABCXYZ por ABCXYZ), sino rectangular (ABC por XYZ) (scripting, JSL)Hola,
Esta vez puedo tener una pregunta simple. Simplemente no puedo encontrar nada apropiado.
Simplemente me gustaría calcular correlaciones. No "cuadrático", por ejemplo coeficientes de columnas ABCXYZ por ABCXYZ, sino "rectangular", por ejemplo coeficientes de columnas ABC por columnas XYZ. ¿Alguna idea de cómo podría lograr eso con JMP?
Nada sofisticado...
¡Aclamaciones!
Newbie2Jumpie
Re: ¿Cómo calculo las correlaciones? No cuadrático (ABCXYZ por ABCXYZ), sino rectangular (ABC por XYZ) (scripting, JSL)No tengo idea de lo que quiere decir con "no cuadrático" o "rectangular", pero puede consultar la plataforma Multivariante o la función JSL Correlation (). Su elección puede depender de dónde se almacenan los datos (tabla de datos u objeto de matriz).
Re: ¿Cómo calculo las correlaciones? No cuadrático (ABCXYZ por ABCXYZ), sino rectangular (ABC por XYZ) (scripting, JSL)Solo me gustaría restringir los cálculos a dos grupos de columnas (AF) por (XZ):
"cuadrático"
ABCDEFXYZ
Un ccAA ...
si
do
re
E 81 coeficientes de correlación
F
X
Y
Z ccZZ
"rectangular"
X Y Z
Un ccAX ...
si
C 18 coeficientes de correlación
re
mi
F ... ccFZ
Re: ¿Cómo calculo las correlaciones? No cuadrático (ABCXYZ por ABCXYZ), sino rectangular (ABC por XYZ) (scripting, JSL)Aquí hay un script simple que producirá lo que quieres:

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
xList = {"NPN1", "PNP1", "PNP2"};
yList = {"NPN2", "PNP3"};
nw = New Window( "Correlations",
Outline Box( "Retangle of Correlations", tb = Table Box() )
);
// Add the Row Labels to the Table Box
tb << append( String Col Box( " ", yList ) );
For( x = 1, x <= N Items( xList ), x++,
xyCorrList = {};
For( y = 1, y <= N Items( yList ), y++,
Insert Into(
xyCorrList,
Correlation(
Column( dt, xList[x] ) << get as matrix || (Column( dt, yList[y] ) <<
get as matrix)
)[1, 2]
)
);
tb << append( Number Col Box( xList[x], xyCorrList ) );
);Re: ¿Cómo calculo las correlaciones? No cuadrático (ABCXYZ por ABCXYZ), sino rectangular (ABC por XYZ) (scripting, JSL)Hola tx
El "cuadro de texto" es un enfoque interesante, aunque completamente para mí.
¿Cómo ajustaría este código para obtener estos coeficientes en una tabla JMP?
A JMP, al menos v14.0, no le gusta hacer esto usando "textbox".
Saludos cordiales
Novato
Re: ¿Cómo calculo las correlaciones? No cuadrático (ABCXYZ por ABCXYZ), sino rectangular (ABC por XYZ) (scripting, JSL)Estoy un poco confundido sobre el "cuadro de texto" al que te refieres. Creo que puede estar refiriendo erróneamente el Cuadro de tabla () mi última respuesta utilizada para crear la tabla de correlación. En cualquier caso, el código funciona bien en JMP 14 o JMP 15 De todos modos, a continuación hay 2 modificaciones al código que envié anteriormente. Cada uno de ellos produce una tabla de datos JMP como salida para las correlaciones.
El primero simplemente toma el código original y crea una tabla de datos a partir del Cuadro de tabla () que produce el código original.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
xList = {"NPN1", "PNP1", "PNP2"};
yList = {"NPN2", "PNP3"};
nw = New Window( "Correlations",
Outline Box( "Retangle of Correlations", tb = Table Box() )
);
// Add the Row Labels to the Table Box
tb << append( String Col Box( " ", yList ) );
For( x = 1, x <= N Items( xList ), x++,
xyCorrList = {};
For( y = 1, y <= N Items( yList ), y++,
Insert Into(
xyCorrList,
Correlation(
Column( dt, xList[x] ) << get as matrix || (Column( dt, yList[y] ) <<
get as matrix)
)[1, 2]
)
);
tb << append( Number Col Box( xList[x], xyCorrList ) );
);
tb << make into data table;
Este segundo script produce la tabla de datos de salida directamente. No generar un cuadro de tabla () primero.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
xList = {"NPN1", "PNP1", "PNP2"};
yList = {"NPN2", "PNP3"};
dt2 = New Table( "Correlations");
dt2 << add rows( N Items( yList ) );
dt2 << delete columns( "Column 1" );<BR /><FONT face="Menlo,Monaco,Consolas,"Courier New",monospace" size="2" style="background-color: #f5f5f5;">dt2 << New Column( "Label", character, values(yList));</FONT>
For( x = 1, x <= N Items( xList ), x++,
xyCorrList = {};
For( y = 1, y <= N Items( yList ), y++,
Insert Into(
xyCorrList,
Correlation(
Column( dt, xList[x] ) << get as matrix || (Column( dt, yList[y] ) <<
get as matrix)
)[1, 2]
)
);
dt2 << new column( xList[x], values(xyCorrList));
);Re: ¿Cómo calculo las correlaciones? No cuadrático (ABCXYZ por ABCXYZ), sino rectangular (ABC por XYZ) (scripting, JSL)Hola @ Newbie2Jumpie ,
Parece que ya tiene una solución de secuencias de comandos de Jim, pero tengo un complemento que creo que hace lo que desea: devolver una tabla de correlaciones entre un conjunto de Xs particulares y Ys particulares en lugar de todas las combinaciones posibles (como usted entraría en multivariante).
Complemento Correlate Y by X
Espero que ayude,
@Julian
Re: ¿Cómo calculo las correlaciones? No cuadrático (ABCXYZ por ABCXYZ), sino rectangular (ABC por XYZ) (scripting, JSL)Hola @ Newbie2Jumpie
los otros le dieron una respuesta directa a su pregunta. déjame ofrecerte otra solución para la que creo que JMP es realmente bueno.
¿Por qué no probar las correlaciones por pares bajo el triángulo rojo (o en las preferencias)? esta tabla puede exportarse a una tabla de datos y luego filtrarse como desee. Encuentro esto mucho más útil que las grandes matrices de correlación donde todos los números aparecen dos veces.