Verwenden von Konfigurationsspalten zum selektiven Anwenden von Regeln auf KontrolldiagrammeHallo,
Ich habe ein Problem damit, die entsprechenden Trendregeln oder „Tests“ mithilfe von JSL auf Kontrolldiagramme anzuwenden. Meine Daten bestehen aus den Ergebnissen von Mehrfachanalysen für alle Messchargen eines bestimmten Produkts im letzten Jahr. Die Daten, mit denen ich arbeite, liegen in einem gestapelten Format vor und die Tabelle enthält Spalten mit Kontroll- und Spezifikationsgrenzen sowie 8 Spalten für alle 8 Tests. In den Testspalten enthält jede Zeile entweder eine 1 oder eine 0, um anzugeben, ob die Regel gilt. Ich habe unten eine Beispieltabelle in einem ähnlichen Format als Referenz erstellt.
| Losnummer | Analyse | Ergebnis | LCL | UCL | Regel 1 | Regel3 | Regel 5 |
| A | X | 12 | 10 | 18 | 1 | 0 | 0 |
| A | Y | 204 | 200 | 215 | 1 | 0 | 1 |
| A | Z | 0,8 | 0,5 | 1 | 1 | 1 | 1 |
| B | X | 13 | 10 | 18 | 1 | 0 | 0 |
| B | Y | 209 | 200 | 215 | 1 | 0 | 1 |
| B | Z | 0,7 | 0,5 | 1 | 1 | 1 | 1 |
| C | X | 15 | 10 | 18 | 1 | 0 | 0 |
| C | Y | 205 | 200 | 215 | 1 | 0 | 1 |
| C | Z | 0,8 | 0,5 | 1 | 1 | 1 | 1 |
In diesem Beispiel gibt es 3 eindeutige Analysen für 3 eindeutige Partien. Die Spalte „Ergebnis“ ist für jede Analyse jeder Partie eindeutig, aber die Kontrollgrenzen und Trendregeln werden für übereinstimmende Analysen angepasst, sodass für Analyse X nur Regel 1 gelten sollte, für Analyse Z jedoch alle 3 Regeln. Ich habe Kontrolldiagramme mit dem folgenden Code erstellt, wobei ich die Spaltennamen für das Beispiel geringfügig geändert habe:
dt << Control Chart(
Sample Label( :Lot ),
Group Size( 1 ),
KSigma( 3 ),
By( :Analysis ),
Chart Col( :Result, Levey Jennings( Show Zones( 1 ), Shade Zones( 1 ), Test 1( :Rule1[1] ), Test 3( :Rule3[1] ), Test 5( :Rule5[1] ) ) ),
SendToReport(
Dispatch(
{},
"Levey Jennings of Result",
OutlineBox,
{Set Title("Parameter: "||char(:Analysis))}
),Der Rest des Codes besteht aus Dispatch-Befehlen zum Hinzufügen von Referenzlinien, Anpassen der Rahmengröße usw. Diese Codeabschnitte weisen keine Probleme auf, daher habe ich sie der Kürze halber weggelassen. Wie oben gezeigt habe ich beim Hinzufügen der Zeilen „Test 1“, „Test 3“ und „Test 5“ zum Levey Jennings-Befehl versucht, auf den Wert der ersten Zeile aus den jeweiligen Konfigurationsspalten zu verweisen. Auf diese Weise enthält die erste Zeile die Trendregelkonfiguration der aktuell dargestellten Analyse, wenn das Skript die Diagramme nach Analyse zeichnet. Wenn ich das Skript jedoch ausführe, wendet es einfach alle 3 Regeln an, unabhängig davon, ob sie für diesen bestimmten Parameter angewendet werden sollten. Kann mir jemand erklären, wie ich JMP dazu bringen kann, den Wert aus den jeweiligen Konfigurationsspalten zu analysieren und zu bestimmen, ob eine bestimmte Regel auf jedes Diagramm nach Analyse angewendet werden sollte?
Ich habe dies zuvor in einer geteilten Tabelle zum Laufen gebracht, aber ich habe dazu eine For-Schleife verwendet, um eine Zeichenfolge mit den in der Zeichenfolge verketteten Werten zu erstellen, und dann die Befehle Parse und Eval zur Ausführung verwendet. Ich würde es wirklich vorziehen, hier keine For-Schleife zu verwenden, wenn es vermieden werden kann, da dies der Grund ist, warum ich die Daten überhaupt in einem gestapelten Format abrufe.
Automatisierung und SkriptingDatenexploration und -visualisierungBetreff: Verwenden von Konfigurationsspalten zum selektiven Anwenden von Regeln auf KontrolldiagrammeIch habe Ihr JSL mit 2 Änderungen ausgeführt
- Sie haben eine Spalte mit dem Namen „Lot“ angegeben. Der tatsächliche Name lautet „Lot-ID“.
- Ich habe den Abschnitt „An Bericht senden“ entfernt
Names Default To Here( 1 );
dt = Current Data Table();
dt << Control Chart(
Sample Label( :Lot ID ),
Group Size( 1 ),
KSigma( 3 ),
By( :Analysis ),
Chart Col(
:Result,
Levey Jennings(
Show Zones( 1 ),
Shade Zones( 1 ),
Test 1( :Rule1[1] ),
Test 3( :Rule3[1] ),
Test 5( :Rule5[1] )
)
);
Der Code wurde ausgeführt und erzeugte die folgende Ausgabe

Um zu überprüfen, ob die angegebenen Tests richtig durchgeführt wurden, habe ich das Skript aus der Control Chart-Ausgabe gespeichert
Control Chart(
SendToByGroup( {:Analysis == "X"} ),
Sample Label( :Lot ID ),
KSigma( 3 ),
SendToByGroup(
{:Analysis == "X"},
Chart Col(
:Result,
Levey Jennings( Show Zones( 1 ), Shade Zones( 1 ), Test 1( 1 ) )
)
),
SendToByGroup(
{:Analysis == "Y"},
Chart Col(
:Result,
Levey Jennings(
Show Zones( 1 ),
Shade Zones( 1 ),
Test 1( 1 ),
Test 5( 1 )
)
)
),
SendToByGroup(
{:Analysis == "Z"},
Chart Col(
:Result,
Levey Jennings(
Show Zones( 1 ),
Shade Zones( 1 ),
Test 1( 1 ),
Test 3( 1 ),
Test 5( 1 )
)
)
),
By( :Analysis )
);
Wie im generierten Skript zu sehen ist, erhielt das Kontrolldiagramm die Informationen darüber, welche Tests für jede Analyse ausgeführt werden sollen
Ich habe den Code unter Windows 11 mit JMP 18.1.0 ausgeführt
Ich sehe kein Problem
Betreff: Verwenden von Konfigurationsspalten zum selektiven Anwenden von Regeln auf KontrolldiagrammeOkay, ich habe also versucht, es genau so zu replizieren, wie Sie es beschrieben haben. Dies ist das Skript, das ich ausgeführt habe.
Names Default to Here( 1 );
dt = Current Data Table();
dt << Control Chart(
Sample Label( :Lot ID ),
Group Size( 1 ),
KSigma( 3 ),
By( :Analysis ),
Chart Col(
:Result,
Levey Jennings(
Show Zones( 1 ),
Shade Zones( 1 ),
Test 1( :Rule1[1] ),
Test 3( :Rule3[1] ),
Test 5( :Rule5[1] )
)
)
);
Aber meine Ausgabe ist standardmäßig so, dass alle drei Regeln für jede Analyse aktiv sind. Hier ist das Skript für die X-Analyse, bei der nur Test 1 basierend auf den Konfigurationsspalten angewendet werden sollte.
Control Chart(
Sample Label( :Lot ID ),
KSigma( 3 ),
Chart Col(
:Result,
Levey Jennings(
Show Zones( 1 ),
Shade Zones( 1 ),
Test 1( 1 ),
Test 3( 1 ),
Test 5( 1 )
)
),
Where( :Analysis == "X" )
);
Ich verwende JMP 17.0.0 unter Windows 11, also ist dies vielleicht etwas, das in einem der Updates zwischen unseren Versionen behoben wurde. Ich werde mich bei meiner IT-Abteilung über die Aktualisierung informieren, bevor ich mit anderen Fehlerbehebungen beginne. Danke für das Testen des Codes, ich freue mich, dass der Code im Prinzip funktionieren sollte!
Betreff: Verwenden von Konfigurationsspalten zum selektiven Anwenden von Regeln auf KontrolldiagrammeIch habe Ihre Ergebnisse in JMP 17 repliziert. Im Folgenden finden Sie eine Möglichkeit, die gewünschten Ergebnisse zu erzielen, indem Sie jede der Analyseebenen einzeln ausführen.
Names Default To Here( 1 );
dt = Current Data Table();
Summarize( dt, byGroup = By( :Analysis ) );
For Each( {level}, byGroup,
dt << select where( :Analysis == level );
dtTemp = dt << Subset( selected columns( 0 ), selected rows( 1 ) );
Eval(
Eval Expr(
dtTemp << Control Chart(
Sample Label( :Lot ID ),
Group Size( 1 ),
KSigma( 3 ),
//By( :Analysis ),
Chart Col(
:Result,
Levey Jennings(
Show Zones( 1 ),
Shade Zones( 1 ),
Test 1( Expr( dtTemp:Rule1[1] ) ),
Test 3( Expr( dtTemp:Rule3[1] ) ),
Test 5( Expr( dtTemp:Rule5[1] ) )
)
)
)
)
);
);Betreff: Verwenden von Konfigurationsspalten zum selektiven Anwenden von Regeln auf KontrolldiagrammeDies ist ähnlich, wie ich es erreicht habe, als ich mit einer geteilten Tabelle gearbeitet habe, indem ich nach Spaltennummer eine Schleife ausgeführt und einen Ausdruck erstellt habe, der schließlich in JSL analysiert und ausgewertet wurde. Ich wollte nur die Verwendung einer For-Anweisung vermeiden, wenn ich mit der gestapelten Tabelle gearbeitet und die Funktionen By und Where verwendet habe, um nach Analyse zu trennen. Letztendlich ist dieser JMP17-Code immer noch um Längen einfacher als das, was ich für geteilte Tabellen entwickelt habe. Nochmals vielen Dank für den Input! Ich werde versuchen, dies in mein aktuelles Skript zu integrieren, bis ich auf JMP18 aktualisieren kann.