Integration von GrubbsOutlierTest2 in eine multivariable DatentabelleZuvor habe ich mich mit einem komplexen Satz von Datentabellen beschäftigt, die mit SQL-Skripts verbunden wurden. Mit der Hilfe dieser Community ist es mir gelungen, ein "anwendungsbasiertes" Skript zu erstellen, das Diagramme und Verteilungen basierend auf vom Benutzer ausgewählten Bedingungen erstellt.
Der letzte Teil der Probleme befasst sich mit diesen lästigen Ausreißern. Wie üblich liegt mein Problem darin, die Testbedingungen zu durchlaufen, die die Ausreißer identifizieren, und sie dann aus dem Datensatz zu entfernen. Ich verstehe, dass das Entfernen dieser Teile riskant sein kann, aber aufgrund unserer komplexen Tests sind unsere Teile eng verteilt oder fallen katastrophal aus. Ich versuche zu implizieren, wenn g> g0 die Ausreißer sucht und löscht.
Beigefügt: 3 Teilmengen aus der Haupttabelle und der Haupttabelle.
ich habe das gefunden FADEN Das könnte man in einer einzigen Spalte machen, aber wie kann man alles durchlaufen?
Ich habe einige Skripte, die einige dieser Bedingungen durchlaufen, aber ich kann nicht die richtige Kombination herausfinden.
Nochmals vielen Dank für die Hilfe.
Betreff: Integration von GrubbsOutlierTest2 in eine multivariable DatentabelleUpdate: Ich habe es geschafft, GrubbsOutlier zum Arbeiten zu bewegen. Ich kann eine Testbedingung annehmen und bekommen, was ich brauche. Ich habe eine For-Schleife genommen, um zwei Testbedingungen zu erfassen, die jedoch hängen bleiben.
Sie können dieses Skript gegen die Beispieldaten _ 1 Wafer (test_3) .jmp ausführen und die Ausgabe sehen, nach der ich suche. Ich würde mich über jede Hilfe beim Hinzufügen des 2. Trmode und sogar, soweit dies bei einem Datensatz mit mehreren Wafern, als Beispieldaten _ 6 Wafer (Test_3)
Nachdem dies behoben ist, werde ich versuchen, eine If (g> g0) -Lok () auszuführen und sie dann aus dem Datensatz zu löschen.
Danke dir
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>
Betreff: Integration von GrubbsOutlierTest2 in eine multivariable DatentabelleJa, Sir, aber ich würde das gerne in einer automatisierten Form verwenden, die das g> g0 kalkuliert. Mit dieser Berechnung für jeden Test ermittelt By: channel die Ausreißer und schließt sie dann aus dem Datensatz aus, anstatt sie manuell auszuführen.
Betreff: Integration von GrubbsOutlierTest2 in eine multivariable DatentabelleDas Skript für den Ausreißertest der Grubb kann eine Gruppierungsvariable in der Analyserolle "Nach" verwenden.
Betreff: Integration von GrubbsOutlierTest2 in eine multivariable DatentabelleIch entschuldige mich dafür, dass ich das nicht klar kommuniziert habe. test_1 enthält 3 verschiedene set_id {7000,7100,7200}.
set_id 7000 hat 1 Kanal (Schalten) + 2 Versorgungen = 2 Testausgänge
set_id 7100 hat 16 Kanäle + 2 Versorgungen = 32 Testausgänge
set_id 7200 hat 16 Kanäle + 2 Versorgungen = 32 Testausgänge
Gesamt = 66
Ich bin mir selbst vorausgegangen und habe vergessen, dass set_id: 7000 nur 2 Bedingungen ist. alle 3 Tests = 105
Ich habe darüber nachgedacht und muss den ursprünglichen Beitrag neu schreiben. Ich denke, es wird einfacher sein, jeden der Tests zu unterteilen (_1, _2, _3) und dann zu tun, was ich mit den Distributionen tun muss. Die Haupttabelle ist gut für meine Diagrammdarstellungen. Die Untersätze werden die Tests und Testbedingungen sein, bei denen wir ...
Betreff: Integration von GrubbsOutlierTest2 in eine multivariable DatentabelleKonzentrieren wir uns auf Ihren Tisch # 1 unten und nur noch 'test_1'. Ich denke, Sie sagen, dass Sie jede der 3 * 2 * 16 = 96 'Loop-Bedingungen' betrachten wollen, um eine Gruppe zu definieren und Ausreißer innerhalb dieser Gruppen zu suchen. Ist das richtig, bitte? Aber die beigefügte Tabelle zeigt, dass # 1 105 solcher Gruppen hat, nicht 96?