Erfahren Sie mehr in unserem Online-Kurs mit
Videos, Übungsaufgaben und Quizze.
Wählen Sie die Lektionen aus und absolvieren Sie sie in beliebiger Reihenfolge.
Einführung in die JMP-Skriptsprache

In dieser Demonstration verwenden wir ein vorgefertigtes Skript, um zu zeigen, wie man einen benutzerdefinierten Bericht erstellt. Im Kursjournal gibt es im Abschnitt „NOx-Daten“ ein Skript für die Stickoxid-Daten. Wir haben sechs verschiedene Präparationen. Anschließend haben wir das Protokoll der Stickoxid-Konzentration für jedes Replikat der sechs verschiedenen Präparationen aufgezeichnet. Das Skript ist also vorgefertigt. Im Kursjournal heißt es „Benutzerdefiniertes NOx-Berichtsskript“. Ich werde es Schritt für Schritt ausführen. Ich möchte das Skript aber komplett ausführen, um das Endergebnis zu sehen, bevor wir die einzelnen Teile des Skripts durchgehen. Ich werde also das gesamte Skript ausführen. Dieses Skript erstellt eine Übersichtstabelle für den Graph Builder. Wir werden das durchgehen, damit wir nicht nur die Rohdaten verwenden. Der benutzerdefinierte Bericht ist ein Bericht mit Registerkarten. Auf der ersten Registerkarte „%CV“ befindet sich die Live-Plattform des Graph Builders. Dieses rote Dreieck ist das typische rote Dreieckmenü, das ich im Graph Builder sehe. Anschließend haben wir die berechneten Variationskoeffizienten (%CV) für jede Stufe. Hier haben wir ein benutzerdefiniertes rotes Dreieckmenü, das unser Skript erstellt hat. Hier kann ich die Anzahl der Dezimalstellen für die Zahlenspalten in meinem Bericht festlegen. Auf der zweiten Registerkarte „Hintergrundinformationen“ habe ich die Rohdaten für jede Stufe, den Mittelwert und die Standardabweichung, die zur Berechnung des Variationskoeffizienten verwendet werden, sowie den berechneten Wert. Wenn ich in diesem roten Dreieckmenü eine Auswahl treffe – was ich übrigens auch tue – wähle ich im vorderen Reiter „%CV“ zwei Dezimalstellen aus. Das Skript prüft alle Zahlenspalten in diesem Bericht. Sehen wir uns also an, wie es aufgebaut ist. Als Erstes sendet das Skript eine Einwegnachricht an die Originaldatentabelle mit dem Logarithmus der Stickoxidkonzentration – dem Logarithmus der Stickoxidkonzentration in der Y-Rolle und der Zubereitung in der X-Rolle. Für die Berechnung des Variationskoeffizienten benötige ich die Berichtstabelle mit Mittelwert und Standardabweichung. Ich bitte darum, dass dies aktiviert wird. Ich möchte erwähnen, dass es viele Möglichkeiten gibt, den Variationskoeffizienten aus JMP zu ermitteln, ohne ihn manuell berechnen zu müssen. Wir veranschaulichen jedoch erneut einige Ideen, Werte als Matrix abzurufen und diese Matrixberechnungen zu verwenden. Ich führe die Zeilen durch. Hier ist die Einwegausgabe mit der angeforderten Tabelle. In der Zeile sehen wir die andere Syntax zum Abrufen der Berichtsebene. Ein Vorteil dieser Syntax besteht darin, dass ich, wenn ich nicht alle Informationen aus dem Bericht benötige, einfach das Gliederungselement der gewünschten Tabelle anfordern kann – in diesem Fall die Mittelwerte und Standardabweichungen. So kann ich meinen Code beim Zugriff auf Anzeigefelder etwas vereinfachen. Ich speichere das in der Variable ob. Hier verwenden wir üblicherweise die Abkürzung für „Outline Box“. Sie haben beim Bewegen des Mauszeigers gesehen, dass bereits ein Wert gespeichert ist, da ich das gesamte Skript bereits ausgeführt habe. Ich werde das aber neu zuweisen. Die Zeilen und rufen nun die Spalte mit den Ebenen sowie die Spalten mit den Mittelwerten und Standardabweichungen ab. Die Werte in dieser Spalte muss ich nicht bearbeiten. Ich möchte sie nur in meinem benutzerdefinierten Bericht für die Tabelle „Schätzungen“ und in den Hintergrundinformationen – der Tabelle „Alle Ergebnisse“ – verwenden. Eine praktische Funktion für eine Anzeigebox, von der ich nur eine Kopie benötige, ist die Nachricht „Box klonen“. Dadurch wird ein Klon dieser Anzeigebox in den Ebenen gespeichert, auch nachdem ich das Einwegfenster geschlossen habe. Wir indizieren also die Variable „ob“ mit „String Col Box“. Auch hier könnten wir die Spaltenüberschriften verwenden, was sicherlich nicht schaden würde. Da wir aber nur diese eine Anzeigebox in „ob“ gespeichert haben – oder den Verweis darauf –, ist die Syntax mit den Indexwerten einfach genug. Ich führe also die Zeile aus. Die Ebenen speichern nun eine Anzeigebox, und zwar eine String-Spalte „box“, die Sie hier im Protokoll sehen können. Line: Ich benötige Mittelwerte und Standardabweichungen für meine Berechnung. Ich kann diese nicht einfach kopieren. Ich muss die Werte als Matrix abfragen und in der Variable mMeans (Mittelwertmatrix) speichern. Diese Werte können Sie im Protokoll sehen oder indem Sie mit der Maus über mMeans fahren. Dasselbe gilt für die Standardabweichungen in Line. Ich führe das also aus, und Sie können – ich verkleinere es etwas – diese Werte im Protokoll sehen. Line erstellt eine Variable namens mCVs, und das ist wieder nur die Berechnung des Variationskoeffizienten. Das ist ein relatives Maß für die Variabilität, bei dem wir die Standardabweichungen durch die Mittelwerte teilen und das Ergebnis dann mit multiplizieren. Ich führe Line aus. Jetzt habe ich die Variationskoeffizienten. Und an diesem Punkt benötige ich nichts weiter von der Plattform. Ich sende also die Nachricht an ow – diese wird an die Objektreferenz der Analyseebene gesendet –, um das Fenster zu schließen. Ich empfehle immer, Fenster, die Ihr Skript schließen kann – ob Analysen oder Datentabellen –, auch zu schließen. Denn wenn sie nicht mehr geöffnet sein müssen, belegen sie auch keinen Speicherplatz. Im nächsten Schritt wollte ich den Graph Builder in meinem benutzerdefinierten Bericht verwenden. Der Graph Builder berechnet derzeit den Variationskoeffizienten nicht als eine seiner zusammenfassenden Statistiken. Daher habe ich eine zusammenfassende Tabelle mit dem Variationskoeffizienten erstellt, der im Befehl „Zusammenfassungstabellen“ integriert ist, und diese dann als Grundlage für den Graph Builder verwendet. Bevor ich die zusammenfassende Tabelle öffne, möchte ich die schließen, die beim Ausführen des gesamten Skripts angezeigt wurde. Beim Schließen erhalte ich die Warnung, dass ein weiteres Fenster geöffnet ist. Ich empfehle daher, alle Fenster zu schließen. Dadurch wurde der Graph Builder sofort aus meinem benutzerdefinierten Bericht entfernt. Es gibt also keinen Grund mehr, diesen Beispielbericht geöffnet zu lassen. Wir werden ihn im weiteren Verlauf des Skripts neu erstellen. Ich schließe auch das. Die Zeile sendet „Zusammenfassung“ als Nachricht an die ursprüngliche Datentabelle, wo wir nach Vorbereitung gruppieren. Die Statistik ist der Variationskoeffizient. Ich führe die Zeile aus. Damit habe ich alles, was ich für meinen benutzerdefinierten Bericht brauche. Wir verwenden „Neues Fenster“. Das dadurch erstellte Anzeigefeld speichere ich in der Variable „nw“, um damit kommunizieren zu können. Ich betitele mein neues Fenster „Benutzerdefinierter Bericht“ und skripte dann die Registerkarten. Ich spezifiziere also „Registerkartenfeld“. Die Anzahl der Registerkarten wird durch die Anzahl der Argumente bestimmt, die Sie für das Registerkartenfeld angeben. In diesem Fall lautet das erste Argument für das Registerkartenfeld der Titel. Das erste Argument heißt „%CV“. Anschließend erstellt mir „H-Listenfeld“ ein horizontales Listenfeld mit dem Graph Builder. Den starte ich live. So erhalte ich die Live-Plattform in diesem Fenster, indem ich den Start direkt im Anzeigefeld ermögliche. Diese Syntax habe ich möglicherweise aus der interaktiven Erstellung des Graph Builders und der Übertragung an die Summarize-Tabelle übernommen. Außerdem richte ich in der H-Liste das Gliederungsfeld „Schätzungen“ ein. Darin befindet sich das Tabellenfeld mit dem in „Ebenen“ gespeicherten String-Spaltenfeld. Mein Skript erstellt ein Zahlenfeld mit den %CV-Werten. Das zweite Registerkartenfeld enthält die Hintergrundinformationen und wird mithilfe eines Gliederungsfelds als „Alle Ergebnisse“ bezeichnet. Innerhalb des Gliederungsfelds werden in einem Tabellenfeld vier Zahlenspalten horizontal angeordnet. Ich mache es größer, um sicherzustellen, dass ich die gewünschten Linien erfasse, die bis gehen. Und ich führe diesen Teil aus. Das ist also noch nicht vollständig. Dies ist der Ausgangspunkt für meinen benutzerdefinierten Bericht. Ich denke, ich kann das Skriptfenster jetzt etwas schmaler machen, damit wir beide nebeneinander sehen können. Der Graph Builder hat standardmäßig keine Linie bei …, das ist eines der Dinge, die ich hinzufügen möchte. Ich möchte die Größe anpassen, da das Diagramm nicht so groß sein muss. Ich möchte das rote Dreieckmenü zum Gliederungselement „Schätzungen“ hinzufügen. Beachten Sie, dass ich im Skript beim Erstellen des Gliederungsfelds für die Schätzungen auf der ersten Registerkarte des benutzerdefinierten Berichts das Ergebnis in „ob“ gespeichert habe. Diesen Variablennamen hatte ich bereits verwendet, als ich die Mittelwerte und Standardabweichungen aus der Einwegplattform ermittelt hatte. Auch hier habe ich einfach die Abkürzung verwendet und den Wert überschrieben, da ich den vorherigen Wert nicht benötigte. Wenn ich jetzt nach unten scrolle, um den Rest des Skripts anzuzeigen, sende ich die Nachricht „Menüskript festlegen“ an das in „ob“ gespeicherte Anzeigefeld, also das Gliederungsfeld „Schätzungen“. Das „Menüskript festlegen“ verwendet als Argument eine Liste von Menüelementen, die sich mit dem Ausdruck abwechseln, der bei Auswahl dieses Menüelements ausgeführt wird. Der Ausdruck durchläuft also einfach die Zahlenspaltenfelder im Bericht und legt das Format fest. Wir haben eine Feldbreite mit der maximal darstellbaren Zeichenanzahl und anschließend die Anzahl der Dezimalstellen. Je nachdem, welche der roten Dreieckmenüoptionen wir auswählen, wird also bestimmt, welcher dieser Ausdrücke ausgeführt wird. Ich führe also Zeilen durch. Im benutzerdefinierten Bericht sehen Sie nun das rote Dreieckmenü. Mit Zeile ändern Sie die Größe des Rahmenfelds im Graph Builder. Dazu klicke ich mit der rechten Maustaste auf die Schaltfläche „Offenlegen“ und wähle unter „Bearbeiten“ die Option „Baumstruktur anzeigen“. Ich könnte nach unten scrollen. Wenn Sie einen vollständigen Bericht betrachten, finden Sie hier viele Konstruktoren, die wir in unseren eigenen Skripten nicht verwenden. Ich scrolle nach unten. Da ist die PictureBox. Scrollen Sie weiter nach unten. Da ist der Titel. Scrollen Sie weiter nach unten. Sie können mit der Maus darüberfahren, um die Achsenfelder anzuzeigen. Schließlich sehe ich die FrameBox und sehe, dass ich die Größe ändern möchte. Wenn Sie sich mit Plattformen vertraut gemacht haben, müssen Sie sich die Baumstruktur möglicherweise nicht ansehen. Ich füge also Zeile in das neue Fenster ein und sende die Meldung „Rahmengröße“ (in Pixeln). Anschließend führe ich Zeile aus. Dadurch wurde die Größe des Graph Builder-Rahmenfelds geändert. Sie können den Skriptindex verwenden, um zu sehen, welche Nachrichten die verschiedenen Anzeigefelder empfangen können. Wenn ich also im Hilfemenü „Skriptindex“ auswähle, kann ich von „Alle Kategorien“ zu „Anzeigefelder“ wechseln und nach unten scrollen, um „FrameBox“ zu finden und die Nachrichten anzuzeigen, die dorthin gesendet werden können. Ich schließe den Skriptindex. Außerdem wollten wir der Achsenbox eine Referenzlinie hinzufügen. Wenn ich mit der Anzeigebaumstruktur des Graph Builders nicht vertraut wäre, würde ich mir das Fenster „Baumstruktur“ ansehen. Auf manchen Plattformen ist dies die vertikale Achse. Auf anderen Plattformen ist es die horizontale Achse. In diesem Fall ist es die horizontale Achse. Ich sende die Nachricht zum Hinzufügen der Referenzlinie. Die Argumente hier lauten: Welcher Wert soll die Referenzlinie haben? Welche Linienart? Ich möchte eine durchgezogene Linie. Die Farbe? Ich nehme Schwarz. Das vierte Argument ist eine Beschriftung auf der Achse. Eine leere Zeichenfolge bedeutet, dass wir keine Beschriftung benötigen. Ich könnte sie löschen, solange ich ein Komma verwende, um JMP mitzuteilen, dass dies das fünfte und nicht das vierte Argument ist. Ohne dieses Komma würde JMP die Achse mit einem beschriften. Durch das Komma versteht JMP jedoch, dass dies die Linienbreite und nicht die Beschriftung ist. Ich führe also „line“ aus. Damit wird meine Referenzlinie gezeichnet. Der letzte Teil dieses Skripts besteht darin, „Journal speichern“ an das in nw gespeicherte Anzeigefeld zu senden und es „Custom CV Report.jrn“ zu nennen. Ihr Skript könnte hier enden und diesen Bericht mit dem Live-Fenster des Graph Builders und dem roten Dreieckmenü für die Benutzerinteraktion erstellen. Ich wähle diesmal eine Dezimalstelle aus. In manchen Fällen möchten Sie den Bericht vielleicht auch als Journal speichern. Dadurch geht das rote Dreieckmenü verloren. Ihr Graph Builder ist dann kein Live-Bericht mehr. Die letzte Option zeigt, wie Sie einen benutzerdefinierten Bericht mit der Meldung „Journal speichern“ als Journal speichern können. In diesem Skript haben wir die Analyseebene gestartet. Wir haben das Objekt der Berichtsebene abgerufen und anschließend die Elemente dieser Berichtsebene, die wir benötigten, entweder als Kopien oder als Matrizen für Manipulationen, abgerufen. Wir haben eine separate Datentabelle für die gewünschte Plattform erstellt und anschließend den benutzerdefinierten Bericht mithilfe der Funktion „Neues Fenster“ erstellt. In diesem Fall mit Registerkarten, horizontalen Listenfeldern und Gliederungsfeldern als Anzeigefelder, zusätzlich zu den in „Ebenen“ gespeicherten Zeichenfolgenfeldern und den verschiedenen Zahlenfeldern. Anschließend haben wir gesehen, wie Nachrichten an Komponenten dieses benutzerdefinierten Berichts gesendet werden.