¿Necesita ayuda con JSL avanzado? Cómo leer datos de un diarioHola
Necesito ayuda con un script JSL que hasta ahora se creó con la ayuda de GPT4.0 pero no funciona.
Propósito del script: tomar un solo diario de análisis y extraer datos de él a un csv.
En esta primera ronda me centraré en revistas que contengan únicamente análisis categóricos.
El diario puede contener una o varias tablas categóricas para una variable categórica, seguidas de un gráfico compartido y un gráfico de frecuencia. Solo me interesa extraer datos de las tablas. Mi implementación actual se ocupa de una clase multinomial de 5 clases; sin embargo, en el diario y el script de muestra, lo he reducido a 2 clases (binarias) para simplificar.
La tabla categórica contiene 3 filas para un valor de parámetro determinado: recuento, porcentaje y valor p. Solo me interesa extraer valores porcentuales si y solo si el valor p <= 0,05
Necesito almacenar las salidas en un csv con el formato:
nombre de la revista, nombre del parámetro, valor del parámetro 1, porcentaje de clase 0, porcentaje de clase 1
nombre de la revista, nombre del parámetro, valor del parámetro2, porcentaje de clase0, porcentaje de clase1
El script debe comprender la cantidad de tablas categóricas presentes en ese diario y luego extraer toda la información de la tabla (solo para valores p <= 0,05)
Para cualquiera que tenga tiempo limitado para investigar esto;
El script se ejecuta sin errores pero no extrae datos como se esperaba.
El problema principal está al final del script (filas 155-175). Se crean dos funciones para procesar en función del tipo (diario). Creo que obtiene el tipo correctamente, pero no puede conectarse a las funciones correctamente.
Nota: Mi fase 2 consistirá en una intención similar pero con diarios que contengan resultados de regresión logística.
No lo he publicado todavía. Prefiero que se resuelva este problema primero.
Adjunto encontrará el diario de incidentes de aeronaves de la biblioteca de datos de muestra de JMP y un script de muestra adaptado para probar en 2 niveles de clase.
Muy apreciado
Al-Bayram
Automatización y scriptingCompartir y comunicar resultadosVentanasRe: Necesito ayuda con JSL avanzado: lectura de datos de un diario¿Existe alguna razón específica para extraerlos del diario en lugar del informe JMP utilizado para crear el diario?
Re: Necesito ayuda con JSL avanzado: lectura de datos de un diarioSí, los tamaños de las revistas son significativamente más pequeños para poder comunicarme con mis clientes. Los formatos de mis revistas son de dos tipos: contienen análisis de parámetros categóricos o continuos. Espero que extraer los datos de una revista no sea tan difícil como extraerlos de un informe.
Re: Necesito ayuda con JSL avanzado: lectura de datos de un diarioA partir del informe, básicamente solo guardaría la tabla y casi estaría listo (es posible que se requiera algo de limpieza según el resultado final).

Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Aircraft Incidents.jmp");
fg = dt << Fit Group(
cg1 = Categorical(
ChiSquare Test Choices("Pearson Only"),
X(:Broad Phase of Flight),
Responses(:Fatal),
Cell Chisq(1),
Share Chart(1),
Frequency Chart(1),
Legend(0)
),
Categorical(
ChiSquare Test Choices("Pearson Only"),
X(:Weather Condition),
Responses(:Fatal),
Cell Chisq(1),
Share Chart(1),
Frequency Chart(1),
Legend(0)
),
<<{Arrange in Rows(2)}
);
dt_cont = cg1 << Save Contingency Table();Re: Necesito ayuda con JSL avanzado: lectura de datos de un diarioEstoy realizando un análisis a gran escala y tengo el proceso de script dividido en varias fases. Ya tengo muchos resultados de análisis históricos generados, no estoy buscando una solución (para el problema actual) que analice y luego intente crear un informe resumido (si es posible), simplemente porque no es práctico volver a ejecutarlos. En cambio, me gusta que este script de resumen (extracción de datos de un diario) esté desacoplado y, por lo tanto, funcione por las razones explicadas.
Mis diarios contienen varios informes y tengo varios diarios. En general, son muchos datos. La ruta de diario es la más adecuada para mi trabajo. Necesito hacer esto a través de un script o de lo contrario no sería práctico. En este momento, solo busco un solo diario de tablas categóricas. Una vez que comprenda mi error actual y tenga un script que funcione para un solo diario, debería poder expandirlo para que cubra todos los diarios de tipo categórico. Mi otra fase futura es una necesidad similar de un segundo tipo de diario que contenga múltiples regresiones logísticas multinomiales por diario.
Algo anda mal en el script, ya que no comunica el diario a las subfunciones. Estaba pensando y esperando que este error siga siendo fácil. También revisé el índice de scripts para ver si algo más podía ayudar, pero no tuve suerte.
Re: Necesito ayuda con JSL avanzado: lectura de datos de un diarioNo estoy seguro de lo que hace tu script, ya que no estás trabajando con cuadros de tabla (sería muy fácil). Las funciones también están definidas incorrectamente, lo que probablemente explique por qué tus funciones no se ejecutan como esperas.
Lo más probable es que ni siquiera me moleste en modificar el cuadro de visualización que utiliza la tabla de contingencia y lo analizaría desde el texto.
Names Default To Here(1);
j = Current Journal();
agb = j["Fatal By Broad Phase of Flight",AlignmentGridBox(1)];
txt = agb << get text;
lines = Words(txt, "\!N");
Remove From(lines, 1, 3);
res = {{}};
For Each({line}, lines,
res_line = {};
vals = Words(line, "}\!t");
Insert Into(res_line, Remove From(vals, 1)); // param name?
Insert Into(res_line, Remove From(vals, 1)); // param value?
Insert Into(res_line, Words(Remove From(vals, 1)[1], ",")); // class1
Insert Into(res_line, Words(Remove From(vals, 1)[1], ",")); // class2
Insert Into(res, Concat items(res_line, "\!t"));
);
dt = Open(Char To Blob(Concat Items(res, "\!N")), "text");Re: Necesito ayuda con JSL avanzado: lectura de datos de un diarioHola Jarmo,
En primer lugar, gracias por tu apoyo y ayuda. Quería tomarme un tiempo para implementar tu enfoque en mi script. Pude adaptarlo, pero tengo algunas preguntas más... Sin embargo, elegiré la solución que mencioné anteriormente.
Mis preguntas de seguimiento:
Recordando que mi fase 1 es un diario de tablas categóricas puras, el número de tablas/diario es variable.
1. ¿Cómo obtener el número de tablas categóricas para una revista determinada (en el caso anterior, por ejemplo, serían 2)?
2. ¿Cómo obtener los nombres de dichas tablas categóricas (por ejemplo, "Fatal por fase general del vuelo" y "Fatal por condición climática")?
3. Mi fase 2 será una recopilación pura de regresiones logísticas multinomiales. El script que obtuve gracias a su ayuda no se ejecutó directamente, pero necesito dedicarle algo de tiempo antes de ejecutarlo. También puedo preparar datos de muestra. Así que permítanme poner un marcador de posición en este caso.
4. ¿Cuál es la forma más rápida de adentrarse en la programación de scripts más avanzada? Por ejemplo, si no me equivoco, en mi ejemplo, el cuadro de propiedades arroja algo de luz sobre los posibles nombres de funciones de JMP que pueden estar relacionados. He estado utilizando el índice de programación de scripts bastante, pero no ha sido muy eficaz en mi caso. También recuerdo que solía haber una documentación de programación de scripts con las versiones anteriores, no estoy seguro de dónde existe la última versión de esa.
Gracias de nuevo.
Re: Necesito ayuda con JSL avanzado: lectura de datos de un diario1. Utilizar XPath es una opción
obs = (j << XPath("//OutlineBox[contains(text(), 'Fatal By')]"));
2. Cuando tenga referencias de cuadro de esquema, puede usar << Obtener título
obs << get title;
4. Utilizar el índice de scripts y la guía de scripts de la Ayuda de JMP (la Ayuda de JMP también tiene una referencia de sintaxis de JSL). Además, por el momento no debería confiar en LLM para JSL, ya que no son muy confiables (como puede ver en su script).
Re: Necesito ayuda con JSL avanzado: lectura de datos de un diarioProbé la sintaxis obj tal como está en los datos de muestra y no funcionó.
Nombre sin resolver: obj en acceso o evaluación de 'obj', obj/*###*/
Todas mis tablas tienen una cadena común en el nombre de la tabla, de modo que puedo buscar esa cadena común (como "Fatal por" en el ejemplo anterior).
Supongo que cuando funciona, obj será una lista, por lo que en ese caso probablemente no necesite saber la cantidad de tablas en el diario.
En cuanto a los LLM, estoy de acuerdo contigo. Al principio, la estructura del guión se da muy rápidamente, solo para descubrir que muchas áreas no funcionan. Lo que es más frustrante es que a veces pueden volverse literalmente estúpidos... Proporcionaban un código al que yo le daba mi opinión e incluso, en algunos casos, le indicaba que hiciera correcciones específicas... En la siguiente ronda, el LLM proporcionaba una solución idénticamente incorrecta. Creo que incluso vi esto más de dos veces seguidas.
Pero muchas veces y para cosas más simples, puede darme un empujón, así que continúo usándolo con precaución, por supuesto.
Re: Necesito ayuda con JSL avanzado: lectura de datos de un diarioCon JSL, deberías empezar de forma interactiva en JMP y dejar que JMP cree el script. Luego, si eso no es suficiente y deseas hacer un poco más de scripting, lee brevemente la Guía de scripting. Luego, utiliza el Índice de scripting como tu recurso principal (también tiene enlaces a la Guía de scripting / Referencia de sintaxis de JSL) y consulta LLM de vez en cuando, PERO ten en cuenta que LLM generalmente está muy equivocado con JSL.