Hai bisogno di aiuto con JSL avanzato - Lettura dei dati da un JournalCiao
Ho bisogno di aiuto con uno script JSL che è stato creato con l'aiuto di GPT4.0 ma non funziona.
Scopo dello script: prendere un singolo registro di analisi ed estrarne i dati in un file CSV.
In questo primo round mi concentrerò sulle riviste che contengono solo analisi categoriali.
Il journal può contenere 1 o più tabelle categoriali per una variabile categoriale, seguite da un grafico condiviso e da un grafico di frequenza. Sono interessato solo a estrarre dati dalle tabelle. La mia implementazione effettiva riguarda una classe multinomiale di 5 classi, tuttavia nel journal e nello script di esempio, l'ho ridotta a 2 classi (binarie) per semplicità.
La tabella categoriale contiene 3 righe per un dato valore di parametro: count, percent e pvalue. Sono interessato a estrarre valori percentuali solo se e solo se pvalue<= 0,05
Ho bisogno di memorizzare gli output in un file csv con il formato:
nome del giornale, nome del parametro, valore del parametro1, percentuale classe0, percentuale classe1
nome del giornale, nome del parametro, valore del parametro2, percentuale classe0, percentuale classe1
Lo script dovrebbe comprendere il numero di tabelle categoriali presenti in quel diario e quindi estrarre tutte le informazioni della tabella (solo per pvalue <= 0,05)
Per chiunque abbia poco tempo a disposizione per approfondire l'argomento;
lo script viene eseguito senza errori ma non estrae i dati come previsto.
il problema principale è alla fine dello script (righe 155-175). .Sono state create due funzioni per elaborare in base a Type(journal). Penso che ottenga correttamente il Type ma non riesca a connettersi correttamente alle funzioni
Nota: la mia fase 2 consisterà in intenti simili ma con diari contenenti risultati di regressione logistica
Non l'ho ancora pubblicato. Preferisco vedere questo risolto prima.
In allegato troverete il diario degli incidenti aerei tratto dalla libreria dati di esempio JMP e uno script di esempio adattato per essere provato in 2 livelli di classe.
Molto apprezzato
Vecchio Bayram
Automazione e scriptingCondivisione e comunicazione dei risultatiFinestreRe: Ho bisogno di aiuto con JSL avanzato - Lettura dei dati da un JournalC'è un motivo specifico per estrarli dal Journal invece che dal report JMP utilizzato per creare il journal?
Re: Ho bisogno di aiuto con JSL avanzato - Lettura dei dati da un JournalSì, le dimensioni del journal sono notevolmente più piccole per comunicare con i miei clienti. I miei formati di journal sono di 2 tipi, contengono analisi di parametri categoriali o continue. Spero che estrarre i dati da un journal non sia così difficile rispetto a un report.
Re: Ho bisogno di aiuto con JSL avanzato - Lettura dei dati da un JournalDal report dovresti semplicemente salvare la tabella e avrai quasi finito (potrebbe essere necessaria una certa pulizia a seconda del risultato finale)

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: Ho bisogno di aiuto con JSL avanzato - Lettura dei dati da un JournalSto eseguendo analisi su larga scala e ho suddiviso il mio processo di script in più fasi. Ho già prodotto molti risultati di analisi storiche, non sto cercando una soluzione (per il problema attuale) che analizzi e poi cerchi di creare un report di riepilogo (se possibile), semplicemente perché non è pratico rieseguirli. Piuttosto, preferisco che questo script di riepilogo (estrazione di dati da un diario) sia disaccoppiato e quindi, per i motivi spiegati, funzioni.
I miei diari contengono più report e ho più diari. Nel complesso, si tratta di molti dati. Il percorso del diario è il più appropriato per il mio lavoro. Devo farlo tramite uno script, altrimenti non sarebbe pratico. Al momento, sto cercando solo un singolo diario di tabelle categoriali. Una volta compreso il mio errore attuale e con uno script funzionante per un singolo diario, dovrei essere in grado di espanderlo per esaminare tutti i diari di tipo categoriale. La mia altra fase futura è una necessità simile per un secondo tipo di diario contenente più regressioni logistiche multinomiali per diario.
Qualcosa non va nello script, perché non comunica il journal alle sottofunzioni. Stavo pensando e sperando che questo errore sia ancora facile. Ho anche esaminato l'indice di scripting per vedere se qualcos'altro può aiutare, senza fortuna.
Re: Ho bisogno di aiuto con JSL avanzato - Lettura dei dati da un JournalNon sono sicuro di cosa stia facendo il tuo script, dato che non stai gestendo caselle di tabella (sarebbe molto facile). Anche le funzioni sono definite in modo errato, il che molto probabilmente spiega perché le tue funzioni non vengono eseguite come ti aspetti.
Molto probabilmente non mi preoccuperei nemmeno di modificare la casella di visualizzazione utilizzata dalla tabella di contingenza e la analizzerei dal testo
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: Ho bisogno di aiuto con JSL avanzato - Lettura dei dati da un JournalCiao Jarmo,
Innanzitutto grazie per il tuo supporto/aiuto. Volevo prendermi del tempo per implementare il tuo approccio qui nel mio script. Sono riuscito ad adattarlo, ma ho ancora qualche domanda... Selezionerò comunque quanto sopra come soluzione.
Le mie domande successive:
Ricordando che la mia fase 1 è un diario di tabelle puramente categoriali, il numero di tabelle/diario è variabile.
1. Come ottenere il numero di tabelle categoriali per una determinata rivista (nel caso precedente, ad esempio, sarebbe 2)
2. Come ottenere i nomi di tali tabelle categoriali (ad esempio "Fatale per fase di volo" e "Fatale per condizioni meteorologiche")
3. La mia fase 2 sarà una raccolta pura di regressioni logistiche multinomiali. Lo script che ho derivato dal tuo supporto non è stato eseguito direttamente, ma ho bisogno di dedicargli un po' di tempo prima di portarlo. Posso anche preparare un campione di dati. Quindi lasciami mettere un segnaposto su questo.
4. Qual è il modo più veloce per entrare in uno scripting più avanzato? Ad esempio, se non sbaglio, nel mio esempio, la casella delle proprietà fa un po' di luce sui potenziali nomi delle funzioni JMP che potrebbero essere correlati. Ho usato parecchio l'indice di scripting, ma non è stato molto efficace nel mio caso. Ricordo anche che c'era una documentazione di scripting con le versioni precedenti, non sono sicuro di dove esista l'ultima versione.
Grazie ancora.
Re: Ho bisogno di aiuto con JSL avanzato - Lettura dei dati da un Journal1. Utilizzare XPath è una delle opzioni
obs = (j << XPath("//OutlineBox[contains(text(), 'Fatal By')]"));
2. Quando hai riferimenti alla casella di riepilogo, puoi usare << Ottieni titolo
obs << get title;
4. Utilizzo di Scripting Index, Scripting Guide da JMP Help (JMP Help ha anche JSL Syntax Reference). Inoltre, al momento non dovresti affidarti a LLM per JSL, perché sono molto inaffidabili (come puoi vedere dal tuo script).
Re: Ho bisogno di aiuto con JSL avanzato - Lettura dei dati da un JournalHo provato la sintassi obj così com'è nei dati di esempio, ma non ha funzionato.
Nome non risolto: obj in accesso o valutazione di 'obj' , obj/*###*/
Tutte le mie tabelle hanno una stringa comune nel nome della tabella, quindi posso cercare quella stringa comune (come "Fatal by" nell'esempio precedente).
Immagino che quando funziona, obj sarà un elenco, quindi in quel caso probabilmente non avrò bisogno di conoscere il numero di tabelle nel journal
Per gli LLM, sono d'accordo con te. All'inizio la struttura dello script viene data molto rapidamente solo per scoprire che molte aree non funzionano. Ciò che è più frustrante è che a volte possono diventare letteralmente stupidi... Fornirebbero un codice a cui fornirei il mio feedback e persino in alcuni casi direi di apportare correzioni specifiche... al turno successivo, l'LLM fornirebbe una soluzione sbagliata identica. Penso di averlo visto anche più di 2 volte di seguito.
Ma molte volte, e per cose più semplici, può darmi una spinta, quindi ovviamente continuo a usarlo con cautela.
Re: Ho bisogno di aiuto con JSL avanzato - Lettura dei dati da un JournalCon JSL dovresti iniziare interattivamente in JMP e lasciare che JMP crei lo script. Quindi, se questo non è abbastanza e desideri fare un po' più di scripting, dai un'occhiata brevemente a Scripting Guide. Quindi usa Scripting Index come risorsa principale (ha anche link a Scripting Guide / JSL Syntax reference) e consulta LLM di tanto in tanto MA sappi che LLM in genere sbaglia molto con JSL.