Intégration de GrubbsOutlierTest2 dans un tableau de données multivariableAuparavant, j’ai affaire à un ensemble complexe de tables de données jointes à l’aide de scripts SQL. Avec l'aide de cette communauté, j'ai réussi à créer un script basé sur une "application" qui crée des tracés et des distributions en fonction de conditions sélectionnées par l'utilisateur.
La dernière partie des problèmes concerne ces valeurs aberrantes. Comme d'habitude, mon problème réside dans la lecture en boucle des conditions de test identifiant les valeurs éloignées, puis en les supprimant de l'ensemble de données. Je comprends que les retirer peut être risqué, mais compte tenu de nos tests complexes, nos pièces sont mal réparties ou échouent de manière catastrophique. J'essaie d'implémenter si g> g0 trouve les valeurs éloignées et les supprime.
Attaché: 3 sous-ensembles de la table principale et de la table principale.
j'ai trouvé ça FIL cela pourrait le faire dans une seule colonne, mais encore une fois, comment peut-on tout parcourir?
J'ai plusieurs scripts qui répercutent certaines de ces conditions, mais je ne parviens pas à trouver la bonne combinaison.
Encore merci pour l'aide.
Re: Intégration de GrubbsOutlierTest2 dans une table de données multivariableMise à jour: j'ai réussi à obtenir GrubbsOutlier en quelque sorte. Je peux prendre une condition de test et obtenir ce dont j'ai besoin. J'ai attrapé une boucle For pour capturer deux conditions de test, cependant, elle se bloque.
Vous pouvez exécuter ce script sur les exemples de données _ 1 wafers (test_3) .jmp et voir le résultat recherché. Je vous serais reconnaissant de toute aide avec l'ajout du 2nd Trmode et même autant que pour le faire sur un jeu de données avec plusieurs plaquettes échantillon de données _ 6 plaquettes (test_3) .jmp
Une fois que cela est résolu, je vais essayer de faire un If (g> g0) Loc (), puis de les supprimer de l'ensemble de données.
Je vous remercie
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>
Re: Intégration de GrubbsOutlierTest2 dans une table de données multivariableOui monsieur, cependant je voudrais utiliser cela sous une forme automatisée qui calcule le g> g0. Ensuite, avec ce calcul pour chaque test, By: channel localise les valeurs éloignées, puis les exclut du jeu de données au lieu de le faire manuellement.
Re: Intégration de GrubbsOutlierTest2 dans une table de données multivariableLe script du test des valeurs aberrantes de Grubb peut utiliser une variable de regroupement dans le rôle d'analyse Par.
Re: Intégration de GrubbsOutlierTest2 dans une table de données multivariableJe m'excuse de ne pas avoir communiqué cela clairement. test_1 inclut 3 {7000,7100,7200} de set_id différents.
set_id 7000 a 1 canal (commutation) + 2 alimentations = 2 sorties de test
set_id 7100 a 16 canaux + 2 alimentations = 32 sorties de test
set_id 7200 a 16 canaux + 2 alimentations = 32 sorties de test
Total = 66
J'ai pris de l'avance et j'ai oublié que set_id: 7000 n'est que 2 conditions. tous les 3 tests = 105
J'ai également réfléchi et j'ai besoin de réécrire le message original. Je pense qu'il sera plus facile de sous-traiter chacun des tests (_1, _2, _3) et de faire ensuite ce que j'ai à faire avec les distributions. Le tableau principal est bon pour mes graphiques. Les sous-ensembles seront les tests et les conditions de test que nous sélectionnons à ...
Re: Intégration de GrubbsOutlierTest2 dans une table de données multivariableConcentrons-nous sur votre table N ° 1 ci-dessous, et juste 'test_1' dans cela. Je pense que vous dites que vous souhaitez considérer chacune des 3 * 2 * 16 = 96 'conditions de bouclage' pour définir un groupe et rechercher des valeurs aberrantes dans chacun de ces groupes. Est-ce correct, s'il vous plaît? Mais le tableau ci-joint montre que le n ° 1 compte 105 groupes de ce type, et non 96?