Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?Ich habe das folgende JSL zusammengestellt, um zuerst die Ausreißer in den Daten zu filtern und dann den Ppk zu erhalten. Ich stelle jedoch fest, dass mein Skript falsch ist, da ich beim Filtern der Ausreißer durch Ausschließen aller Zeilen Datenpunkte ausschließe, die keine Ausreißer für andere Prozessparameter sind.
Für die Definition von Ausreißern ist mein bevorzugtes Kriterium , dass alles außerhalb von Q1/Q3 +/- 1,5 x IQR ein Ausreißer ist. Und das ist (glaube ich) das, was ich im Folgenden verwende.
Names Default To Here (1);
Clear Log ();
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
col_names = dt << Get Column Group("Processes"); // Column Group should pre-exist.
obj = Explore Outliers(Y(Eval( col_names ) )); // Run expolore outliers
obj << Quantile Range Outliers( Tail Quantile( 0.25 ), Q (1.5) ); // select Q3/Q1 +/- 1.5 x IQR
obj << Exclude Rows(ALL); // exclude OL rows
// Run capability analysis
platform = dt << Process Capability(
Process Variables( Eval( col_names ) ),
Spec Limits Dialog( "No (skip columns with no spec limits)" ),
Moving Range Method( Average of Moving Ranges ),
Overall Sigma Summary Report( 1 ),
//Spec Limits Dialog( "No (skip columns with no spec limits)" ),
Select Out of Spec Values( 1 ),
Goal Plot(0 ),
Capability Index Plot( 1 ),
Process Performance Plot( 0 ),
Order By( "Within Sigma Ppk Ascending" )
);
Wait( 0 );
Report( platform )[Outline Box( "Process Capability" )][Outline Box( "Overall Sigma Capability Summary Report" )][Table Box( 1 )] <<
Make Into Data Table;
dt_curr = Current Data Table();
dt_curr << Set Name( "Capability Report" );Ich kann Ausreißerzellen pro Parameter einfärben, weiß aber nicht, wie ich sie von der Fähigkeitsanalyse ausschließen kann. Ich brauche hier Hilfe.
Zweitens möchte ich für jeden Wafer in einer Charge den Cpk für jeden Prozessparameter nach Ausreißerfilterung berechnen, um ein Cpk-Trenddiagramm pro Wafer für jeden Prozessparameter zu erhalten. Wie mache ich das über JSL (mit dem Beispieldatensatz, den ich in meinem Skript habe)?
Automatisierung und SkriptingWindowsBetreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?Für den ersten (Ppk) Teil meiner Frage: Würde das Tauschen
obj << Exclude Rows(ALL);
von
obj << Change to Missing(ALL);
mach den Job?
Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?Da Sie eine Tabelle im Breitformat haben, müssen Sie sie in fehlende Werte ändern (fehlende Wertcodes verwenden oder Daten ändern) ODER Ihre Daten stapeln, um Zeilen ausschließen zu können.
Haben Sie versucht, wenn << In „fehlend“ ändern das Gesuchte bewirkt?

Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?@jthi, ich glaube, wir haben uns gekreuzt. Die Änderung auf „fehlend“ führt bei einigen Parametern zu einem negativen PPK – ist das zu erwarten?

Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?Erstellen Sie eine einzelne Spalte mit Ausreißern, für die Sie den Ppk manuell (und mit JMP) berechnen können. Ändern Sie die Ausreißer in fehlende, wiederholen Sie die Berechnungen. Sind sie korrekt?
Wenn ich einfach den ersten Parameter nehme und schaue, wie er aussieht

Ich würde sagen, jemand sollte irgendwie darauf reagieren. Man kann auch ziemlich leicht erkennen, warum es negative Fähigkeitswerte gibt (der Mittelwert liegt außerhalb der Spezifikationen).
Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?@jthi Danke. Ich hatte verstanden, dass PPK nicht negativ sein kann, CPK hingegen schon, daher zweifelte ich an meinem Schritt „In Fehlend ändern“. Ich werde mein Verständnis überprüfen. Noch eine Sache, bevor ich mit dem zweiten Teil meiner Frage fortfahre: Wende ich die Ausreißerfilterkriterien (d. h. Filter außerhalb von Q1/Q3 +/- 1,5 x IQR ) richtig an?
Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?Die besten Antworten auf solche Fragen finden Sie in der JMP-Dokumentation, wenn Sie nur die richtigen Stellen finden. Manchmal kann das allerdings ziemlich schwierig sein.
In diesem Fall höchstwahrscheinlich hier : Predictive and Specialized Modeling > Explore Outliers > Overview of Explore Outliers > Quantile Range Outliers oder hier : Predictive and Specialized Modeling > Explore Outliers > The Explore Outliers Report > Quantile Range Outliers Report

Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?@jthi Danke, komme jetzt zum zweiten Teil meiner Frage.
Für jeden Wafer in einer Charge möchte ich den Cpk für jeden Prozessparameter berechnennach Ausreißerfilterung, um für jeden Prozessparameter ein Cpk-Trenddiagramm pro Wafer zu erhalten.
Es handelt sich hierbei also nicht um die Fähigkeit eines Parameters für alle Wafer in einer Datentabelle, sondern um die Fähigkeit des Parameters für einen Wafer in einer bestimmten Charge.
Wie mache ich das über JSL mit demselben Datensatz, den ich hier habe?
Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?Sollten Gruppierungsvariablen Ihnen nicht diese Tabelle mit :lot_id, :wafer und/oder :wafer in lot nach Bedarf liefern? Und dann können Sie aus dieser Tabelle ein Diagramm erstellen
Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?@jthi Danke. Wenn ich benutze
Names Default To Here (1);
Clear Log ();
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
col_names = dt << Get Column Group("Processes"); // Column Group should pre-exist.
obj = Explore Outliers(Y(Eval( col_names )),By( :Wafer ID in lot ID)); // Run expolore outliers
obj << Quantile Range Outliers( Tail Quantile( 0.25 ), Q (1.5) ); // select Q3/Q1 +/- 1.5 x IQR<BR />Ich erhalte das Fenster „Explore Outliers Platform“, in dem ich die einzelnen Wafer einzeln bearbeite. Wie verwende ich dann
obj << Change to Missing(ALL);
um zum nächsten Schritt zu gelangen, d. h. zur Fähigkeitsanalyse pro „Wafer-ID in Lot-ID“?
Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?Ich denke, das sollte problemlos funktionieren. Sind Sie sicher, dass Ihre Daten Ausreißer enthalten?
- Nehmen Sie einen viel kleineren Datensatz (nur wenige Wafer-IDs in der Lot-ID)
- Erstellen Sie einige Ausreißer zu einer Spalte
- Führen Sie Ihr Skript aus
- Überprüfen Sie, ob es funktioniert
- Wiederholen Sie dies mit größeren Datenmengen
Beachten Sie, dass ich Tail Quantile geändert habe
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
eo = dt << Explore Outliers(Y(Column Group("Processes")), By(:Wafer ID in lot ID), Invisible);
eo << Quantile Range Outliers(Tail Quantile(0.4), Q(1.5));
dt << Begin Data Update;
// eo << Color Cells(All);
Log Capture(eo << Change to Missing(ALL));
dt << End Data Update;
eo[1] << Close Window;Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?@jthi Danke, ich habe jetzt einen kleineren Datensatz für die Analyse verwendet (JSL unten). Ich denke, es ist nicht nötig, Ausreißer auf Basis einer Wafer-ID in einer Lot-ID zu filtern, da die Ausreißerzellen sowieso als fehlend dargestellt werden. Was ich brauche, ist eine Fähigkeitsanalyse für einen nach Ausreißern gefilterten Datensatz.
Names Default To Here( 1 );
Clear Log();
dt_full = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
dt = Data Table( "Semiconductor Capability" ) << Subset(
All rows,
columns( :lot_id, :wafer, :Wafer ID in lot ID, :SITE, :NPN1, :PNP2, :PNP3, :FNM1, :RES3, RSP2 )
);
Wait( 1 );
Close( dt_full, no save );
col_names = dt << Get Column Group( "Processes" ); // Column Group should pre-exist.
obj = Explore Outliers( Y( Eval( col_names ) ) );//,By( :Wafer ID in lot ID)); // Run expolore outliers
obj << Quantile Range Outliers( Tail Quantile( 0.25 ), Q( 1.5 ) ); // select Q3/Q1 +/- 1.5 x IQR
obj << Color Cells( ALL ); //check
Wait( 1 );
obj << Change to Missing( ALL );
Wait( 1 );
obj << Close Window;
// Run capability analysis
platform = dt << Process Capability(
Process Variables( Eval( col_names ) ),
Spec Limits Dialog( "No (skip columns with no spec limits)" ),
Moving Range Method( Average of Moving Ranges ),
//Within Sigma Summary Report( 0),
Overall Sigma Summary Report( 1 ),
Select Out of Spec Values( 1 ),
Goal Plot( 0 ),
Capability Index Plot( 0 ),
Capability Box Plots( 0 ),
Process Performance Plot( 0 ),
Order By( "Overall Sigma Ppk Ascending" )
);
Wait( 0 );
Report( platform )[Outline Box( "Process Capability" )][Outline Box( "Overall Sigma Capability Summary Report" )][Table Box( 1 )] <<
Make Into Data Table;
dt_curr = Current Data Table();
dt_curr << Set Name( "Capability Report" );
platform << close window;
dt << Clear Select;
// Run capability analysis by wafer in a lot
platform2 = dt << Process Capability(
Process Variables( Eval( col_names ) ),
Spec Limits Dialog( "No (skip columns with no spec limits)" ),
Moving Range Method( Average of Moving Ranges ),
//Within Sigma Summary Report( 0),
Overall Sigma Summary Report(1),
Select Out of Spec Values( 1 ),
Goal Plot( 0 ),
Capability Index Plot( 0 ),
Capability Box Plots( 0 ),
Process Performance Plot( 0 ),
Order By( "Overall Sigma Ppk Ascending" ),
By( :Wafer ID in lot ID )
);
dt << Clear Select;
Dort möchte ich Ppk pro Parameter für den gesamten Datensatz mit der Fähigkeit desselben Parameters auf Basis einer Wafer-ID auf einer Lot-ID- Basis vergleichen. Zu diesem Zweck habe ich das folgende Skript zusammengestellt, indem ich versuche, aus der zweiten Fähigkeitsanalyse eine kombinierte Datentabelle zu erstellen (kann interaktiv erfolgen).
Report( platform2)[Outline Box( "Process Capability" )][Outline Box( "Overall Sigma Capability Summary Report" )][Table Box( 1 )] <<
Make Combined Data Table;
platform2 << close window;
Und schließlich möchte ich ein Diagramm der Fähigkeit (y-Achse) gegenüber der Wafer-ID in einer Chargen-ID (x-Achse), das aus der kombinierten Datentabelle mit Parameternamen auf der Seite (im Graph Builder) generiert wurde. Außerdem muss der aus der ersten Fähigkeitsanalyse berechnete Ppk für jeden Parameter als horizontale Linie angezeigt werden. Könnte ich hier bitte Hilfe bekommen?
Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?Was ist das Problem, wenn Sie versuchen, die kombinierte Datentabelle zu erstellen? Haben Sie überprüft, was Plattform2 enthält?
Names Default To Here(1);
dt_full = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
dt = Data Table("Semiconductor Capability") << Subset(All rows, Columns(:lot_id, :wafer, :Wafer ID in lot ID, :SITE, :NPN1, :PNP2, :PNP3, :FNM1, :RES3, RSP2));
Close(dt_full, no save);
col_names = dt << Get Column Group("Processes");
obj = dt << Explore Outliers(Y(Eval(col_names)));
obj << Quantile Range Outliers(Tail Quantile(0.25), Q(1.5));
obj << Change to Missing(ALL);
obj << Close Window;
// Run capability analysis
pc = dt << Process Capability(
Process Variables(Eval(col_names)),
Spec Limits Dialog("No (skip columns with no spec limits)"),
Moving Range Method(Average of Moving Ranges),
Overall Sigma Summary Report(1),
Select Out of Spec Values(1),
Goal Plot(0),
Capability Index Plot(0),
Capability Box Plots(0),
Process Performance Plot(0),
Order By("Overall Sigma Ppk Ascending"),
Invisible
);
dt_nogroup = Report(pc)[Outline Box("Process Capability")][Outline Box("Overall Sigma Capability Summary Report")][Table Box(1)] << Make Into Data Table;
dt_nogroup << Set Name("Capability Report");
pc << close window;
// Run capability analysis by wafer in a lot
pc = dt << Process Capability(
Process Variables(Eval(col_names)),
Spec Limits Dialog("No (skip columns with no spec limits)"),
Moving Range Method(Average of Moving Ranges),
Overall Sigma Summary Report(1),
Goal Plot(0),
Capability Index Plot(0),
Capability Box Plots(0),
Process Performance Plot(0),
Order By("Overall Sigma Ppk Ascending"),
By(:Wafer ID in lot ID),
Invisible
);
dt << Clear Select;
dt_wafer = (Report(pc[1]) << top parent)[Outline Box("Process Capability")][Outline Box("Overall Sigma Capability Summary Report")][Table Box(1)] << Make Combined Data Table;
pc << close window;
Write();
Sie müssen zunächst versuchen, das Diagramm selbst zu erstellen. Ich würde vorschlagen, dass Sie die „Referenz“-Ppk-Werte mit Ihren „Daten“ verknüpfen und diese als zusätzliche Liniendiagramme über allen anderen Diagrammen verwenden.
Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?@jthi Danke. Ich verwende JMP 16.2. Ich erhalte Folgendes, wenn ich versuche, mit Ihrem Skript eine kombinierte Datentabelle zu erstellen (bei mir ist es dasselbe)

Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?Ich habe keinen Zugriff mehr auf JMP16, also müssen Sie das selbst herausfinden oder jemand anderes muss sich einschalten. Wenn ich mich richtig erinnere, erstellt JMP16 keine Liste von Objekten, wenn Sie „By“ verwenden, sondern ein Objekt . Von dort aus müssen Sie das richtige Tabellenfeld finden (wählen Sie das erste mit den richtigen Informationen aus) und Sie sollten in der Lage sein, „<< Make Combined Data Table“ dorthin zu senden.
Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?Wird dieser Weg funktionieren?
(pc << XPath( "//OutlineBox[text()='Process Capability']//TableBox" ))[1]
<< Make Combined Data Table;
Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?@jthi Danke.
@Mark_Bailey Das funktioniert
dt_wafer = Report( pc[1] )[Outline Box( "Overall Sigma Capability Summary Report" )][Table Box( 1 )] <<MAKE combined="" data="https://community.jmp.com/" table=""></MAKE>
Next I would like to produce a chart similar to the one below (or even better with Parameters in the Page option of Graph Builder) with the overall Ppk calculated (in table Capability Report) from the first part of the script as horizontal dashed line on y-axis for each parameter. I do not know how to get y-axis values from one table and use it on a chart produced from a different table so need some help on the JSL here.
<SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><span class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><img src="https://us.v-cdn.net/6038925/uploads/images/66723i4C71FBE8A07B4359/Neo_0-1722527733886.png" width="721" height="351" role="button" title="Neo_0-1722527733886.png" alt="Neo_0-1722527733886.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN>
Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?Verknüpfen Sie die Werte aus den Referenzdaten. Benennen Sie zunächst die Spalte „Ppk“ um, z. B. in „Ppk Ref“, verwenden Sie dann „Update“ und gleichen Sie mit „Process“ ab.

Erstellen Sie dann das Diagramm und fügen Sie der Y-Achse zwei Spalten hinzu: Ppk und Ppk ref. Deaktivieren Sie Ppk ref von Punkten und Ppk von Linie

Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?@jthi Danke. Das funktioniert. Und zum Schluss: Wie zeige ich den Ppk-Ref-Wert für jeden Prozess auf der Y-Achse neben der horizontalen Linie an?
Und wie kann ich den Titel der Y-Achse für alle Diagramme über JSL in einen gemeinsamen Titel ändern (z. B. „Fähigkeit“)?
Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?Bei neueren JMP-Versionen ist das ganz einfach: Sie können einfach die Beschriftung für die Zeile aktivieren (ich bin nicht sicher, ob dies bereits in JMP16 vorhanden war):


Wenn das in JMP16 nicht vorhanden ist, würde ich Referenzzeilen verwenden und die Aktualisierung von Referenz-Ppk aus der anderen Tabelle überspringen (sie stattdessen in einem assoziativen Array speichern und das beim Festlegen der Referenzwerte verwenden).
Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?@jthi Ja, danke. Habe die Einstellung zum Aktivieren der Beschriftung in meinem JMP 16 gefunden.
Meine zweite Frage: Wie kann ich den Titel der Y-Achse für alle Diagramme (über „Seite“) über JSL in einen gemeinsamen Titel (z. B. „Fähigkeit“) ändern?
Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?Ich würde XPath verwenden und versuchen, korrekte Referenzen zu finden. Dies funktioniert möglicherweise nicht in allen Fällen und erfordert möglicherweise einige Anpassungen
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(528, 2954),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Page(:age)),
Elements(Points(X, Y, Legend(15)), Smoother(X, Y, Legend(16)))
);
tebs = Report(gb) << XPath("//TextEditBox");
tebs[4::N Items(tebs)::2] << Set Text("Capability");Betreff: Wie erhält man Ppk pro Parameter und Cpk pro Wafer pro Parameter nach der Ausreißerfilterung?@jthi . Danke. Ich habe mich stattdessen für Wrap entschieden, was für das, wofür ich das Diagramm brauche, funktioniert. In diesem Fall muss ich mich nur um eine Y-Achse kümmern, die ich in JSL handhaben kann.