Ciao.
Utilizzo l'analisi della capacità di processo per generare grafici per i miei report.
Una delle tabelle riassuntive è per la "Non conformità", che può anche essere utilizzata per rappresentare il tasso di fallimento
Vorrei generare una tabella che mostri direttamente i valori di rendimento, anziché doverli interpretare dalla tabella Non-Performance. Esiste un modo per ottenere questo risultato direttamente tramite le opzioni predefinite disponibili in JMP?
Creare una colonna formula che calcoli le rese per i parametri di interesse.
Se (parametro nella specifica) allora yield = 1 altrimenti yield = 0
Quindi creare una tabella riepilogativa che calcoli la media delle colonne di rendimento.
Grazie. Speravo di evitare di dover creare manualmente una colonna di rendimento, ma sembra che sia l'unico modo. Non è proprio quello che cercavo, ma è semplice e diretto.
Farlo nella tabella dati è l'opzione più semplice, ma se sei disposto a usare un po' di JSL potresti manipolare la casella della tabella di non conformità per includere anche Yield % (potrebbe essere un po' strano avere Yield % nella non conformità) o aggiungere outlinebox+tablebox separati per la conformità (il posizionamento può essere fastidioso)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
obj = dt << Process Capability(
Process Variables(:PNP1),
Individual Detail Reports(1),
{:PNP1 << Process Capability Analysis(Nonconformance(1))}
);
tb = Report(obj)["Nonconformance", TableBox(1)];
obsperc = tb[Number Col Box("Observed %")] << get as matrix;
yieldperc = J(3, 1, 100) - obsperc;
(Report(obj)["Nonconformance", TableBox(1)]) << Append(
Number Col Box("Yield %", yieldperc, << Set Format("Fixed Dec", 9, 4))
);

In realtà questa domanda viene posta spesso, quindi sarà utile a molti.
Lo script richiederà di selezionare le colonne che hanno una proprietà "spec". Pertanto, è necessario assicurarsi che la proprietà "spec" sia impostata prima di eseguirlo. Viene inoltre creato un grafico che riassume i tassi di "in-spec" per ogni colonna, suddivisi in base alle variabili di raggruppamento.
Names Default To Here( 1 );
dt = Current Data Table();
dlg = Column Dialog(
spec_cols = ColList( "Spec Columns", MinCol( 1 ), MaxCol( 1000 ) ),
group_cols = ColList( "Group Columns", MinCol( 1 ), MaxCol( 20 ) )
);
If( dlg["Button"] != 1,
Beep();
Throw();
);
col_list = dlg["spec_cols"];
group_list = dlg["group_cols"];
for (i=1, i <= nitems(col_list), i++,
col_name = col_list[i] << Get Name;
specproperty = col_list[i] << Get Property( "Spec limits" );
if( (contains(char(specproperty), "LSL") > 0) & (contains(char(specproperty), "USL") > 0),
Eval(Eval Expr(
dt << New Column( col_name || " In Spec", Numeric, "Continuous", Format( "Best", 12 ),
Formula(if((Expr(col_list[i]) > Expr(specproperty["LSL"])) & (Expr(col_list[i]) < Expr(specproperty["USL"])), 1, 0 )))
));
);
if( (contains(char(specproperty), "LSL") == 0) & (contains(char(specproperty), "USL") > 0),
Eval(Eval Expr(
dt << New Column( col_name || " In Spec", Numeric, "Continuous", Format( "Best", 12 ),
Formula(if(Expr(col_list[i]) < Expr(specproperty["USL"]), 1, 0 )))
));
);
if( (contains(char(specproperty), "LSL") > 0) & (contains(char(specproperty), "USL") == 0),
Eval(Eval Expr(
dt << New Column( col_name || " In Spec", Numeric, "Continuous", Format( "Best", 12 ),
Formula(if(Expr(col_list[i]) > Expr(specproperty["LSL"]), 1, 0 )))
));
);
);
cols = dt << Get Column Names();
inspec_cols = {};
for (i=1, i <= nitems(cols), i++,
if (Contains(cols[i], "In Spec"),
Insert Into(inspec_cols, cols[i])
);
);
dt << Group Columns("In Spec Cols", inspec_cols);
dt_inspec_stack = dt << Stack(
columns( Column Group( "In Spec Cols" ) ),
Source Label Column( "Spec Columns" ),
Stacked Data Column( "In Spec" ),
Drop All Other Columns( 1 ),
"Non-stacked columns"n( Keep( group_list ) ),
Output Table("Stack of In Spec Columns")
);
summary_group = {};
for (i=1, i <= nitems(group_list), i++,
col_name = group_list[i] << Get Name;
Insert Into(summary_group, col_name);
);
Insert Into(summary_group,"Spec Columns");
dt_inspec_summary = dt_inspec_stack << Summary(
Group( summary_group ),
Mean( :In Spec ),
Freq( "None" ),
Weight( "None" ),
output table name(
"Summary of In Spec Columns"
)
);
dt_inspec_summary << New Column("CI", Numeric, "Continuous", Format("Best",12),
Formula(Root( (:"Mean(In Spec)"n * (1 - :"Mean(In Spec)"n)) / :N Rows ) * 1.96)
);
dt_inspec_summary << Graph Builder(
Size( 1280, 720 ),
Show Control Panel( 0 ),
Variables(
X( :Spec Columns ),
Y( :"Mean(In Spec)"n ),
Group X( :Reactor ),
Interval( :CI )
),
Elements(
Points( X, Y, Legend( 5 ), Error Interval( "Custom Interval" ) ),
Line( X, Y, Legend( 6 ) )
),
SendToReport(
Dispatch( {}, "Mean(In Spec)", ScaleBox,
{Format( "Percent", 12, 0 ), Min( 0 ), Inc( 0.2 ), Minor Ticks( 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
),
Dispatch( {}, "Graph Builder", FrameBox, {Reference Line Order( 3 )} ),
Dispatch( {}, "Graph Builder", FrameBox( 2 ), {Reference Line Order( 3 )} ),
Dispatch( {}, "Graph Builder", FrameBox( 3 ), {Reference Line Order( 3 )} )
)
);
Ciao,
Sono tutte ottime risposte, ma volevo anche far sapere a tutti che a partire da JMP 19 è disponibile una nuova opzione nella piattaforma Process Capability e nell'analisi di capacità in-process all'interno della piattaforma Distribution che consente di salvare automaticamente le colonne nella tabella dati con le formule degli indicatori In-Spec. Consultate la documentazione di JMP qui: Salvataggio delle formule degli indicatori In-Spec.
Puoi trovare l'opzione nella piattaforma Process Capability nel menu del triangolo rosso, sotto le opzioni del sottomenu Salva.

Nel report di analisi della capacità del processo all'interno della piattaforma di distribuzione, è possibile trovare questa opzione nel menu del triangolo rosso Capacità del processo.

Una volta ottenute le formule dell'indicatore In Spec, sarà facile analizzarle e manipolarle. Spero che questo articolo ti sia utile.
Laura
Grazie per averlo fatto notare @Laura_Lancaster . Sarebbe molto utile avere questa opzione disponibile anche in Process Screening e avere una colonna che indichi il tasso di conformità complessivo, tenendo conto di tutte le colonne degli indicatori di conformità.