Re: Detección de valores atípicos con Jmp Dashboards: ¿cómo?¿Te has asegurado de que tus brackets estén donde deberían estar?


Re: Detección de valores atípicos con Jmp Dashboards: ¿cómo?@jthi , bien.
corregí el código
... y agregué capturas de pantalla de cómo se ven las listas de extraterrestres en mi sistema para los diferentes casos.
Re: Detección de valores atípicos con Jmp Dashboards: ¿cómo?Dependiendo de lo que desee hacer al final, tiene algunas soluciones posibles:
- Agregue una fila "en blanco" con: alienígena = 1 (faltan todos los demás valores, excepto que el alienígena es 1)
- Cree un filtro personalizado usando el cuadro de lista (o algo más) y luego puede tener su propia lógica y opciones
- Use algún tipo de filtro inverso si no se encuentran
- Use una vista diferente si no se encuentra ninguna
- No oculte el filtro de datos para que sea más obvio lo que se filtra (o lo que no se filtra en este caso)
Re: Detección de valores atípicos con Jmp Dashboards: ¿cómo?Algunas ideas de por qué el enfoque a través de Dónde() no es dinámico
El uso de Where() para filtrar el análisis crea una nueva tabla de datos privados vinculados :
se genera un subconjunto privado de la tabla de datos
Re: Detección de valores atípicos con Jmp Dashboards: ¿cómo?¿Es una solución para mostrar al usuario que hay un problema en Jmp? Quiero que el usuario trabaje con Jmp sin ver problemas 
En cuanto a las otras soluciones:
No me gusta reinventar la rueda (crear mi propio filtro de datos), solo para evitar que Jmp "haga algo mal".
Entonces lo que queda es la opción # 1:
agregue filas ficticias a la tabla de datos de modo que el filtro de datos no se borre al no encontrar ninguna fila coincidente.
con algunas desventajas desagradables: las filas ficticias deben "eliminarse" manualmente en cualquier otro lugar ...
- Número de columna (if(:dummy_row, ., :alien), ...);
- Generador de gráficos (..., Where(Ismissing(:dummy_row));
- dfRows = myDataFilter << Obtener filas filtradas;
NRowsAfterDummyScreening=NItems(Loc(-dt[dfRows,"dummy"]+1));
Y solo funcionará mientras el usuario no active
Incluir faltantes para agrupar columnas ( 1 ).
Para futuras versiones de Jmp, espero que haya una opción para evitar que el filtro de datos se reinicie cuando no se encuentren coincidencias. Aquí está el deseo:
Filtro de datos locales: opción para ajustar a los datos actuales
Re: Detección de valores atípicos con Jmp Dashboards: ¿cómo?Encontré una manera de abordar el problema con el
Include missing for grouping columns( 1 )
Utilice un filtro de datos con extranjero = 1 y ficticio = 0 - y además conjunto Contar filas excluidas(1) [el valor por defecto].
Entonces el filtro de datos no notará que para muchos grupos de edad no hay filas con alien=1 y dummy=0.
Como no se da cuenta, no restablece la selección 
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: esta solución fallará si un día no hay un solo extraterrestre en todo el conjunto de datos.
Para este caso ...
- uno podría ocultar un extraterrestre adicional con dummy = 0 en un grupo de edad ficticio ("-99")
... y tenga cuidado de que nadie cuente los extraterrestres no ficticios para toda la clase - o: dividir el filtro de datos en dos:
luego, ambos obtienen suficientes filas coincidentes para que no se reinicien.
Ver más...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 ) ) )
)
)
)
)
)
);
Detección de valores atípicos (:alien:) con Jmp Dashboards: ¿cómo?Quiero hacer una selección de valores atípicos enumerando a los extraterrestres en mi clase.
Primer intento: Filtro de datos locales
¡Estaba bastante sorprendido con todos los alienígenas en Big Class!
... pero luego noté que el filtro de datos simplemente se ignoró (porque el día 1 no había extraterrestres en la clase, y sin filas coincidentes, el filtro de datos simplemente se restableció, ¡en lugar de mostrar 0 filas coincidentes!).
Esto parece estar relacionado con Filtro de datos: cómo especificar los límites :
Si un valor solo se usa en el filtro de datos pero no en la tabla de datos, se elimina del archivador de datos.
Este comportamiento interfiere con otro comportamiento de Jmp: si se anula la selección del último valor de filtro, todo las filas se seleccionan (en lugar de ninguna).
Entonces, con el actual comportamiento de los filtros de datos, este enfoque no funciona 
A continuación, usé un Dónde() cláusula para restringir el informe de tabulación.
Desafortunadamente, si un día no hay extraterrestres en la clase, la cláusula Where genera un mensaje de error, en lugar de restringir el conjunto de datos a 0 filas:
This Where-clause for data table 'Big Class' resulted in no rows: :alien == 1
Lista de "extranjeros" para los 4 casos:




Tenga en cuenta:
Para el caso con Dónde() , hay otro problema:
La selección de filas para el informe es estática.
Después de que XX cambió a no extranjero, todavía figura en el informe:

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>
Fusión y limpieza de datosExploración y visualización de datosRe: Detección de valores atípicos con Jmp Dashboards: ¿cómo?
@jthi escribió:- No oculte el filtro de datos para que sea más obvio lo que se filtra (o lo que no se filtra en este caso)
?
Re: Detección de valores atípicos con Jmp Dashboards: ¿cómo?@hogi escribió:
NB: Esta solución fallará *)
... con un resultado bastante sorprendente: parece que ni el encabezado ni el pie de página ni el filtro de datos saben nada sobre el reinicio:

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: Detección de valores atípicos con Jmp Dashboards: ¿cómo?Preparé este guión para debates internos sobre la detección de valores atípicos en Jmp.
Muestra la mayoría de los aspectos y se puede utilizar como punto de partida para un mayor desarrollo de soluciones alternativas...
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: Detección de valores atípicos con Jmp Dashboards: ¿cómo?Gracias @hogi - esto definitivamente parece un error que corregiremos para una versión futura.
Re: Detección de valores atípicos con Jmp Dashboards: ¿cómo?@danschikore
Este video da una pista de lo que va mal:
El tablero comienza con una lista incorrecta en Tabulate: el filtro de datos está restringido a "extranjeros", pero en la lista hay muchas entradas con extraterrestres = faltantes.
Para eliminar las entradas incorrectas, el usuario debe cambiar la selección en el filtro de datos "interno". (primera parte del video). (*)
Por otro lado (segunda parte), con respecto al filtro de datos en el cuadro de contexto del filtro de datos: tan pronto como el usuario cambia la selección allí, el contenido de Tabulate se restablece y la configuración del filtro de datos "interno" se ignora.
... hasta que el usuario lo vuelva a corregir mediante (*)
Ticket de soporte: TS-00046650
Re: Detección de valores atípicos con Jmp Dashboards: ¿cómo?gracias 
Entonces, después de todo, volví a @jthi La primera sugerencia de:
@jthi escribió:
- Agregue una fila "en blanco" con :alien = 1 ( faltan todos los demás valores excepto por el ser alienígena 1)
Solo una sola línea en blanco con alien = 1, NO for loop, NO columna ficticia adicional, etc.
Luego, el extraterrestre ficticio aparece junto a las entradas adicionales del filtro de datos sexo = falta, nombre = falta, edad = falta
- Esto facilita la eliminación del extraterrestre ficticio de los informes seleccionando un entrada (!= faltante) en el filtro de datos respectivo.
- El beneficio en comparación con el enfoque con la columna ficticia:
En el caso de "hoy no hay extraterrestres", la detección de valores atípicos NO se restablecerá 
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: Detección de valores atípicos con Jmp Dashboards: ¿cómo?Con Jmp 17, se introdujo el filtro de datos para tablas/resumen .
Aquí el problema es mucho más grave: al final, simplemente aparece el resultado incorrecto: no hay ningún filtro de datos a la izquierda del panel que muestre la configuración "obviamente" incorrecta.2 errores con Tablas/Resumen
Re: Detección de valores atípicos con Jmp Dashboards: ¿cómo?Hola @danschikore ,
@danschikore escribió:
Gracias @hogi : esto definitivamente parece un error que solucionaremos en una versión futura.
¿Este comentario se refiere al caso especial con los dos filtros de datos o al caso general?
¿Un filtro de datos olvida su configuración si el valor no está en la tabla de datos actual?
Re: Detección de valores atípicos con Jmp Dashboards: ¿cómo?Hola @hogi : me refería al primer problema que muestras en el video, que Tabulate no mostraba el subconjunto correcto cuando cambia el filtro externo. Pero no veo el script para esto proporcionado aquí. ¿Lo enviaste a través del soporte técnico?
-Y
Re: Detección de valores atípicos con Jmp Dashboards: ¿cómo?El video se basó en el código de 2 publicaciones anteriores, con el mismo problema.
En Jmp18 se ve mucho mejor. Parece que este problema podría solucionarse.
Por otro lado, todavía existe el problema de los filtros de datos que "olvidan" su configuración:
https://community.jmp.com/t5/Discussions/Can-animation-of-this-difficulty-be-achieved-with-JSL/mp/755896#M93798
Re: Detección de valores atípicos con Jmp Dashboards: ¿cómo?corregido en JMP19:
Pequeñas trampas en JMP y JSL
Re: Detección de valores atípicos con Jmp Dashboards: ¿cómo?Por favor mira
Uso de las últimas mejoras de JMP y JMP Pro @ 9 min / por @brady_brady
para una demostración en vivo de cómo los valores forzados solucionan los problemas con los filtros de datos.
Tan suave y elegante ahora 