En 2017, @Kevin_Anderson envió una solicitud para agregar una funcionalidad para calcular las funciones de medias robustas y desviación estándar en JSL y el editor de fórmulas .
En 2022, @jthi presentó una versión ampliada del deseo:
Agregar funciones estadísticas de normalización y robustas (y funciones matriciales)
con el comentario:
@jthi escribió: La mayoría de estas funciones podrían implementarse fácilmente utilizando las funciones estadísticas existentes, pero preferiría que fueran funcionalidades normales de JMP (¿quizás una implementación nativa sería más rápida ?). En mi opinión, son funciones muy útiles y potentes (al igual que todas las demás funciones de Columnas Estadísticas).
Otra función para determinar un estimador robusto para la variación de valores:
MAD: Desviación absoluta mediana.
https://en.wikipedia.org/wiki/Median_absolute_deviation

que se puede determinar mediante (*):
- calcular la mediana() de los valores
- Calcular la diferencia entre los valores y la mediana.
- Retirar los letreros
- calcular la mediana
Si desea calcular el MAD para una columna, puede utilizar la plataforma Tablas/resumen :

Con frecuencia, los usuarios desean calcular el MAD para grupos individuales.
Pero lamentablemente, no existe una función Col MAD (valores, agrupación) en JSL, todavía no .
Por otro lado, es muy fácil seguir los pasos en (*) y calcular MAD "manualmente" a través de JSL:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
t0=hptime();
New Column( "MAD",
Formula( Col Median( Abs( :height - Col Median( :height, :sex ) ), :sex ) )
);
dt << run formulas();
show((hptime()-t0)/1000000)
Pero espera, la columna Mediana dentro de la columna Mediana parece aterradora, ¿qué pasa si JMP calcula los valores una y otra vez con cada fila()?
Vamos a comprobar si este es el caso, aumentando el tamaño de la tabla de datos (6,4 millones de filas):
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
For Each( {i}, {1, 2},
dts = Repeat( {dt}, 400 );
dt = dt << Concatenate( dts, );
);
Con una tabla de datos más grande, el cálculo tarda varios minutos (JMP18.2.1).
Un truco sencillo:
Divide el cálculo en 2 cálculos:
- Primero, calcula una columna con los valores medianos agrupados.
- luego calcula MAD
Otro truco:
- ¿Esperar a la próxima versión de JMP?
¿Hay más trucos?
@hogi escribió:
Otro truco:
- ¿Esperar a la próxima versión de JMP?
Acabo de probarlo con la versión EA de JMP19: ¡una mejora significativa!
-> solo unos segundos en lugar de varios minutos
maravilloso : )