Pasar elementos de estadísticas calculadas a coordenadas específicas en una tabla de datos guardadaGenero varios gráficos con estadísticas calculadas. Me gustaría transmitir parámetros estadísticos calculados específicos, por ejemplo, el mínimo, la mediana y el máximo de Cuantiles y Std Dev de Resumen estadístico a coordenadas específicas en una tabla de datos guardada usando JSL.
Por ejemplo, me gustaría transmitir
- Cuantil mínimo a la fila 5, columna 7
- mediana hasta la fila 5, columna 8
- Cuantil máximo a la fila 5, columna 9
- Desv. Estándar a la fila 5, columna 10.
a mi tabla de datos guardada. ¿Cómo lograr esto usando JSL?
(las coordenadas están vacías en la tabla de datos guardados para empezar)
Tabla de datosGráficosScriptingRe: pasar elementos de estadísticas calculadas a coordenadas específicas en una tabla de datos guardadacreo subíndice de tabla de datos puede ayudarte con esto
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt[10,3] = "AAAAAAAAAAAAAA";Re: pasar elementos de estadísticas calculadas a coordenadas específicas en una tabla de datos guardadaHola @Neo
vea si puede extraer lo que necesita de este script
Names Default To Here( 1 );
// set up a table to accept the results
resultsdt = New Table( "Results Table",
Add Rows( 20 ),
New Column( "Column 1" ),
New Column( "Column 2" ),
New Column( "Column 3" ),
New Column( "Column 4" ),
New Column( "Column 5" ),
New Column( "Column 6" ),
New Column( "Min", Numeric ),
New Column( "Median", Numeric ),
New Column( "Max", Numeric ),
New Column( "SD", Numeric )
);
// Open Data Table: Big Class.jmp
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Launch platform: Distribution
output = Report( dist = dt << Distribution( Continuous Distribution( Column( :height ) ) ) );
// Extract min median max and SD
resultsdt[5, 7] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 11 ); // min
resultsdt[5, 8] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 6 ); // median
resultsdt[5, 9] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 1 ); // max
resultsdt[5, 10] = output[Outline Box( "height" ), Outline Box( "Summary Statistics" ), Number Col Box( 1 )] << get( 2 ); // Std dev.
cuando se trata de extraer números de la salida, hay que tener cuidado. Las referencias correctas a las ubicaciones pueden cambiar si la salida es diferente debido a las preferencias o simplemente incluye varias salidas en una ventana.
Permítanos saber si funciona.
ron
Re: pasar elementos de estadísticas calculadas a coordenadas específicas en una tabla de datos guardadaGracias @ron_horne . Creo que esto funcionaría. Sin embargo, antes de probar esto en mi problema real, tengo una pregunta. ¿Es necesario abrir la "Tabla de resultados" antes de que se le puedan pasar los valores?
En mi caso, la "Tabla de resultados" es un archivo guardado y no estaba planeando abrirlo a menos que no sea posible pasarle valores de otra manera.
(Tendré que cambiar el resto de mi código si necesito tener mi "Tabla de resultados" abierta en la instancia cuando se le pasan valores)
Re: pasar elementos de estadísticas calculadas a coordenadas específicas en una tabla de datos guardada
Hola @Neo
Hasta donde yo sé, no hay forma en JMP de establecer datos en una celda de una tabla cerrada.
Si alguien más aquí lo sabe mejor, háganoslo saber.
tal vez pueda abrir otra tabla como intermediario para mantener la información allí mientras aún está recopilando y solo al final abra la tabla de resultado final.
ron
Re: pasar elementos de estadísticas calculadas a coordenadas específicas en una tabla de datos guardada@ron_horne . Gracias. Me tomó algún tiempo recodificar para poder tener La "Tabla de resultados" abierta para los valores de las estadísticas calculadas podría pasarse a ella.
Comencé con tu sugerencia y tengo una pregunta a Dios. ¿Por qué esto no funciona?
distb = Distribution( Continuous Distribution( Column( :height ) ) ) ;
// Extract min median max and SD
resultsdt[5, 7] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 11 ); // min
resultsdt[5, 8] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 6 ); // median
resultsdt[5, 9] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 1 ); // max
resultsdt[5, 10] = distb[Outline Box( "height" ), Outline Box( "Summary Statistics" ), Number Col Box( 1 )] << get( 2 ); // Std dev.
y por que tiene que ser
output = Report( dist = dt << Distribution( Continuous Distribution( Column( :height ) ) ) );
Tengo múltiples parcelas de distribución a las que puedo asignar fácilmente un nombre como distb1, distb2, ... pero si es necesario
output = Report( dist = dt << Distribution( ..... ) );
Tendré que comprobar cómo afecta esto al resto de mi código.
Re: pasar elementos de estadísticas calculadas a coordenadas específicas en una tabla de datos guardadaHola neo
su referencia a distb no funciona sine distb no es una capa de informe de nada. es la capa de análisis. En JMP hay una diferencia entre ellos.
para extraer algo de la salida, debe hacer referencia a la capa de informe de forma explícita.
mira esto: https://community.jmp.com/t5/JSL-Cookbook/Extract-Statistics-from-an-Analysis-into-a-Report/ta-p/41547
si tiene varias salidas, deberá nombrarlas y definirlas correctamente para asegurarse de que está obteniendo los valores a los que apunta.
Permítanos saber si funciona. de lo contrario, considere la posibilidad de proporcionar algunos archivos y secuencias de comandos desde el punto que le está dando problemas.
todo lo mejor,
ron
Re: pasar elementos de estadísticas calculadas a coordenadas específicas en una tabla de datos guardadaGracias @ron_horne . Permítanme dar una descripción general de lo que estoy tratando de hacer. Mi script principal tiene el siguiente flujo (simplificado aquí).
Abra una tabla de datos (y llámela dt ), y luego trazar gráficas de distribución para varias columnas usando una función
getDistribution ("ColName", "LSL", "USL", "other input parameters")
Cada diagrama de distribución resultante tiene "Cuantiles", "Estadísticas resumidas" y "Análisis de capacidad (con el esquema cerrado)".
La siguiente parte del script principal es crear una tabla (llamémosla resultsdt ) con varias filas y columnas donde necesito pasar valores de estadísticas calculadas como se indica en la publicación original.
Sin embargo, lo siguiente no funciona.
output = Report( dist = dt << getDistribution("ColName", "LSL", "USL", "other input parameters") );
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 6 ), Number Col Box( 11)] << get( 1 ); // max
Me he asegurado de que los números en Cuadro de tabla () y Cuadro de columna numérica () sean correctos. Obtuve el siguiente error
Send Expects Scriptable Object{8} in access or evaluation of 'Send' , output[Outline Box( "height" ), Outline Box( "Quantiles" ),
Table Box( 6 ), Number Col Box( 11 )] << /*###*/get( 1 ) /*###*/
¿Dónde voy mal?
Re: pasar elementos de estadísticas calculadas a coordenadas específicas en una tabla de datos guardadaHola @Neo ,
Si entiendo correctamente su problema, debe prestar atención a la numeración y las direcciones. una vez que usa los nombres de los cuadros de esquema, la numeración de los cuadros de tabla y los cuadros de columnas numéricas comienza desde 1.
Por lo tanto, intente lo siguiente:
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1)] << get( 1 ); // max
si desea utilizar Number Col Box (11) intente esto:
resultsdt[5, 9] = Output[Number Col Box( 11)] << get( 1 ); // max
Espero que esto funcione ahora.
En general, hay formas mucho más sofisticadas de hacer que el script encuentre la ubicación de los valores de interés usando xpath () o la coincidencia de patrones como en este enlace: http://www.pega-analytics.co.uk/blog/oneway-advisor-step-3/
Re: pasar elementos de estadísticas calculadas a coordenadas específicas en una tabla de datos guardadaGracias de nuevo @ron_horne , pero ambos no funcionan y me da el mismo error.
¿Está diciendo que lo siguiente es un uso correcto y válido? Tenga en cuenta que es no tramando la distribución si se usa como a continuación (por cierto, no entiendo la función de dist en dist = dt ?)
Output = Report( dist = dt << getDistribution("ColName", "LSL", "USL", "other input parameters") );
y el error (copiado del registro)
Send Expects Scriptable Object{8} in access or evaluation of 'Send' , Output[Outline Box( "height" ), Outline Box( "Quantiles" ),
Table Box( 1 ), Number Col Box( 1 )] << /*###*/get( 1 ) /*###*/Not subscriptable value{8} in access or evaluation of 'Assign' , resultsdt[5, 9] = /*###*/Output[Outline Box( "Pass Distribution" ),
Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << /*###*/get( 1 ) /*###*/
/*###*/
Lo que estoy recibiendo se debe a mi siguiente declaración (incluso cuando su sugerencia a continuación)
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1)] << get( 1 ); // max
Si es así, me gustaría hacer una prueba simple y pasar algo más sencillo a resultsdt. ¿Hay alguna prueba simple que pueda hacer para probar si puedo obtener algo de Producción a la tabla de datos resultsdt ?
Re: pasar elementos de estadísticas calculadas a coordenadas específicas en una tabla de datos guardada@ron_horne . Lo siguiente debería ayudar a aclarar las cosas un poco más, ya que es muy similar a mi problema real. Obtengo la gráfica de distribución a través de una función.
Names Default To Here (1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
getDistChart = Function({ColName, _LSL, _USL}, {distChart},
New Window(""||ColName||" distribution",
Distribution(
Stack( 1 ),
Continuous Distribution(
Column(As Column (ColName) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Capability Analysis( LSL(_LSL ), USL(_USL) )
),
SendToReport(
Dispatch(
{},
"Distrib Histogram",
FrameBox,
{DispatchSeg( LabelSeg( 1 ), {Font( "Segoe UI", 7, "Plain" )} ),
DispatchSeg( LabelSeg( 2 ), {Font( "Segoe UI", 7, "Plain" )} )}
)
)
);
);
return(distChart);
);
dist = dt << getDistChart ("weight", 55, 185);
Para mí, parece que la última línea no está haciendo lo que se supone que debe hacer para extraer valores de la distribución, ya que ninguna distribución se grafica en primer lugar. La pregunta ahora es cómo obtener valores de estadísticas calculadas cuando la distribución se traza mediante una función como la mía anterior. Quizás una función no es un mensaje, por lo que no se puede enviar a un objeto usando <
Cualquier ayuda sería muy útil ya que todavía estoy aprendiendo JMP.