Re : Dépistage des valeurs aberrantes avec les tableaux de bord Jmp - comment ?Avez-vous vérifié que vos supports sont là où ils devraient être?


Re : Dépistage des valeurs aberrantes avec les tableaux de bord Jmp - comment ?@jthi , droite.
j'ai corrigé le code
... et ajouté des captures d'écran à quoi ressemblent les listes d'extraterrestres sur mon système pour les différents cas.
Re : Dépistage des valeurs aberrantes avec les tableaux de bord Jmp - comment ?En fonction de ce que vous souhaitez faire à la fin, vous avez quelques solutions de contournement possibles :
- Ajoutez une ligne "vide" avec :alien = 1 (toutes les autres valeurs manquantes à l'exception de l'extraterrestre étant 1)
- Créez un filtre personnalisé à l'aide de la zone de liste (ou autre chose) et vous pourrez ensuite avoir votre propre logique et vos propres options
- Utilisez une sorte de filtre inverse si personne n'est trouvé
- Utiliser une vue différente si personne n'est trouvé
- Ne masquez pas le filtre de données pour rendre plus évident ce qui est filtré (ou non filtré dans ce cas)
Re : Dépistage des valeurs aberrantes avec les tableaux de bord Jmp - comment ?Quelques idées pourquoi l'approche via Où() n'est pas dynamique
L'utilisation de Where() pour filtrer l'analyse crée une nouvelle table de données privées liées :
un sous-ensemble privé de la table de données est généré
Re : Dépistage des valeurs aberrantes avec les tableaux de bord Jmp - comment ?Est-ce une solution de contournement pour montrer à l'utilisateur qu'il y a un problème dans Jmp - je veux que l'utilisateur travaille avec Jmp sans voir les problèmes 
Concernant les autres contournements :
Je n'aime pas réinventer la roue (créer mon propre filtre de données) - juste pour empêcher Jmp de "faire quelque chose de mal".
Reste donc l'option n°1 :
ajoutez des lignes factices à la table de données de sorte que le filtre de données ne soit pas effacé en ne trouvant aucune ligne correspondante.
avec quelques inconvénients désagréables : les lignes factices doivent être "supprimées" manuellement partout ailleurs...
- Numéro de colonne (if(:dummy_row, ., :alien), ...);
- Générateur de graphes (..., Where(Ismissing(:dummy_row));
- dfRows = myDataFilter << Obtenir les lignes filtrées ;
NRowsAfterDummyScreening=NItems(Loc(-dt[dfRows,"dummy"]+1));
Et cela fonctionnera tant que l'utilisateur n'activera pas
Inclure manquant pour les colonnes de regroupement ( 1 ).
Pour les futures versions de Jmp, j'espère qu'il y aura une option pour empêcher le filtre de données de se réinitialiser lorsqu'aucune correspondance n'est trouvée. Voici le souhait :
Filtre de données local : option pour s'adapter aux données actuelles
Re : Dépistage des valeurs aberrantes avec les tableaux de bord Jmp - comment ?J'ai trouvé un moyen de résoudre le problème avec le
Include missing for grouping columns( 1 )
Utiliser un filtre de données avec extraterrestre = 1 et factice = 0 - et en plus set Compter les lignes exclues(1) [le défaut].
Ensuite, le filtre de données ne remarquera pas que pour de nombreux groupes d'âge, il n'y a pas de lignes avec alien=1 et dummy=0.
Comme il ne le remarque pas, il ne réinitialise pas la sélection 
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "dummy", Nominal );
dt << New Column( "alien", Nominal );
For( myAge = 12, myAge <= 17, myAge++,
dt << add rows( {:name = "xxx", :age = myAge, :dummy = 1, :alien = 1} )
);
:alien[12]=1;
:sex[12]="";
:alien[39]=1;
New Window( "Outlier Screening",
Data Filter Context Box(
H List Box(
dt << Data Filter(
Local,
Add Filter( columns( :age ), Where( :age == 13 ), Display( :age, N Items( 6 ) ) )
),
dt << Tabulate(
Show Control Panel( 0 ),
Include missing for grouping columns( 1 ),
Add Table(Row Table( Grouping Columns( :name, :sex ) ) ),
Local Data Filter(
Close Outline( 1 ),
Mode( Show( 0 ) ),
//Count Excluded Rows( 0 ),
Add Filter( columns( :dummy, :alien ), Where( Is Missing( :dummy ) ), Where( :alien == 1 ) )
)
)
)
)
);
NB : Cette solution échouera si un jour il n'y a pas un seul extraterrestre dans l'ensemble des données.
Pour ce cas...
- on pourrait cacher un extraterrestre supplémentaire avec dummy = 0 dans un groupe d'âge factice ("-99")
... et veillez à ce que personne ne compte les extraterrestres non factices pour toute la classe - ou : divisez le filtre de données en deux :
alors les deux obtiennent suffisamment de lignes correspondantes pour ne pas être réinitialisés.
Voir plus...Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "dummy", Nominal );
dt << New Column( "alien", Nominal );
For( myAge = 12, myAge <= 17, myAge++,
dt << add rows( {:name = "xxx", :age = myAge, :dummy = 1, :alien = 1} )
);
:sex[12] = "";
New Window( "Outlier Screening with worarounds",
Data Filter Context Box(
H List Box(
dt << Data Filter( Local, Add Filter( columns( :age ), Where( :age == 13 ), Display( :age, N Items( 6 ) ) ) ),
Data Filter Context Box(
H List Box(
dt << Data Filter( Local, Add Filter( columns( :dummy ), Where( Is Missing( :dummy ) ), Display( :age, N Items( 6 ) ) ) ),
dt << Tabulate(
Show Control Panel( 0 ),
Include missing for grouping columns( 1 ),
Add Table( Row Table( Grouping Columns( :name, :sex ) ) ),
Local Data Filter( Close Outline( 1 ), Mode( Show( 0 ) ), Add Filter( columns( :alien ), Where( :alien == 1 ) ) )
)
)
)
)
)
);
Dépistage des valeurs aberrantes (:alien:) avec les tableaux de bord Jmp - comment ?Je veux faire un dépistage des valeurs aberrantes en listant les extraterrestres de ma classe.
Premier essai: Filtre de données locales
J'ai été assez choqué par tous les extraterrestres de Big Class !
... mais j'ai ensuite remarqué que le filtre de données était simplement ignoré (parce que le jour 1, il n'y avait pas d'extraterrestres dans la classe - et sans lignes correspondantes, le filtre de données est simplement réinitialisé - au lieu d'afficher 0 lignes correspondantes !!!).
Cela semble lié à Filtre de données : comment spécifier les limites :
Si une valeur est simplement utilisée dans le filtre de données mais pas dans la table de données, elle est supprimée du fichier de données.
Ce comportement interfère avec un autre comportement de Jmp : si la dernière valeur de filtre est désélectionnée, tous les lignes sont sélectionnées (au lieu d'aucune).
Ainsi, avec le actuel comportement des filtres de données, cette approche ne fonctionne pas 
Ensuite, j'ai utilisé un Où() clause pour restreindre le rapport tabulé.
Malheureusement, si un jour il n'y a pas d'aliens dans la classe, la clause Where produit un message d'erreur - au lieu de restreindre l'ensemble de données à 0 lignes :
This Where-clause for data table 'Big Class' resulted in no rows: :alien == 1
Liste des "extraterrestres" pour les 4 cas :




Veuillez noter:
Pour le cas avec Où() , il y a un autre problème :
La sélection de ligne pour le rapport est statique.
Après que XX soit devenu non extraterrestre - il est toujours répertorié dans le rapport :

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "alien", nominal, set each value( 0 ) );
myDashboard = Function( {myTitle, withWhereClause},
New Window( myTitle,
<<SHOW menu=""> so many aliens ?!?! no, Data filter was ignored (filter is OK, see below)
myDashboard( "1) Data Filter, no alien", 0 );
// 2) Where Cause + no matching row --> error message instead of a report
myDashboard( "2) Where(), no alien", 1 );
dt << add rows( {name = "XX", alien = 1, sex = "M", age = 200} );
// 3) Data Filter + 1 alien
myDashboard( "3) Data filter, 1 alien", 0 ); // new test: --> filter OK --> works
myDashboard( "4) Where(), 1->0 aliens ...", 1 ); // Where Clause + matching row --> dashboard is created, but ...
// XX gets human -> Dashboard #4 stays the same :(
//dt[41, {"alien"}] = 0;
;</SHOW>
Fusion et nettoyage des donnéesExploration et visualisation des donnéesRe : Dépistage des valeurs aberrantes avec les tableaux de bord Jmp - comment ?
@jthi écrit:- Ne masquez pas le filtre de données pour rendre plus évident ce qui est filtré (ou non filtré dans ce cas)
?
Re : Dépistage des valeurs aberrantes avec les tableaux de bord Jmp - comment ?@hogi écrit:
NB : Cette solution échouera *)
... avec un résultat assez surprenant - il semble que ni l'en-tête ni le pied de page ni le filtre de données lui-même ne savent quoi que ce soit de la réinitialisation :

Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "dummy", Nominal );
dt << New Column( "alien", Nominal );
For( myAge = 12, myAge <= 17, myAge++,
dt << add rows( {:name = "xxx", :age = myAge, :dummy = 1, :alien = 1} )
);
:sex[12]="";
New Window( "Outlier Screening",
Data Filter Context Box(
H List Box(
dt << Data Filter(
Local,
Add Filter( columns( :age ), Where( :age == 13 ), Display( :age, N Items( 6 ) ) )
),
dt << Tabulate(
Show Control Panel( 0 ),
Include missing for grouping columns( 1 ),
Add Table(Row Table( Grouping Columns( :name, :sex ) ) ),
Local Data Filter(
Close Outline( 1 ),
Mode( Show( 0 ) ),
//Count Excluded Rows( 0 ),
Add Filter( columns( :dummy, :alien ), Where( Is Missing( :dummy ) ), Where( :alien == 1 ) )
)
)
)
)
);
Re : Dépistage des valeurs aberrantes avec les tableaux de bord Jmp - comment ?J'ai préparé ce script pour des discussions internes sur le dépistage des valeurs aberrantes dans Jmp.
Il montre la plupart des aspects et peut être utilisé comme point de départ pour le développement ultérieur de solutions de contournement ...
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "dummy", Nominal );
dt << New Column( "alien", Nominal );
:alien[12] = 1;
:sex[12] = "";
:alien[39] = 1;
New Window( "alien screeing",
<<SHOW menu=""></SHOW>
Re : Dépistage des valeurs aberrantes avec les tableaux de bord Jmp - comment ?Merci @hogi - cela ressemble définitivement à un bogue que nous corrigerons pour une future version.
Re : Dépistage des valeurs aberrantes avec les tableaux de bord Jmp - comment ?@danschikore
Cette vidéo donne un indice sur ce qui ne va pas :
Le tableau de bord commence avec une mauvaise liste dans Tabuler - Le filtre de données est limité aux "aliens", mais dans la liste il y a beaucoup d'entrées avec alien=missing.
Pour supprimer les mauvaises entrées, l'utilisateur doit modifier la sélection dans le filtre de données "interne". (première partie de la vidéo). (*)
D'autre part (deuxième partie), concernant le filtre de données dans la boîte contextuelle du filtre de données - dès que l'utilisateur y modifie la sélection, le contenu de Tabuler est réinitialisé et les paramètres du filtre de données "interne" sont ignorés
... jusqu'à ce que l'utilisateur le corrige à nouveau via (*)
Ticket d'assistance : TS-00046650
Re : Dépistage des valeurs aberrantes avec les tableaux de bord Jmp - comment ?merci 
Donc, après tout, je suis revenu à @jthi la première suggestion de :
@jthi écrit:
- Ajoutez une ligne "vide" avec :alien = 1 ( toutes les autres valeurs manquantes sauf pour l'extraterrestre 1)
Juste une seule ligne vide avec alien=1, PAS de boucle for, PAS de colonne factice supplémentaire, etc.
Ensuite, l'extraterrestre factice apparaît par les entrées supplémentaires du filtre de données sex = missing, name=missing, age=missing
- Cela facilite la suppression de l'extraterrestre factice des rapports en sélectionnant un entrée (!= manquante) dans le filtre de données respectif.
- Le bénéfice par rapport à l'approche avec la colonne factice :
Dans le cas de "pas d'extraterrestres aujourd'hui", le dépistage des valeurs aberrantes ne sera PAS réinitialisé 
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "alien", Nominal );
dt << add rows( {:alien = 1} );
addAliens=0;
if(addAliens,
:alien[12]=1;
:alien[39]=1;
);
New Window( "Outlier Screening",
Data Filter Context Box(
H List Box(
dt << Data Filter(
Local,
Add Filter( columns( :age, :sex ), Where( :age == 13 ) )
),
dt << Tabulate(
Show Control Panel( 0 ),
Include missing for grouping columns( 1 ),
Add Table(Row Table( Grouping Columns( :name, :sex ) ) ),
Local Data Filter(
Add Filter( columns( :alien ), Where( :alien == 1 ) )
)
)
)
)
);
Re : Dépistage des valeurs aberrantes avec Jmp Dashboards - comment ?Avec Jmp 17, Data Filter a été introduit pour Tables/Summary .
Ici, le problème est beaucoup plus grave : à la fin, il y a tout simplement un résultat erroné : aucun filtre de données à gauche d'un tableau de bord affichant le paramètre "manifestement" erroné.2 bugs avec Tableaux/Résumé
Re : Dépistage des valeurs aberrantes avec Jmp Dashboards - comment ?Salut @danschikore ,
@danschikore a écrit :
Merci @hogi - cela ressemble définitivement à un bug que nous corrigerons pour une future version.
ce commentaire fait-il référence au cas particulier des deux filtres de données ou au cas général :
Un filtre de données oublie ses paramètres, si la valeur n'est pas dans la table de données actuelle ?
Re : Dépistage des valeurs aberrantes avec Jmp Dashboards - comment ?Salut @hogi - Je faisais référence au premier problème que vous montrez dans la vidéo, à savoir que Tabulate n'affichait pas le bon sous-ensemble lorsque le filtre externe change. Mais je ne vois pas votre script fourni ici. L'avez-vous envoyé via le support technique ?
-Et
Re : Dépistage des valeurs aberrantes avec Jmp Dashboards - comment ?La vidéo était basée sur le code 2 posts précédents, avec le même problème.
Dans Jmp18, c'est bien mieux. Il semble que ce problème pourrait être résolu.
En revanche, il reste toujours le problème des filtres de données qui « oublient » leurs paramètres :
https://community.jmp.com/t5/Discussions/Can-animation-of-this-difficulty-be-achieved-with-JSL/mp/755896#M93798
Ré: Dépistage des valeurs aberrantes avec les tableaux de bord Jmp - comment ?corrigé dans JMP19 :
Petits pièges dans JMP et JSL
Re: Détection des valeurs aberrantes avec Jmp Dashboards - comment ?Veuillez regarder
Utilisation des dernières améliorations apportées à JMP et JMP Pro @ 9 min / par @brady_brady
pour une démonstration en direct de la façon dont les valeurs forcées résolvent les problèmes liés aux filtres de données.
C'est tellement lisse et élégant maintenant 