Comment sélectionner une colonne pour la valeur aberrante de la plage quantile à l'aide de jslBonjour l'équipe JMP,
Je prévois d'effectuer une analyse automatisée des valeurs aberrantes à l'aide d'Explore Outliers. L'objectif de cette automatisation est d'obtenir un tableau soigné et facile à visualiser pour afficher uniquement les éléments de ligne et les éléments de colonne avec des valeurs aberrantes (cela nécessite de filtrer les colonnes et les lignes non aberrantes). Prenez le traitement de l'eau comme exemple ci-dessous pour débarrasser l'élément de ligne sans valeur aberrante.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Water Treatment.jmp" );
obj = dt << Explore Outliers(
Y( dt << Get Column Group( "Sensor Measurements" ) )
);
obj << Show only columns with outliers(1);
obj << Tail Quantile( 0.1 );
obj << Q(3);
obj << Quantile Range Outliers;
obj << ColorCells(dt << Get Column Group( "Sensor Measurements" ));
obj << SelectRows(dt << Get Column Group( "Sensor Measurements" ));
obj << ExcludeRows(dt << Get Column Group( "Sensor Measurements" ));
dt << select where( Excluded(Row State()) != 1 );
dt << Delete rows;
Question : comment filtrer les colonnes non aberrantes à l'aide du code JSL ?

Salutations,
XH Faible
Automatisation et scriptsles fenêtresRe : Comment sélectionner une colonne pour la valeur aberrante de la plage quantile à l'aide de JSLSuper!! Ça fonctionne maintenant.
Merci Jim.

Re : Comment sélectionner une colonne pour la valeur aberrante de la plage quantile à l'aide de JSLPar défaut, le résultat de la plateforme Explorer les valeurs aberrantes dans JMP 15 affiche uniquement les colonnes comportant des valeurs aberrantes.Le script que j'ai fourni supposait que toutes les colonnes spécifiées pour l'analyse étaient affichées.J'ai modifié le code pour forcer l'affichage de toutes les colonnes afin que la "allEvaluatedList" soit correctement renseignée.J'ai testé le code dans JMP 15 et il fonctionne maintenant.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Water Treatment.jmp" );
obj = dt << Explore Outliers( Y( dt << Get Column Group( "Sensor Measurements" ) ) );
obj << Show only columns with outliers( 1 );
obj << Tail Quantile( 0.1 );
obj << Q( 3 );
obj << Quantile Range Outliers;
obj << ColorCells( dt << Get Column Group( "Sensor Measurements" ) );
obj << SelectRows( dt << Get Column Group( "Sensor Measurements" ) );
obj << ExcludeRows( dt << Get Column Group( "Sensor Measurements" ) );
dt << select where( Excluded( Row State() ) != 1 );
dt << Delete rows;
obj << Show only columns with outliers( 0 );
allEvaluatedList = Report( obj )["Quantile Range Outliers", String Col Box( "Column" )] << get;
obj << Show only columns with outliers( 1 );
colList = Report( obj )["Quantile Range Outliers", String Col Box( "Column" )] << get;
For( i=1, i <= N Items(allEvaluatedList), i++, col=allEvaluatedList[i];
If( Contains( colList, col ) == 0 ,
dt << delete columns( col )
)
);
Re : Comment sélectionner une colonne pour la valeur aberrante de la plage quantile à l'aide de JSLSalut Jim,
Merci pour le code.
J'ai essayé le code ci-dessus, mon JMP15 ne prenait pas en charge For Each(). J'apporte quelques modifications à la boucle For Each to For.
Mais toujours impossible de supprimer la colonne non aberrante.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Water Treatment.jmp" );
obj = dt << Explore Outliers( Y( dt << Get Column Group( "Sensor Measurements" ) ) );
obj << Show only columns with outliers( 1 );
obj << Tail Quantile( 0.1 );
obj << Q( 3 );
obj << Quantile Range Outliers;
obj << ColorCells( dt << Get Column Group( "Sensor Measurements" ) );
obj << SelectRows( dt << Get Column Group( "Sensor Measurements" ) );
obj << ExcludeRows( dt << Get Column Group( "Sensor Measurements" ) );
dt << select where( Excluded( Row State() ) != 1 );
dt << Delete rows;
allEvaluatedList = Report( obj )["Quantile Range Outliers", String Col Box( "Column" )] << get;
obj << Show only columns with outliers( 1 );
colList = Report( obj )["Quantile Range Outliers", String Col Box( "Column" )] << get;
For( i=1, i <= N Items(allEvaluatedList), i++, col=allEvaluatedList[i];
If( Contains( colList, col ) == 0 ,
dt << delete columns( col )
)
);
Colonne non aberrante toujours présente dans le tableau de données ci-dessous.

Est-ce que j'ai raté quelque chose ?
Re : Comment sélectionner une colonne pour la valeur aberrante de la plage quantile à l'aide de JSLJ'ai ajouté quelques lignes de code au bas de votre script, qui suppriment les colonnes qui n'ont pas de valeurs aberrantes.

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Water Treatment.jmp" );
obj = dt << Explore Outliers( Y( dt << Get Column Group( "Sensor Measurements" ) ) );
obj << Show only columns with outliers( 1 );
obj << Tail Quantile( 0.1 );
obj << Q( 3 );
obj << Quantile Range Outliers;
obj << ColorCells( dt << Get Column Group( "Sensor Measurements" ) );
obj << SelectRows( dt << Get Column Group( "Sensor Measurements" ) );
obj << ExcludeRows( dt << Get Column Group( "Sensor Measurements" ) );
dt << select where( Excluded( Row State() ) != 1 );
dt << Delete rows;
allEvaluatedList = Report( obj )["Quantile Range Outliers", String Col Box( "Column" )] << get;
obj << Show only columns with outliers( 1 );
colList = Report( obj )["Quantile Range Outliers", String Col Box( "Column" )] << get;
For Each( {col, i}, allEvaluatedList,
If( Contains( colList, col ) == 0,
dt << delete columns( col )
)
);