Come trovare tutti i test per lo screening di un'unitàSono abbastanza nuovo in JMP e JSL e attualmente sto lavorando allo screening di un'unità in un set di dati molto ampio. Il mio obiettivo è ottenere una tabella di output contenente un nome di ogni test in cui l'unità (definita dal suo ECID) ha uno z-score maggiore di 3 (o qualche altro valore che posso scegliere). Questi z-score devono essere basati sulle rispettive distribuzioni di unità di passaggio di ciascun test. C'è una funzionalità JMP per questo o uno script che è stato creato per fare qualcosa in questo senso. Di seguito è riportato il mio pseudocodice molto ampio per uno script.
Pseudocodice:
Richiede un set di dati sufficientemente grande per avere una distribuzione normale per diversi test (minimo 30 unità valide)
Sottoimposta la tabella dei dati di base nelle sole unità bin 1
Calcola la media e la deviazione standard per ogni test utilizzando solo unità di passaggio
Calcola il punteggio z in relazione alla media e alla deviazione std di ciascun test
Crea una tabella di output con tutti i test e i punteggi superiori a 3
AnaliticaTabella datiSceneggiaturafinestreRe: Come trovare tutti i test per lo screening di un'unitàEcco uno script di esempio, che crea i punteggi Z e identifica i valori maggiori di 3. È nella direzione di ciò che vuoi?
Names Default To Here( 1 );
// Open Data Table: Probe.jmp
// → Data Table( "Probe" )
dt = Open( "$SAMPLE_DATA/Process Measurements.jmp" );
// Create a Bin column
dt << New Column( "Bin",
modeling type( nominal ),
set each value( If( Random Uniform( 0, 1 ) <= .8, 1, Random Integer( 2, 7 ) ) )
);
// Get column names for all continuous columns
colNames = dt << get column names( string, continuous );
For( i = 1, i <= N Items( colNames ), i++,
mean = .;
stddev = .;
// Create the Z scores for each test
dt << New Column( colNames[i] || " Z Score",
formula(
If( Row() == 1,
Mean = Col Mean( If( :Bin == 1, As Column( dt, colNames[i] ), . ) );
Stddev = Col Std Dev( If( :Bin == 1, As Column( dt, colNames[i] ), . ) );
);
Abs( :Process 1 - Mean ) / Stddev;
)
);
Column( dt, N Cols( dt ) ) << delete formula;
targetRows = dt << get rows where( As Column( dt, N Cols( dt ) ) >= 3 );
Try( As Column( dt, N Cols( dt ) ) << color cells( "red", As List( targetRows ) ) );
);Re: Come trovare tutti i test per lo screening di un'unitàQuesto è un ottimo punto di partenza. Grazie per l'aiuto. Vorrei adottare questo script in modo da poterlo eseguire solo su unità con un ECID specifico all'interno di un set di dati di grandi dimensioni. Se dovessi eseguire questo script su ogni datapoint/die, sfortunatamente andrò in crash JMP. Come consiglieresti di adottare questo script per consentirlo?
Re: Come trovare tutti i test per lo screening di un'unitàVorrei semplicemente creare un sottoinsieme della tabella di dati originale ed eseguire l'analisi su di esso.
dt = current data table();
ECIDsToTest = { "413257", "56739",...........};
dt << select where( contains( ECIDsToTest, :ECID ) );
dtToTest = dt << subset( selected columns( 0 ), selected rows( 1 ) );
// Run the Z Score analysis on the new subsetRe: Come trovare tutti i test per lo screening di un'unitàCiao Jim,
Non sono stato chiaro con il mio problema precedente. Vorrei trovare un punteggio z di una singola unità per ogni test basato sulla distribuzione dell'intero set di dati. Per questo motivo, non posso semplicemente sottoimpostare gli ECID degni di nota. In secondo luogo, non sono sicuro che lo script originale funzioni correttamente. Dopo un'ulteriore revisione, ho notato che molti dei punteggi z sono improbabili. Ci sono alcuni punteggi z che si avvicinano alle tre cifre.

Re: Come trovare tutti i test per lo screening di un'unitàFornisci una tabella di dati di input di esempio e un esempio di ciò che ti aspetti per il tuo output.