Obtener valores para el medio rango más corto¿Hay alguna manera de obtener los valores reales de la mitad más corta del diagrama de caja de valores atípicos?
Re: Obtener valores para el medio rango más cortoHola @vince_faller
Más tarde se hizo una versión más amplia de esta pregunta. https://community.jmp.com/t5/Discussions/Finding-the-X-range-that-will-include-a-certain-portion-of-the-Y/td-p/225474/jump-to/ primer mensaje no leído
mi solución es la siguiente. ¿Alguien podría comprobar si es robusto? gracias.
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: Obtener valores para el medio rango más cortoHola tonia,
Por cualquier motivo que se te ocurra obtendría un valor de
adyacentes (0,0,0,0)
?
Definitivamente no es 0-0 como el rango más corto. Lo siento, pero no puedo publicar los datos reales. Veré si me permiten anonimizarlo.
*Editar* No importa. Por alguna razón, mis adyacentes fueron a Framebox(1) y todos los framebox(2) eran 0.
Re: Obtener valores para el medio rango más cortoHola tonia,
Por cualquier motivo que se te ocurra obtendría un valor de
adyacentes (0,0,0,0)
?
Definitivamente no es 0-0 como el rango más corto. Lo siento, pero no puedo publicar los datos reales. Veré si me permiten anonimizarlo.
Re: Obtener valores para el medio rango más cortoGracias por compartir el < idea. Realmente inteligente y nuevo para mí.
Aquí hay un intento de obtener los límites mediante cálculos brutos. En mis pruebas limitadas, se compara bien con los números del Journal. Parece manejar los valores faltantes y los vínculos como se esperaba (pero es posible que me haya perdido algo).
// 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: Obtener valores para el medio rango más cortoEsta no es realmente una respuesta, pero puede ser útil en algunos casos. Si solo desea ver los valores medios más cortos, puede guardarlos como HTML interactivo y colocar el cursor sobre el corchete rojo.
Interactive HTML Box Plot Shortest Half ValuesInteractive HTML Box Plot Shortest Half ValuesDiagrama de caja HTML interactivo con los valores medios más cortos
Cuando lo vea en un navegador móvil, simplemente toque el corchete rojo.
Re: Obtener valores para el medio rango más corto¡Gracias por terminar mi guión, Mark!Nunca he sido el más eficiente con las funciones de los personajes.
Re: Obtener valores para el medio rango más cortoLa solución de Tonya es inteligente y va al grano. El resto del guión no es tan malo. La variable jrn contiene una representación de cadena de la plataforma Distriution (no solo el diagrama de caja de valores atípicos). Entonces, usemos funciones de cadena para detectar los extremos deseados del corchete rojo. Encontramos argumento con Contiene() y extraemos los bits con una sucesión de llamadas 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: Obtener valores para el medio rango más cortoSí, pero no es particularmente fácil.Estos valores se presentan como los dos últimos números en la parte adyacente del diario.Primero necesitas conseguir el diario para un diagrama de caja.
dt=Open("$SAMPLE_DATA/Big Class.jmp");
obj=dt<<DISTRIBUTION></DISTRIBUTION>
A continuación, tendrá que analizar jrn en busca de adyacentes.Quizás alguien con más experiencia en JSL pueda ayudarlo con eso si aún no sabe cómo hacerlo.No estoy familiarizado con los entresijos del análisis.
Re: Obtener valores para el medio rango más cortoNo veo ninguna forma de recuperar dicha información. Probé un método realmente simple de observar los rangos del 50% de los datos de menor a mayor, para ver si coincidían, pero falló. Sería una buena mejora poder "<< obtener valores medios más cortos".
Se lo pasaría a support@jmp.com