Im Jahr 2017 reichte @Kevin_Anderson den Wunsch ein, eine Funktionalität zur Berechnung von robusten Mittelwerten und Standardabweichungen in JSL und dem Formeleditor hinzuzufügen.
Im Jahr 2022 wurde eine erweiterte Version des Wunsches von @jthi eingereicht:
Normalisierung und robuste statistische Funktionen (sowie Matrixfunktionen) hinzufügen
mit dem Kommentar:
@jthi schrieb: Die meisten dieser Funktionen ließen sich bereits recht einfach mithilfe bestehender statistischer Funktionen implementieren, aber ich würde es vorziehen, sie als Standardfunktionalität in JMP zu integrieren (eine native Implementierung wäre möglicherweise auch schneller ). Meiner Meinung nach handelt es sich um sehr nützliche und leistungsstarke Funktionen (wie alle anderen statistischen Spaltenfunktionen).
Eine weitere Funktion zur Bestimmung eines robusten Schätzers für die Wertevariation:
MAD: Median Absolute Deviation.
https://en.wikipedia.org/wiki/Median_absolute_deviation

welche über (*) ermittelt werden kann:
- Berechne den Mittlere() der Werte
- Berechne die Differenz zwischen den Werten und dem Median
- die Schilder entfernen
- den Median berechnen
Wenn Sie den MAD für eine Spalte berechnen möchten, können Sie die Plattform Tabellen/Zusammenfassung verwenden:

Häufig möchten Benutzer die MAD für einzelne Gruppen berechnen.
Leider gibt es in JSL noch keine Col MAD (Werte, Gruppierung) Funktion.
Andererseits ist es sehr einfach, die Schritte unter (*) zu befolgen und MAD "manuell" über JSL zu berechnen:
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)
Aber Moment mal – der Col Median innerhalb des Col Median sieht beängstigend aus – was passiert, wenn JMP die Werte mit jeder Zeile immer wieder neu berechnet?
Lassen Sie uns überprüfen, ob dies der Fall ist – indem wir die Datentabelle vergrößern (6,4 Millionen Zeilen):
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, );
);
Bei der größeren Datentabelle dauert die Berechnung mehrere Minuten (JMP18.2.1).
Ein einfacher Trick:
Die Berechnung sollte in zwei Teilberechnungen aufgeteilt werden:
- Zuerst wird eine Spalte mit den gruppierten Medianwerten berechnet.
- dann MAD berechnen
Ein weiterer Trick:
- Auf die nächste Version von JMP warten?
Gibt es noch weitere Tricks?
@hogi schrieb:
Ein weiterer Trick:
- Auf die nächste Version von JMP warten?
Ich habe es gerade mit der EA-Version von JMP19 ausprobiert – eine deutliche Verbesserung!
-> nur ein paar Sekunden statt mehrerer Minuten
wunderbar : )