Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?Ho messo insieme il seguente JSL per filtrare prima i valori anomali nei dati e quindi ottenere il Ppk, ma noto che il mio script non è corretto poiché quando filtro i valori anomali escludendo tutte le righe, escludo i punti dati non anomali per altri processi parametri.
Per definire i valori anomali, il mio criterio preferito è che qualsiasi cosa al di fuori di Q1/Q3 +/- 1,5xIQR è un valore anomalo, che è quello che (credo) utilizzo di seguito.
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" );Posso colorare le celle anomale per parametro ma non so come escluderle per l'analisi delle capacità. Ho bisogno di aiuto qui.
In secondo luogo, per ciascun wafer in un lotto, vorrei calcolare il Cpk per ciascun parametro di processo dopo il filtraggio dei valori anomali , per ottenere un grafico dell'andamento del Cpk per wafer per ciascun parametro di processo. Come farlo tramite JSL (usando il set di dati di esempio che ho nel mio script)?
Automazione e scriptingfinestreRi: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?Per la prima parte (Ppk) della mia domanda, farei uno scambio
obj << Exclude Rows(ALL);
di
obj << Change to Missing(ALL);
Fai il lavoro?
Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?Poiché disponi di tabelle di grande formato, dovrai modificarle in mancanti (utilizzare codici valore mancanti o modificare dati) OPPURE impilare i dati per poter escludere righe.
Hai provato se << Cambia in mancante fa quello che stai cercando?

Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?@jthi Penso che ci siamo incrociati. La modifica a mancante mi dà Ppk negativo per alcuni parametri: è previsto?

Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?Crea una singola colonna con valori anomali per cui puoi calcolare il Ppk manualmente (e con JMP). Cambia i valori anomali in mancanti, ripeti i calcoli. Sono corretti?
Se prendo solo il primo parametro e controllo come appare

Direi che qualcuno dovrebbe in qualche modo reagire a questo. Puoi anche capire abbastanza facilmente perché ci sono valori di capacità negativi (la media è al di fuori delle specifiche).
Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?@jthi Grazie. La mia comprensione era che Ppk non può essere negativo mentre Cpk sì, quindi dubitavo del mio passaggio "Cambia in mancante". Controllerò la mia comprensione. Ancora una cosa prima di procedere alla seconda parte della mia domanda: sto applicando correttamente i criteri di filtraggio anomali (ovvero filtro esterno Q1/Q3 +/- 1,5xIQR )?
Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?La documentazione di JMP offre le migliori risposte a domande del genere, se riesci a trovare i posti corretti. A volte può essere abbastanza difficile.
In questo caso, molto probabilmente qui Modellazione predittiva e specializzata > Esplora valori anomali > Panoramica di Esplora valori anomali > Valori anomali dell'intervallo quantilico o qui Modellazione predittiva e specializzata > Esplora valori anomali > Report Esplora valori anomali > Report Intervallo valori anomali dei quantili

Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?@jthi Grazie, veniamo ora alla seconda parte della mia domanda.
Per ogni wafer del lotto, vorrei calcolare il Cpk per ciascun parametro di processodopo il filtraggio anomalo, per ottenere un grafico dell'andamento del Cpk per wafer per ciascun parametro di processo.
Quindi, questa non è la capacità di un parametro per tutti i wafer in una tabella dati ma la capacità del parametro per un wafer in un dato lotto.
Come farlo tramite JSL sullo stesso set di dati che ho qui?
Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?Il raggruppamento delle variabili non dovrebbe darti quella tabella utilizzando :lot_id, :wafer e/o :wafer in lot secondo necessità? E poi puoi creare un grafico da quella tabella
Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?@jthi Grazie. Se uso
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 />Viene visualizzata la finestra Esplora piattaforma valori anomali in cui ho a che fare con i wafer individualmente. Come posso quindi utilizzare
obj << Change to Missing(ALL);
passare al passaggio successivo, ovvero Analisi delle capacità per "ID wafer nell'ID lotto"?
Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?Penso che dovrebbe funzionare bene. Sei sicuro che ci siano valori anomali nei tuoi dati?
- Prendi un set di dati molto più piccolo (solo pochi ID wafer nell'ID lotto)
- Crea alcuni valori anomali in una colonna
- Esegui il tuo script
- Verifica che funzioni
- Ripetere con dati più grandi
Nota che ho cambiato il quantile di coda
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;Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?@jthi Grazie, ora ho utilizzato un set di dati più piccolo per l'analisi (JSL di seguito). Penso che non sia necessario filtrare i valori anomali su un ID wafer in base all'ID lotto poiché le celle anomali vengono rese mancanti in alcun modo. Ciò di cui ho bisogno è un'analisi delle capacità su un set di dati filtrati anomali.
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;
Lì voglio confrontare Ppk per parametro per l'intero set di dati rispetto alla capacità dello stesso parametro su un ID wafer in base all'ID lotto . A tal fine, ho messo insieme lo script seguente cercando di creare una tabella di dati combinata (posso farlo in modo interattivo) dalla seconda analisi di capacità.
Report( platform2)[Outline Box( "Process Capability" )][Outline Box( "Overall Sigma Capability Summary Report" )][Table Box( 1 )] <<
Make Combined Data Table;
platform2 << close window;
Infine, quello che voglio è un grafico di Capacità (asse y) e ID wafer in un ID lotto (asse x) generato dalla tabella dati combinata con i nomi dei parametri nella Pagina (nel Generatore di grafici). Inoltre, è necessario che il Ppk calcolato dalla prima analisi di capacità venga mostrato come una linea orizzontale per ciascun parametro. Potrei per favore avere qualche aiuto qui?
Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?Qual è il problema quando provi a creare la tabella dati combinata? Hai controllato cosa contiene Platform2?
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();
Devi prima provare a creare il grafico da solo, ti suggerirei di unire i valori Ppk di "riferimento" ai tuoi "dati" e di usarli come grafici a linee extra sopra qualsiasi altro grafico.
Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?@jthi Grazie. Sono su JMP 16.2. Ottengo quanto segue quando provo a ottenere una tabella dati combinata utilizzando il tuo script (ottengo lo stesso con il mio)

Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?Non ho più accesso a JMP16 quindi dovrai capirlo da solo o qualcun altro deve intervenire. Se ricordo bene, JMP16 non crea un elenco di oggetti quando usi By ma piuttosto un oggetto . Da lì devi trovare la casella della tabella corretta (scegli prima con le informazioni corrette) e dovresti essere in grado di inviare << Crea tabella dati combinata a quella.
Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?Funzionerà in questo modo?
(pc << XPath( "//OutlineBox[text()='Process Capability']//TableBox" ))[1]
<< Make Combined Data Table;
Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?@jthi Grazie.
@Mark_Bailey Funziona
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>
Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?Unisci i valori dai dati di riferimento. Per prima cosa rinominare la colonna "Ppk", ad esempio in "Ppk Ref", quindi utilizzare Aggiorna e abbinare con Process

Quindi crea il grafico e aggiungi due colonne all'asse Y: Ppk e Ppk ref. Disabilita Ppk ref dai punti e Ppk dalla linea

Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?@jthi Grazie. Funziona. Infine, come posso mostrare il valore Ppk Ref per ciascun processo sull'asse y adiacente alla linea orizzontale?
Inoltre, come modificare il titolo dell'asse Y per tutti i grafici in qualcosa di comune (dire "Capacità") tramite JSL?
Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?Con le versioni JMP più recenti è molto semplice, puoi semplicemente abilitare l'etichetta per la riga (non sono sicuro che fosse già in JMP16):


Se ciò non esiste in JMP16, utilizzerei le linee di riferimento e salterei l'aggiornamento dal riferimento Ppk dall'altra tabella (memorizzerei invece nell'array associativo e lo userei quando si impostano i valori di riferimento).
Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?@jthi Sì, grazie. Ho trovato l'impostazione dell'abilitazione dell'etichetta nel mio JMP 16.
La mia seconda domanda: come modificare il titolo dell'asse Y per tutti i grafici (tramite "Pagina") in qualcosa di comune (ad esempio "Capacità") tramite JSL?
Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?Vorrei andare con XPath e provare a trovare i riferimenti corretti. Questo potrebbe non funzionare in tutti i casi e potrebbe richiedere alcuni aggiustamenti
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");Ri: Come ottenere Ppk per parametro e Cpk per wafer per parametro dopo il filtraggio anomalo?@jthi . Grazie. Ho invece optato per Wrap che funziona per ciò per cui mi serve il grafico. In questo caso c'è solo un asse y di cui preoccuparsi e che posso gestire su JSL.