Werte für die kürzeste halbe Reichweite abrufenGibt es eine Möglichkeit, die tatsächlichen Werte aus der kürzesten Halbvisualität im Ausreißer-Boxplot zu ermitteln?
Betreff: Werte für die kürzeste halbe Reichweite abrufenHallo @vince_faller
Eine umfassendere Version dieser Frage wurde später gestellt https://community.jmp.com/t5/Discussions/Finding-the-X-range-that-will-include-a-certain-portion-of-the-Y/td-p/225474/jump-to/ erste ungelesene Nachricht
meine Lösung ist wie folgt. Könnte jemand prüfen, ob es robust ist? Danke.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// this is just in case wewant to bring the data back to original row order later.
rowcol = New Column("Row", Numeric, "Continuous", Format("Best", 12), Formula(Row()));
dt << run formulas();
rowcol << suppress eval( true );
// now we start working
dt << Sort( By( :weight ), Order( Ascending ), replace table );
// here is where we define the share of included range (0.5)
difcol = New Column("dif", Numeric, "Continuous", Format("Best", 12), Formula(Abs(:weight - Lag(:weight, -(N Rows() * 0.5)))));
dt << run formulas();
difcol << suppress eval( true );
start = (dt<<GET rows="" where="">= start, row()<=end),1 ,0 ));</GET>Betreff: Werte für die kürzeste halbe Reichweite abrufenHallo Tonya,
Jeder Grund, den Sie sich vorstellen können, würde ich wertschätzen
angrenzend (0,0,0,0)
?
Es ist definitiv nicht 0:0 als kürzester Spielraum. Leider kann ich die tatsächlichen Daten nicht posten. Ich werde sehen, ob ich es anonymisieren darf.
*Bearbeiten* Egal. Aus irgendeinem Grund gingen meine Angrenzenden zu Framebox(1) und alle Framebox(2) waren Nullen.
Betreff: Werte für die kürzeste halbe Reichweite abrufenHallo Tonya,
Aus jedem Grund, den Sie sich vorstellen können, würde ich einen Wert ermitteln
angrenzend (0,0,0,0)
?
Es ist definitiv nicht 0:0 als kürzester Spielraum. Leider kann ich die tatsächlichen Daten nicht posten. Ich werde sehen, ob ich es anonymisieren darf.
Betreff: Werte für die kürzeste halbe Reichweite abrufenVielen Dank fürs Teilen < Idee. Wirklich clever und neu für mich.
Hier ist ein Versuch, die Grenzwerte durch Rohberechnung zu ermitteln. In meinen begrenzten Tests schneidet es gut mit den Journal-Zahlen ab. Es scheint wie erwartet mit fehlenden Werten und Bindungen umzugehen (aber ich habe möglicherweise etwas übersehen).
// Function for calculating the lower and upper limits of
// Shortest Half Range of a numeric column.
shorth = Function({col}, {M, n, d, i = 0},
M = col << get values;
M = Sort Ascending(M[Loc Nonmissing(M)]);
n = N Row(M) / 2 + Mod(N Row(M), 2);
d = Loc Min(J(1, n, M[(i++) + n] - M[i]));
lo = M[d];
hi = M[d + n - 1];
);
// Test
dt = Open("$SAMPLE_DATA/Big Class.jmp");
shorth(Column(dt, "weight"));
Show(lo, hi);
Betreff: Werte für die kürzeste halbe Reichweite abrufenDies ist keine wirkliche Antwort, aber in manchen Fällen vielleicht nützlich. Wenn Sie nur die kürzesten halben Werte sehen möchten, können Sie diese als interaktives HTML speichern und mit der Maus über die rote Klammer fahren.
Interactive HTML Box Plot Shortest Half ValuesInteractive HTML Box Plot Shortest Half ValuesInteraktives HTML-Boxplot der kürzesten Halbwerte
Tippen Sie bei der Anzeige in einem mobilen Browser einfach auf die rote Klammer.
Betreff: Werte für die kürzeste halbe Reichweite abrufenDanke, dass du mein Drehbuch fertiggestellt hast, Mark!Ich war noch nie besonders effizient mit den Charakterfunktionen.
Betreff: Werte für die kürzeste halbe Reichweite abrufenTonyas Lösung ist clever und auf den Punkt gebracht. Der Rest des Drehbuchs ist eigentlich gar nicht so schlecht. Die Variable jrn enthält eine String-Darstellung der Distriution-Plattform (nicht nur den Outlier Box Plot). Lassen Sie uns also String-Funktionen verwenden, um die gewünschten Enden der roten Klammer herauszufinden. Wir finden Argumente mit Contains() und extrahieren die Bits mit einer Reihe von Aufrufen von Word():
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dist = dt << Distribution( Y( :weight ) );
rpt = dist << Report;
jrn = rpt[FrameBox(2)] << Get Journal;
pos = Contains( Upper Case( jrn ), "ADJACENTS" );
adj = Word( 2, Sub Str( jrn, pos ), "()" );
lo = Num( Word( 3, adj, "," ) );
hi = Num( Word( 4, adj, "," ) );
Betreff: Werte für die kürzeste halbe Reichweite abrufenJa, aber es ist nicht besonders einfach.Diese Werte werden als die letzten beiden Zahlen im angrenzenden Teil des Journals angezeigt.Zuerst müssen Sie sich das Tagebuch für einen Boxplot besorgen.
dt=Open("$SAMPLE_DATA/Big Class.jmp");
obj=dt<<DISTRIBUTION></DISTRIBUTION>
Als nächstes müssen Sie jrn nach Angrenzenden analysieren.Vielleicht kann Ihnen jemand mit mehr JSL-Erfahrung dabei helfen, wenn Sie noch nicht wissen, wie das geht.Ich bin mit den Vor- und Nachteilen des Parsens nicht vertraut.
Betreff: Werte für die kürzeste halbe Reichweite abrufenIch sehe sowieso nicht ein, solche Informationen abzurufen. Ich habe eine wirklich einfache Methode ausprobiert, bei der ich mir die Bereiche von 50 % der Daten vom niedrigsten zum höchsten Wert angeschaut habe, um zu sehen, ob das übereinstimmt, aber es ist fehlgeschlagen. Es wäre eine schöne Verbesserung, „<< kürzere Halbwerte erhalten zu können“.
Ich würde es an support@jmp.com weiterleiten