Integrazione di GrubbsOutlierTest2 in una tabella di dati multivariabilePrecedentemente, mi occupo di un insieme complesso di tabelle di dati unite utilizzando script SQL. Con l'aiuto di questa community sono riuscito a creare uno script basato su "applicazione" che crea diagrammi e distribuzioni in base alle condizioni selezionate dall'utente.
L'ultima parte dei problemi riguarda quei fastidiosi valori anomali. Come al solito, il mio problema sta nel ripetere le condizioni di test identificando i valori anomali e rimuovendoli dal set di dati. Capisco che rimuoverli possa essere rischioso, ma dati i nostri test complessi, le nostre parti sono in una distribuzione ristretta o falliscono catastroficamente. Sto provando ad implorare se g> g0 vai a trovare i valori anomali e cancellali.
Allegato: 3 sottoinsiemi dalla tabella principale e dalla tabella principale.
ho trovato questo FILO quello potrebbe farlo in una singola colonna ma, ancora una volta, come si fa ad attraversare tutto?
Ho alcuni script che eseguono il ciclo di alcune di queste condizioni ma non riesco a capire la combinazione corretta.
Ancora grazie per l'aiuto.
Ri: Integrazione di GrubbsOutlierTest2 in una tabella di dati multivariabileAggiornamento: sono riuscito a far funzionare GrubbsOutlier. Posso prendere una condizione di prova e ottenere ciò di cui ho bisogno. Ho afferrato un ciclo For per catturare due condizioni di prova, tuttavia, si blocca.
È possibile eseguire questo script con i dati di esempio _ 1 wafer (test_3) .jmp e vedere l'output che sto cercando .. Gradirei qualsiasi aiuto con l'aggiunta del 2 ° Trmode e persino fino a farlo su un set di dati con più dati di esempio di wafer _ 6 wafer (test_3) .jmp
Dopo che questo è stato risolto, proverò a fare una If (g> g0) Loc () quindi cancellarli dal set di dati.
Grazie
dt = Current Data Table();
dtsum = dt << Summary(
Group( :channel, :trmode ),
Interquartile Range( :Output ),
Freq( "None" ),
Weight( "None" ),
// invisible
);
Current Data Table( dt );<BR />
// <INSERT for="" loop="" here="">
dist = dt << Distribution(
Y( Column( "Output" )),
By( Column( "channel" ) ),
Normal Quantille Plot( 1 ),
Fit Distribution(
Normal(
Goodness of FIt( 1 )
)
),<BR />// Added a For() Loop located at the botton of the screen, the script hangs up<BR />// Where( dt :trmode == mode )
Where( dt :trmode == "Tx" )<BR /><BR /> );
distr = dist << Report;
bCol = Column( "channel ");
Summarize( group = By( bCol ));
yy = Column( "Output" ) << Get As Matrix;
exRows = dt << Get Excluded Rows();
yy[exRows] = .;
For( i = 1, i <= N Items( group ), i++,
groupName = Trim( Word( 2, distr[i][OutlineBox(1)] << Get Title, "=" ) );
getRows = dt << Get Rows Where( bCol[] == groupName );
yVal = yy[getRows];
yVal[Loc( Is Missing( yVal ) )] = [];
n = N Row( yVal );
a = 0.05;
t0Sqr = t Quantile( 1 - a/(2*n), n-2 )^2;
g = Maximum( Abs( yVal - Mean( yVal ) ) ) / Std Dev( yVal );
g0 = ((n-1)/Sqrt(n)) * Sqrt( t0Sqr / (n - 2 + t0Sqr) );
distr[i][Outline Box(2)] << Append(
Outline Box( "Grubbs' Outlier Test",
Table Box(
String Col Box( "Statistic", {"G", "G("||Char(a)||")"} ),
Number Col Box( "Estimate", Matrix( {g, g0} ) )
),
Text Box(
If( g>g0,
"Outlier detected",
"No outlier detected"
)
)
)
);
);
// For Loop I was trying to use
// For( i = 1, i <= N Rows( dtsum ), i++,
// mode = dtsum:trmode[i];
// < Insert Script From Above >
// );
</INSERT>
Ri: Integrazione di GrubbsOutlierTest2 in una tabella di dati multivariabileSì signore, tuttavia mi piacerebbe usarlo in una forma automatizzata che cacola la g> g0. Quindi con quel calcolo per ogni test di: channel individua i valori anomali e quindi li esclude dal set di dati anziché eseguirlo manualmente.
Ri: Integrazione di GrubbsOutlierTest2 in una tabella di dati multivariabileLo script per il test di prova di Grubb può utilizzare una variabile di raggruppamento nel ruolo Per analisi.
Ri: Integrazione di GrubbsOutlierTest2 in una tabella di dati multivariabileMi scuso per non averlo comunicato chiaramente. test_1 include 3 set_id diversi {7000,7100,7200}.
set_id 7000 ha 1 canale (commutazione) + 2 alimentazioni = 2 uscite di test
set_id 7100 ha 16 canali + 2 materiali di consumo = 32 uscite di test
set_id 7200 ha 16 canali + 2 materiali di consumo = 32 uscite di test
Totale = 66
Mi sono anticipato e ho dimenticato che set_id: 7000 è solo 2 condizioni. tutti e 3 i test = 105
Ho anche pensato e ho bisogno di riscrivere il post originale. Penso che sarà più facile sottoporre a serie ciascuno dei test (_1, _2, _3) e poi fare ciò che devo fare con le distriubtions. La tabella principale è buona per i miei grafici. I sottoinsiemi saranno i test e le condizioni di test che verificheremo a ...
Ri: Integrazione di GrubbsOutlierTest2 in una tabella di dati multivariabileConcentriamoci sul tuo tavolo # 1 di seguito, e solo su "test_1" all'interno di questo. Penso che tu stia dicendo che vuoi considerare ognuna delle 3 * 2 * 16 = 96 'condizioni di loop' per definire un gruppo, e cercare i valori anomali all'interno di ciascuno di questi gruppi. È corretto, per favore? Ma la tabella allegata mostra che # 1 ha 105 di questi gruppi, non 96?