Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?Haben Sie sichergestellt, dass Ihre Klammern dort sind, wo sie sein sollten?


Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?@jthi , Rechts.
Ich habe den Code korrigiert
... und Screenshots hinzugefügt, wie die Listen der Aliens auf meinem System für die verschiedenen Fälle aussehen.
Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?Je nachdem, was Sie letztendlich tun möchten, gibt es einige mögliche Problemumgehungen:
- Fügen Sie eine „leere“ Zeile mit :alien = 1 hinzu (alle anderen Werte fehlen, außer dass der Alien 1 ist)
- Erstellen Sie einen benutzerdefinierten Filter mit dem Listenfeld (oder etwas anderem) und Sie können dann Ihre eigene Logik und Optionen verwenden
- Verwenden Sie eine Art Umkehrfilter, wenn keine gefunden werden
- Verwenden Sie eine andere Ansicht, wenn keine gefunden werden
- Blenden Sie den Datenfilter nicht aus, um deutlicher zu machen, was gefiltert wird (oder in diesem Fall nicht gefiltert wird).
Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?Einige Einblicke, warum der Ansatz über Wo() ist nicht dynamisch
Durch die Verwendung von Where() zum Herunterfiltern der Analyse wird eine neue verknüpfte private Datentabelle erstellt :
Es wird eine private Teilmenge der Datentabelle generiert
Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?Ist es eine Problemumgehung, um dem Benutzer anzuzeigen, dass es ein Problem in Jmp gibt? Ich möchte, dass der Benutzer mit Jmp arbeitet, ohne Probleme zu sehen 
Zu den anderen Problemumgehungen:
Ich mag es nicht, das Rad neu zu erfinden (meinen eigenen Datenfilter zu erstellen) – nur um zu verhindern, dass Jmp „etwas falsch macht“.
Was also bleibt, ist Option Nr. 1:
Fügen Sie der Datentabelle Dummy-Zeilen hinzu, damit der Datenfilter nicht gelöscht wird, wenn keine passenden Zeilen gefunden werden.
mit einigen bösen Nachteilen: Die Dummy-Zeilen müssen überall manuell „entfernt“ werden ...
- Spaltennummer (if(:dummy_row, ., :alien), ...);
- Graph Builder (..., Where(Ismissing(:dummy_row));
- dfRows = myDataFilter << Gefilterte Zeilen abrufen;
NRowsAfterDummyScreening=NItems(Loc(-dt[dfRows,"dummy"]+1));
Und es funktioniert nur, solange der Benutzer es nicht aktiviert
Fehlende Spalten zum Gruppieren einschließen (1).
Ich hoffe, dass es für zukünftige Versionen von Jmp eine Option geben wird, die verhindert, dass der Datenfilter zurückgesetzt wird, wenn keine Übereinstimmungen gefunden werden. Hier ist der Wunsch:
Lokaler Datenfilter: Option zur Anpassung an aktuelle Daten
Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?Ich habe einen Weg gefunden, das Problem damit anzugehen
Include missing for grouping columns( 1 )
Verwenden Sie einen Datenfilter mit Außerirdischer = 1 Und Dummy = 0 - und zusätzlich eingestellt Anzahl ausgeschlossener Zeilen(1) [der Standard].
Dann bemerkt der Datenfilter nicht, dass es für viele Altersgruppen keine Zeilen mit „alien=1“ und „dummy=0“ gibt.
Da es dies nicht bemerkt, wird die Auswahl nicht zurückgesetzt 
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 ) )
)
)
)
)
);
Hinweis: Diese Lösung schlägt fehl, wenn eines Tages kein einziger Außerirdischer im gesamten Datensatz enthalten ist.
Für diesen Fall ...
- man könnte einen weiteren Alien mit Dummy = 0 in einer Dummy-Altersgruppe ("-99") verstecken
... und achten Sie darauf, dass niemand die Nicht-Dummy-Aliens der ganzen Klasse mitzählt - oder: Teilen Sie den Datenfilter in zwei Teile:
dann erhalten beide genügend übereinstimmende Zeilen, sodass sie nicht zurückgesetzt werden.
Mehr sehen...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 ) ) )
)
)
)
)
)
);
Ausreißer-Screening (:alien:) mit Jmp Dashboards – wie?Ich möchte eine Ausreißerprüfung durchführen, indem ich die Außerirdischen in meiner Klasse aufliste.
Erster Versuch: Lokaler Datenfilter
Ich war ziemlich schockiert über all die Außerirdischen in der Großen Klasse!
... aber dann ist mir aufgefallen, dass der Datenfilter einfach ignoriert wurde (weil es am ersten Tag keine Außerirdischen in der Klasse gab – und ohne passende Zeilen wird der Datenfilter einfach zurückgesetzt – anstatt 0 passende Zeilen anzuzeigen!!!).
Dies scheint damit zusammenzuhängen Datenfilter: So legen Sie die Grenzwerte fest :
Wenn ein Wert nur im Datenfilter, aber nicht in der Datentabelle verwendet wird, wird er aus dem Datenfilter entfernt.
Dieses Verhalten beeinträchtigt ein anderes Verhalten von Jmp: Wenn der letzte Filterwert abgewählt wird, alle Zeilen werden ausgewählt (statt keine).
Also, mit dem aktuell Verhalten von Datenfiltern, dieser Ansatz funktioniert nicht 
Als nächstes habe ich ein verwendet Wo() Klausel um den tabellarischen Bericht einzuschränken.
Wenn es eines Tages keine Aliens mehr in der Klasse gibt, erzeugt die Where-Klausel leider eine Fehlermeldung – anstatt den Datensatz auf 0 Zeilen zu beschränken:
This Where-clause for data table 'Big Class' resulted in no rows: :alien == 1
Liste der „Aliens“ für die 4 Fälle:




Bitte beachten Sie:
Für den Fall mit Wo() , es gibt noch ein anderes Problem:
Die Zeilenauswahl für den Bericht ist statisch.
Nachdem XX in „Nicht-Alien“ geändert wurde, wird er weiterhin im Bericht aufgeführt:

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>
Datenmischung und -bereinigungDatenexploration und -visualisierungBetreff: Ausreißer-Screening mit Jmp Dashboards – wie?
@jthi schrieb:- Blenden Sie den Datenfilter nicht aus, um deutlicher zu machen, was gefiltert wird (oder in diesem Fall nicht gefiltert wird).
?
Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?@hogi schrieb:
NB: Diese Lösung wird scheitern *)
... mit einem recht überraschenden Ergebnis – es scheint, dass weder Header noch Footer, noch der Datenfilter selbst etwas über das Zurücksetzen wissen:

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 ) )
)
)
)
)
);
Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?Ich habe dieses Skript für interne Diskussionen über Outlier Screening in Jmp vorbereitet.
Es zeigt die meisten Aspekte und kann als Ausgangspunkt für die weitere Entwicklung von Workarounds verwendet werden ...
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>
Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?Danke @hogi – Das sieht definitiv nach einem Fehler aus, den wir in einer zukünftigen Version beheben werden.
Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?@danschikore
Dieses Video gibt einen Hinweis, was schief läuft:
Das Dashboard startet mit einer falschen Liste in Tabulate – Der Datenfilter ist auf „Aliens“ beschränkt, aber in der Liste gibt es viele Einträge mit „alien=missing“.
Um die falschen Einträge zu entfernen, muss der Benutzer die Auswahl im „inneren“ Datenfilter ändern. (erster Teil des Videos). (*)
Andererseits (zweiter Teil) zum Datenfilter in der Datenfilter-Kontextbox: Sobald der Benutzer dort die Auswahl ändert, wird der Inhalt von Tabulate zurückgesetzt und die Einstellungen des „inneren“ Datenfilters werden ignoriert
... bis der Benutzer es erneut über (*) korrigiert
Support-Ticket: TS-00046650
Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?Danke 
Also kam ich schließlich zurück @jthi erster Vorschlag:
@jthi schrieb:
- „Leere“ Zeile hinzufügen mit :alien = 1 ( alle anderen Werte fehlen außer dem außerirdischen Wesen 1)
Nur eine einzelne Leerzeile mit „alien=1“, KEINE for-Schleife, KEINE zusätzliche Dummy-Spalte usw.
Dann erscheint der Dummy-Alien durch die zusätzlichen Datenfiltereinträge „Geschlecht = fehlt“, „Name = fehlt“, „Alter = fehlt“.
- Dies erleichtert das Entfernen des Dummy-Aliens aus den Berichten durch Auswahl ein Eintrag (!= fehlt) im jeweiligen Datenfilter.
- Der Vorteil gegenüber dem Ansatz mit der Dummy-Säule:
Im Falle „keine Aliens heute“ wird die Ausreißerprüfung NICHT zurückgesetzt 
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 ) )
)
)
)
)
);
Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?Mit Jmp 17 wurde der Datenfilter für Tabellen/Zusammenfassungen eingeführt.
Hier ist das Problem viel schwerwiegender: Am Ende steht einfach das falsche Ergebnis – kein Datenfilter auf der linken Seite eines Dashboards, der die „offensichtlich“ falsche Einstellung anzeigt.2 Fehler mit Tabellen/Zusammenfassung
Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?Hallo @danschikore ,
@danschikore schrieb:
Danke @hogi – das sieht definitiv nach einem Fehler aus, den wir für eine zukünftige Version beheben werden.
bezieht sich dieser Kommentar auf den Sonderfall mit den beiden Datenfiltern oder auf den allgemeinen Fall:
Ein Datenfilter vergisst seine Einstellungen, wenn der Wert nicht in der aktuellen Datentabelle vorhanden ist?
Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?Hallo @hogi – ich bezog mich auf das erste Problem, das Sie im Video zeigen, nämlich dass Tabulate nicht die richtige Teilmenge anzeigte, wenn sich der äußere Filter änderte. Aber ich sehe Ihr Skript dafür hier nicht – haben Sie es über den technischen Support gesendet?
-Und
Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?Das Video basierte auf dem Code 2 Posts zuvor und hatte dasselbe Problem.
In Jmp18 sieht es viel besser aus. Dieses Problem scheint behoben werden zu können.
Andererseits besteht immer noch das Problem mit Datenfiltern, die ihre Einstellungen „vergessen“:
https://community.jmp.com/t5/Discussions/Can-animation-of-this-difficulty-be-achieved-with-JSL/mp/755896#M93798
Betreff: Ausreißer-Screening mit Jmp Dashboards – wie?in JMP19 behoben:
Winzige Fallen in Jmp und JSL
Betreff: Ausreißererkennung mit JMP Dashboards – wie geht das?Bitte ansehen
Die neuesten Verbesserungen in JMP und JMP Pro im Überblick (9 Min.) / von @brady_brady
Sehen Sie sich eine Live-Demo an, wie erzwungene Werte die Probleme mit Datenfiltern beheben.
So geschmeidig und elegant jetzt : )