Ri: Screening anomalo con Jmp Dashboards - come?Ti sei assicurato che le tue staffe siano dove dovrebbero essere?


Ri: Screening dei valori anomali con Jmp Dashboards - come?@jthi , Giusto.
Ho corretto il codice
... e ho aggiunto screenshot dell'aspetto degli elenchi di alieni sul mio sistema per i diversi casi.
Ri: Screening dei valori anomali con Jmp Dashboards - come?A seconda di ciò che desideri fare, alla fine hai alcune possibili soluzioni alternative:
- Aggiungi una riga "vuota" con :alien = 1 (tutti gli altri valori mancano tranne che l'alieno è 1)
- Crea un filtro personalizzato utilizzando la casella di riepilogo (o qualcos'altro) e quindi puoi avere la tua logica e le tue opzioni
- Usa una sorta di filtro inverso se non ne trovi nessuno
- Usa una vista diversa se non ne trovi nessuna
- Non nascondere il filtro dati per rendere più evidente ciò che viene filtrato (o non filtrato in questo caso)
Ri: Screening dei valori anomali con Jmp Dashboards - come?Alcuni spunti sul perché l'approccio via Dove() non è dinamico
L'utilizzo di Where() per filtrare l'analisi crea una nuova tabella di dati privati collegata :
viene generato un sottoinsieme privato della tabella dati
Ri: Screening dei valori anomali con Jmp Dashboards - come?È una soluzione alternativa per mostrare all'utente che c'è un problema in Jmp: voglio che l'utente lavori con Jmp senza riscontrare problemi 
Per quanto riguarda le altre soluzioni alternative:
Non mi piace reinventare la ruota (creare il mio filtro dati) - solo per impedire a Jmp di "fare qualcosa di sbagliato".
Quindi ciò che rimane è l'opzione n. 1:
aggiungere righe fittizie alla tabella dati in modo tale che il filtro dati non venga cancellato se non trova alcuna riga corrispondente.
con alcuni spiacevoli svantaggi: le righe fittizie devono essere "rimosse" manualmente ovunque...
- Col Numero (if(:dummy_row, ., :alien), ...);
- Generatore di grafici (..., Where(Imissing(:dummy_row));
- dfRows = myDataFilter << Ottieni righe filtrate;
NRowsAfterDummyScreening=NItems(Loc(-dt[dfRows,"dummy"]+1));
E funzionerà solo finché l'utente non si attiva
Includi elementi mancanti per raggruppare le colonne ( 1 ).
Per le versioni future di Jmp, spero che ci sarà un'opzione per impedire il ripristino del filtro dati quando non vengono trovate corrispondenze. Ecco l'augurio:
Filtro dati locali: opzione per adeguarsi ai dati correnti
Ri: Screening dei valori anomali con Jmp Dashboards - come?Ho trovato un modo per affrontare il problema con il
Include missing for grouping columns( 1 )
Usa un filtro dati con alieno = 1 E manichino = 0 - e inoltre impostato Conteggio righe escluse(1) [il predefinito].
Quindi il filtro dati non noterà che per molti gruppi di età non ci sono righe con alien=1 e dummy=0.
Dal momento che non se ne accorge, non ripristina la selezione 
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: Questa soluzione fallirà se un giorno non ci sarà un solo alieno nell'intero set di dati.
Per questo caso...
- si potrebbe nascondere un alieno aggiuntivo con fittizio = 0 in una fascia di età fittizia ("-99")
... e fai attenzione che nessuno conti gli alieni non fittizi per l'intera classe - oppure: dividere il filtro dati in due:
quindi entrambi ottengono un numero sufficiente di righe corrispondenti in modo che non vengano ripristinati.
Visualizza altro...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 ) ) )
)
)
)
)
)
);
Screening outlier (:alien:) con Jmp Dashboards - come?Voglio fare qualche screening Outlier elencando gli alieni nella mia classe.
Primo tentativo: Filtro dati locali
Sono rimasto piuttosto scioccato da tutti gli alieni in Big Class!
... ma poi ho notato che il filtro dati è stato semplicemente ignorato (perché il giorno 1 non c'erano alieni nella classe - e senza righe corrispondenti, il filtro dati è stato semplicemente ripristinato - invece di mostrare 0 righe corrispondenti !!!).
Questo sembra essere correlato a Filtro dati: come specificare i limiti :
Se un valore viene utilizzato solo nel filtro dati ma non nella tabella dati, viene rimosso dal filer dati.
Questo comportamento interferisce con un altro comportamento di Jmp: se l'ultimo valore del filtro è deselezionato, Tutto le righe vengono selezionate (invece di nessuna).
Quindi, con il attuale comportamento dei filtri dati, questo approccio non funziona 
Successivamente, ho usato a Dove() clausola per restringere il Report Tabulato.
Sfortunatamente, se un giorno non ci sono alieni nella classe, la clausola Where produce un messaggio di errore, invece di limitare il set di dati a 0 righe:
This Where-clause for data table 'Big Class' resulted in no rows: :alien == 1
Elenco degli "alieni" per i 4 casi:




Notare che:
Per il caso con Dove() , c'è un altro problema:
La selezione delle righe per il report è statica.
Dopo che XX è diventato non alieno, è ancora elencato nel rapporto:

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>
Miscelazione e pulizia dei datiEsplorazione e visualizzazione dei datiRi: Screening dei valori anomali con Jmp Dashboards - come?
@jthi ha scritto:- Non nascondere il filtro dati per rendere più evidente ciò che viene filtrato (o non filtrato in questo caso)
?
Ri: Screening dei valori anomali con Jmp Dashboards - come?@hogi ha scritto:
NB: Questa soluzione fallirà *)
... con un risultato abbastanza sorprendente - sembra che né l'intestazione né il piè di pagina né lo stesso filtro dati sappiano nulla del ripristino:

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 ) )
)
)
)
)
);
Ri: Screening anomalo con Jmp Dashboards - come?Ho preparato questo script per discussioni interne su Outlier Screening in Jmp.
Mostra la maggior parte degli aspetti e può essere utilizzato come punto di partenza per l'ulteriore sviluppo di soluzioni alternative ...
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>
Ri: Screening dei valori anomali con Jmp Dashboards - come?Grazie @hogi - questo sembra decisamente un bug che risolveremo per una versione futura.
Ri: Screening dei valori anomali con Jmp Dashboards - come?@danschikore
Questo video dà un suggerimento su cosa non va:
Il Dashboard inizia con un elenco errato in Tabulate - Il filtro dati è limitato agli "alieni", ma nell'elenco sono presenti molte voci con alien=missing.
Per rimuovere le voci errate, l'utente deve modificare la selezione nel filtro dati "interno". (prima parte del video). (*)
D'altra parte (seconda parte), per quanto riguarda il filtro dati nella casella di contesto del filtro dati - non appena l'utente modifica la selezione lì, il contenuto di Tabula viene ripristinato e le impostazioni del filtro dati "interno" vengono ignorate
... finché l'utente non lo corregge nuovamente tramite (*)
Ticket di supporto: TS-00046650
Ri: Screening dei valori anomali con Jmp Dashboards - come?Grazie 
Quindi, dopotutto, sono tornato a @jthi primo suggerimento di:
@jthi ha scritto:
- Aggiungi una riga "vuota" con :alien = 1 ( tutti gli altri valori mancanti ad eccezione dell'essere alieno 1)
Solo una singola riga vuota con alien=1, NO for loop, NESSUNA colonna fittizia aggiuntiva ecc.
Quindi l'alieno fittizio viene visualizzato dalle voci aggiuntive del filtro dati sesso = mancante, nome=mancante, età=mancante
- Ciò semplifica la rimozione dell'alieno fittizio dai rapporti selezionando UN voce (!= mancante) nel rispettivo filtro dati.
- Il vantaggio rispetto all'approccio con la colonna fittizia:
Nel caso di "niente alieni oggi", lo screening dei valori anomali NON verrà ripristinato 
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 ) )
)
)
)
)
);
Ri: Screening dei valori anomali con Jmp Dashboards: come?Con Jmp 17 è stato introdotto il filtro dati per Tabelle/Riepilogo .
Qui il problema è molto più grave: alla fine, c'è solo il risultato sbagliato: nessun filtro dati sulla sinistra di una dashboard che mostra l'impostazione "ovviamente" sbagliata.2 bug con tabelle/riepilogo
Ri: Screening dei valori anomali con Jmp Dashboards: come?Ciao @danschikore ,
@danschikore ha scritto:
Grazie @hogi : sembra sicuramente un bug che risolveremo per una versione futura.
questo commento si riferisce al caso speciale con i due filtri dati o al caso generale:
Un filtro dati dimentica le sue impostazioni se il valore non è nella tabella dati corrente?
Ri: Screening dei valori anomali con Jmp Dashboards: come?Ciao @hogi , mi riferivo al primo problema che mostri nel video, ovvero che Tabulate non mostrava il sottoinsieme corretto quando cambia il filtro esterno. Ma non vedo lo script fornito qui: lo hai inviato tramite il supporto tecnico?
-E
Ri: Screening dei valori anomali con Jmp Dashboards: come?Il video era basato sul codice di 2 post precedenti, con lo stesso problema.
In Jmp18 sembra molto meglio. Sembra che questo problema possa essere risolto.
D'altra parte, c'è ancora il problema dei filtri dati che "dimenticano" le loro impostazioni:
https://community.jmp.com/t5/Discussions/Can-animation-of-this-difficulty-be-achieved-with-JSL/mp/755896#M93798
Re: Screening dei valori anomali con Jmp Dashboard: come?corretto in JMP19:
Piccole trappole in Jmp e JSL
Re: Screening dei valori anomali con Jmp Dashboard: come?Per favore guarda
Utilizzo degli ultimi miglioramenti di JMP e JMP Pro @ 9 min / di @brady_brady
per una dimostrazione dal vivo di come i valori forzati risolvono i problemi con i filtri dati.
Così liscio ed elegante ora : )