Benötige Hilfe mit Advanced JSL – Daten aus einem Journal lesenHallo
Benötige Hilfe mit einem JSL-Skript, das bisher mithilfe von GPT4.0 erstellt wurde, aber nicht funktioniert.
Zweck des Skripts: Nehmen Sie ein einzelnes Analysejournal und extrahieren Sie Daten daraus in eine CSV-Datei.
In dieser ersten Runde konzentriere ich mich auf Zeitschriften, die nur kategorische Analysen enthalten.
Das Journal kann eine oder mehrere kategorische Tabellen für eine kategorische Variable enthalten, gefolgt von einem gemeinsamen Diagramm und einem Häufigkeitsdiagramm. Ich bin nur daran interessiert, Daten aus den Tabellen zu extrahieren. Meine tatsächliche Implementierung befasst sich mit einer multinomialen Klasse von 5 Klassen, im Beispieljournal und -skript habe ich dies jedoch der Einfachheit halber auf 2 Klassen (binär) reduziert.
Die kategorische Tabelle enthält 3 Zeilen für einen gegebenen Parameterwert: Anzahl, Prozent und P-Wert. Ich bin nur dann am Extrahieren von Prozentwerten interessiert, wenn und nur wenn P-Wert <= 0,05
Ich muss die Ausgaben in einer CSV-Datei speichern:
Journalname, Parametername, Parameterwert1, Prozentklasse0, Prozentklasse1
Journalname, Parametername, Parameterwert2, Prozentklasse0, Prozentklasse1
Das Skript sollte die Anzahl der in diesem Journal vorhandenen Kategorietabellen verstehen und dann alle Tabelleninformationen extrahieren (nur für p-Werte <= 0,05).
Für alle, die nur wenig Zeit haben, sich damit zu befassen:
Das Skript wird ohne Fehler ausgeführt, extrahiert die Daten jedoch nicht wie erwartet.
Das Hauptproblem liegt am Ende des Skripts (Zeilen 155-175). Es werden zwei Funktionen erstellt, die auf Type(journal) basieren. Ich denke, es ermittelt den Typ korrekt, kann aber keine ordnungsgemäße Verbindung zu den Funktionen herstellen.
Hinweis: Meine Phase 2 wird aus einer ähnlichen Absicht bestehen, aber mit Zeitschriften, die Ergebnisse der logistischen Regression enthalten
Das habe ich noch nicht gepostet. Ich möchte lieber, dass dieses Problem zuerst gelöst wird.
Im Anhang finden Sie das Journal der Flugzeugvorfälle aus der JMP-Beispieldatenbibliothek und ein Beispielskript, das zum Ausprobieren für zwei Klassenstufen angepasst wurde.
Sehr geschätzt
Altug Bayram
Automatisierung und SkriptingErgebnisse teilen und kommunizierenWindowsBetreff: Brauche Hilfe mit Advanced JSL – Daten aus einem Journal lesenGibt es einen bestimmten Grund, diese aus dem Journal zu extrahieren und nicht aus dem JMP-Bericht, der zum Erstellen des Journals verwendet wurde?
Betreff: Brauche Hilfe mit Advanced JSL – Daten aus einem Journal lesenJa, die Journalgrößen sind deutlich kleiner, um mit meinen Kunden kommunizieren zu können. Meine Journalformate sind zwei Typen, sie enthalten entweder kategorische oder kontinuierliche Parameteranalysen. Ich hoffe, dass das Extrahieren der Daten aus einem Journal nicht so schwierig ist wie aus einem Bericht.
Betreff: Brauche Hilfe mit Advanced JSL – Daten aus einem Journal lesenAus dem Bericht können Sie im Grunde nur die Tabelle speichern und sind damit fast fertig (je nach Endergebnis sind möglicherweise noch einige Bereinigungsarbeiten erforderlich).

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();Betreff: Brauche Hilfe mit Advanced JSL – Daten aus einem Journal lesenIch führe eine Analyse im großen Maßstab durch und habe meinen Skriptprozess in mehrere Phasen unterteilt. Ich habe bereits viele historische Analyseergebnisse erstellt, ich suche jedoch nicht nach einer Lösung (für das aktuelle Problem), die analysiert und dann versucht, einen zusammenfassenden Bericht zu erstellen (falls möglich) – einfach, weil es nicht praktikabel ist, sie erneut auszuführen. Vielmehr möchte ich, dass dieses Zusammenfassungsskript (Extrahieren von Daten aus einem Journal) entkoppelt ist und daher aus den erläuterten Gründen funktioniert.
Meine Journale enthalten mehrere Berichte und ich habe mehrere Journale. Insgesamt sind das eine Menge Daten. Der Journalweg ist für meine Arbeit am besten geeignet. Ich muss dies über ein Skript tun, sonst wäre es nicht praktikabel. Im Moment bin ich nur hinter einem einzigen Journal mit kategorialen Tabellen her. Sobald ich meinen aktuellen Fehler verstehe und ein funktionierendes Skript für ein einzelnes Journal habe, sollte ich es erweitern können, um alle Journale des kategorischen Typs abzudecken. Meine andere zukünftige Phase ist ein ähnlicher Bedarf für einen zweiten Journaltyp, der mehrere multinomiale logistische Regressionen pro Journal enthält.
Irgendetwas stimmt nicht mit dem Skript, da es das Journal nicht an die Unterfunktionen übermittelt. Ich dachte und hoffte, dass dieser Fehler immer noch ein einfacher ist. Ich habe auch den Skriptindex durchgesehen, um zu sehen, ob etwas anderes helfen kann, aber ohne Erfolg.
Betreff: Brauche Hilfe mit Advanced JSL – Daten aus einem Journal lesenIch bin mir nicht sicher, was Ihr Skript macht, da Sie nicht mit Tabellenfeldern arbeiten (das wäre sehr einfach). Die Funktionen sind außerdem falsch definiert, was höchstwahrscheinlich erklärt, warum Ihre Funktionen nicht wie erwartet ausgeführt werden.
Ich würde mir höchstwahrscheinlich nicht einmal die Mühe machen, das Anzeigefeld zu verändern, das die Kontingenztabelle verwendet, und ich würde es aus dem Text analysieren
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");Betreff: Brauche Hilfe mit Advanced JSL – Daten aus einem Journal lesenhallo Jarmo,
Erstmal danke für eure Unterstützung/Hilfe. Ich wollte mir etwas Zeit nehmen, um euren Ansatz hier in mein Skript zu implementieren. Ich konnte es anpassen, habe aber noch ein paar Fragen. Ich werde jedoch die obige Lösung auswählen.
Meine Anschlussfragen:
Wenn man bedenkt, dass meine Phase 1 ein Journal mit reinen kategorialen Tabellen ist, ist die Anzahl der Tabellen/Journal variabel.
1. So ermitteln Sie die Anzahl der Kategorietabellen für eine bestimmte Zeitschrift (im obigen Fall wären das beispielsweise 2)
2. Wie erhält man die Namen solcher Kategorietabellen (z. B. „Tödlich nach breiter Flugphase“ und „Tödlich nach Wetterbedingungen“)?
3. Meine Phase 2 wird eine reine Sammlung multinomialer logistischer Regressionen sein. Das Skript, das ich von Ihrer Unterstützung abgeleitet habe, wurde nicht direkt ausgeführt, aber ich muss etwas Zeit darauf verwenden, bevor ich es einreiche. Ich kann auch Beispieldaten vorbereiten. Lassen Sie mich also hier einen Platzhalter einfügen.
4. Was ist der schnellste Weg, um in fortgeschrittenere Skripterstellung einzusteigen? Wenn ich mich nicht irre, wirft beispielsweise das Eigenschaftenfeld in meinem Beispiel etwas Licht auf mögliche JMP-Funktionsnamen, die möglicherweise damit zusammenhängen. Ich habe den Skriptindex ziemlich oft verwendet, aber in meinem Fall war das nicht sehr effektiv. Ich erinnere mich auch, dass es bei den älteren Versionen eine Skriptdokumentation gab, ich bin mir nicht sicher, wo die letzte Version davon existiert.
Danke noch einmal.
Betreff: Brauche Hilfe mit Advanced JSL – Daten aus einem Journal lesen1. Die Verwendung von XPath ist eine Option
obs = (j << XPath("//OutlineBox[contains(text(), 'Fatal By')]"));
2. Wenn Sie Gliederungsfeldreferenzen haben, können Sie << Titel abrufen
obs << get title;
4. Verwenden Sie den Scripting Index und den Scripting Guide der JMP-Hilfe (die JMP-Hilfe enthält auch eine JSL-Syntaxreferenz). Außerdem sollten Sie sich derzeit nicht auf LLM für JSL verlassen, da diese sehr unzuverlässig sind (wie Sie an Ihrem Skript sehen können).
Betreff: Brauche Hilfe mit Advanced JSL – Daten aus einem Journal lesenIch habe die Obj-Syntax wie in den Beispieldaten ausprobiert, aber es hat nicht funktioniert.
Name nicht aufgelöst: Objekt beim Zugriff oder bei der Auswertung von „Objekt“, Objekt/*###*/
Alle meine Tabellen haben eine gemeinsame Zeichenfolge im Tabellennamen, sodass ich nach dieser gemeinsamen Zeichenfolge suchen kann (wie „Fatal by“ im obigen Beispiel).
Ich gehe davon aus, dass obj eine Liste sein wird, wenn es funktioniert. In diesem Fall muss ich die Anzahl der Tabellen im Journal wahrscheinlich nicht kennen.
Was LLMs betrifft, stimme ich Ihnen zu. Am Anfang wird die Skriptstruktur sehr schnell vorgegeben, nur um dann festzustellen, dass viele Bereiche nicht funktionieren. Noch frustrierender ist, dass sie manchmal buchstäblich dumm werden können ... Es würde einen Code bereitstellen, zu dem ich mein Feedback geben und ihm in manchen Fällen sogar sagen würde, dass er bestimmte Korrekturen vornehmen soll ... in der nächsten Runde würde der LLM dieselbe falsche Lösung bereitstellen. Ich glaube, ich habe das sogar mehr als zweimal hintereinander gesehen.
Aber oft und bei einfacheren Sachen kann es mir einen Anstoß geben, also verwende ich es weiterhin, natürlich mit Vorsicht.
Betreff: Brauche Hilfe mit Advanced JSL – Daten aus einem Journal lesenBei JSL sollten Sie interaktiv in JMP beginnen und JMP das Skript erstellen lassen. Wenn das nicht ausreicht und Sie noch ein bisschen mehr Skripting machen möchten, werfen Sie einen kurzen Blick auf den Scripting Guide. Verwenden Sie dann den Scripting Index als Hauptressource (er enthält auch Links zum Scripting Guide/JSL-Syntaxreferenz) und konsultieren Sie von Zeit zu Zeit LLM, ABER seien Sie sich darüber im Klaren, dass LLM bei JSL im Allgemeinen sehr falsch liegt.