Ottenere valori per il semiintervallo più breveEsiste un modo per ottenere i valori effettivi dalla mezza visibilità più breve nel box plot anomalo?
Re: Ottenere valori per il semiintervallo più cortoCIAO @vince_faller
una versione più ampia di questa domanda è stata posta in seguito https://community.jmp.com/t5/Discussions/Finding-the-X-range-that-will-include-a-certain-portion-of-the-Y/td-p/225474/jump-to/ primo messaggio non letto
la mia soluzione è la seguente. qualcuno potrebbe controllare se è robusto? Grazie.
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>Re: Ottenere valori per il semiintervallo più cortoCiao Tonya,
Qualsiasi motivo tu possa pensare di cui otterrei un valore
adiacenti (0,0,0,0)
?
Sicuramente non è 0-0 come distanza più breve. Mi spiace ma non riesco a postare i dati reali. Vedrò se mi è permesso renderlo anonimo.
*Modifica* Non importa. Per qualche ragione i miei adiacenti sono andati a Framebox(1) e tutti i framebox(2) erano 0.
Re: Ottenere valori per il semiintervallo più cortoCiao Tonya,
Qualsiasi motivo tu possa pensare di cui otterrei un valore
adiacenti (0,0,0,0)
?
Sicuramente non è 0-0 come distanza più breve. Mi spiace ma non riesco a postare i dati reali. Vedrò se mi è permesso renderlo anonimo.
Re: Ottenere valori per il semiintervallo più cortoGrazie per aver condiviso il < idea. Davvero intelligente e nuovo per me.
Ecco un tentativo di ottenere i limiti mediante calcoli grezzi. Nei miei test limitati si confronta bene con i numeri del Journal. Sembra gestire i valori mancanti e i legami come previsto (ma potrei essermi perso qualcosa).
// 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);
Re: Ottenere valori per il semiintervallo più cortoQuesta non è realmente una risposta, ma forse è utile in alcuni casi. Se desideri solo vedere i mezzi valori più brevi, puoi salvare come HTML interattivo e passare il mouse sopra la parentesi rossa.
Interactive HTML Box Plot Shortest Half ValuesInteractive HTML Box Plot Shortest Half ValuesBox plot HTML interattivo dei semivalori più brevi
Durante la visualizzazione in un browser mobile, tocca semplicemente la parentesi rossa.
Re: Ottenere valori per il semiintervallo più cortoGrazie per aver finito la mia sceneggiatura, Mark!Non sono mai stato il più efficiente con le funzioni dei personaggi.
Re: Ottenere valori per il semiintervallo più cortoLa soluzione di Tonya è intelligente e va al punto. Il resto della sceneggiatura in realtà non è poi così male. La variabile jrn contiene una rappresentazione di stringa della piattaforma di distribuzione (non solo il box plot dei valori anomali). Usiamo quindi le funzioni stringa per individuare le estremità desiderate della parentesi rossa. Troviamo l'argomento con Contiene() ed estraiamo i bit con una successione di chiamate a 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, "," ) );
Re: Ottenere valori per il semiintervallo più cortoSì, ma non è particolarmente facile.Questi valori si presentano come gli ultimi due numeri nella parte adiacente del diario.Per prima cosa devi procurarti il diario per un box plot.
dt=Open("$SAMPLE_DATA/Big Class.jmp");
obj=dt<<DISTRIBUTION></DISTRIBUTION>
Successivamente, dovrai analizzare jrn per gli adiacenti.Forse qualcuno con più esperienza JSL può aiutarti se non sai già come farlo.Non ho familiarità con i dettagli dell'analisi.
Re: Ottenere valori per il semiintervallo più cortoNon vedo comunque la possibilità di recuperare tali informazioni. Ho provato un metodo semplicissimo per esaminare gli intervalli del 50% dei dati dal più basso al più alto, per vedere se corrispondeva, ma non è riuscito. Sarebbe un bel miglioramento poter "<< ottenere valori più brevi della metà".
Lo passerei a support@jmp.com