Nel 2017 @Kevin_Anderson ha presentato una richiesta per aggiungere una funzionalità che consentisse di calcolare le funzioni di media robusta e deviazione standard in JSL e nell'editor di formule .
Nel 2022 una versione estesa del desiderio è stata presentata da @jthi :
Aggiungi normalizzazione e funzioni statistiche robuste (e funzioni matriciali)
con il commento:
@jthi ha scritto: La maggior parte di queste funzioni potrebbe già essere implementata abbastanza facilmente utilizzando le funzioni statistiche esistenti, ma preferirei di gran lunga averle come funzionalità standard in JMP (un'implementazione nativa potrebbe anche essere più veloce ?). A mio parere, si tratta di funzioni molto utili e potenti (come del resto tutte le altre funzioni di Statistical Col).
Un'altra funzione per determinare uno stimatore robusto per la variazione dei valori:
MAD: Deviazione assoluta mediana.
https://en.wikipedia.org/wiki/Median_absolute_deviation

che può essere determinato tramite (*):
- calcola la mediana() dei valori
- calcolare la differenza tra i valori e la mediana
- rimuovere i cartelli
- calcolare la mediana
Se desideri calcolare il MAD per una colonna, puoi utilizzare la piattaforma Tabelle/riepiloghi :

Spesso gli utenti desiderano calcolare il MAD per singoli gruppi.
Ma sfortunatamente, in JSL non esiste ancora una funzione Col MAD (valori, raggruppamento) .
D'altra parte, è molto semplice seguire i passaggi indicati in (*) e calcolare il MAD "manualmente" tramite 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)
Ma aspetta - la colonna Mediana all'interno della colonna Mediana sembra spaventosa - e se JMP ricalcolasse i valori più e più volte con ogni riga()?
Verifichiamo se è così, ingrandendo la tabella dati (6,4 milioni di righe):
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 tabella dati più grande, il calcolo richiede diversi minuti (JMP18.2.1).
Un trucco semplice:
Dividi il calcolo in 2 calcoli:
- Innanzitutto, calcola una colonna con i valori mediani raggruppati
- quindi calcola MAD
un altro trucco:
- attendere la prossima versione di JMP?
Ci sono altri trucchi?
@hogi ha scritto:
un altro trucco:
- attendere la prossima versione di JMP?
L'ho appena provato con la versione EA di JMP19: un miglioramento notevole!
-> solo pochi secondi invece di diversi minuti
meraviglioso : )