Excluir filas en el cálculo del cuantil de columnaHola,
Estaba intentando obtener Col Quantile( :height, 0.5, :class) pero parece que el cálculo aún tendría en cuenta las filas excluidas.
¿Hay alguna manera de rechazar las filas excluidas en el cálculo de Col Quantile?
Gracias,
midori
Combinación y limpieza de datosExploración y visualización de datosRe: Excluir filas en el cálculo de cuantiles de Col
Intenté crear un bucle para recopilar el percentil 50 de muchos parámetros usando el siguiente código, pero ambos elementos en "test_list" son iguales (ambos tienen el 50% del peso). Sin embargo, si ejecuto las líneas manualmente, funcionará. ¿No puedo utilizar la función Col Quantile() en el bucle for?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
plot_param={
height,
weight};
test_list={};
for(plotcnt=1, plotcnt<=nitems(plot_param), plotcnt++,
pct_50=Col Quantile( If(excluded(rowstate(Row())),., column(plot_param[plotcnt])), 0.5);
test_list[plotcnt]=pct_50;
); Re: Excluir filas en el cálculo de cuantiles de ColIntenté crear un bucle para recopilar el percentil 50 de muchos parámetros usando el siguiente código, pero ambos elementos en "test_list" son iguales (ambos tienen el 50% del peso). Sin embargo, si ejecuto las líneas manualmente, funcionará. ¿No puedo utilizar la función Col Quantile() en el bucle for?
Nombres predeterminados aquí (1);
dt = Abrir( "$SAMPLE_DATA/Big Class.jmp" );
trama_param={
altura,
peso};
lista_prueba={};
para(plotcnt=1, plotcnt<=nitems(plot_param), plotcnt++,
pct_50=Col Quantile( If(excluded(rowstate(Row())),., column(plot_param[plotcnt])), 0.5);
test_list[plotcnt]=pct_50;
);
Re: Excluir filas en el cálculo de cuantiles de ColPuede verificar la fila que se excluye dentro de la función Col Quantile(). A continuación se muestra un ejemplo
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "Col Quantile Height by Age",
numeric,
continuous,
formula( Col Quantile(If(excluded(rowstate(Row())),., :height), 0.5, :age ) )
);
Siempre que el estado de fila excluido cambie para las filas de la tabla de datos, la fórmula calculará nuevos valores
Re: Excluir filas en el cálculo de cuantiles de ColNames Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
plot_param={
height,
weight};
test_list={};
for(plotcnt=1, plotcnt<=nitems(plot_param), plotcnt++,
Eval (Substitute (Expr(pct_50=Col Quantile( If(excluded(rowstate(Row())),., _col_), 0.5)), Expr(_col_), column(plot_param[plotcnt])));
test_list[plotcnt]=pct_50;
);
Re: Excluir filas en el cálculo de Col QuantileDebido a un error tipográfico, acabo de notar que Eval (sustituto()) es suficiente, incluso si sustituyes 1 por 1:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
plot_param = {height, weight};
test_list = {};
For( plotcnt = 1, plotcnt <= N Items( plot_param ), plotcnt++,
pct_50 = Eval( Substitute( Expr( Col Quantile( If( Excluded( Row State( Row() ) ), ., Column( plot_param[plotcnt] ) ), 0.5 ) ), 1, 1 ) );
test_list[plotcnt] = pct_50;
);
show(test_list);

Re: Excluir filas en el cálculo de cuantiles de columnas@LatentDataTiger , comentarios del soporte de JMP (TS-00139301)
Sí, se trata de un error. Los desarrolladores han verificado que se trata de un problema de almacenamiento en caché con Col Quantile [& Col Median] específicamente. Las otras funciones Col no tienen el problema. El uso de Substitute crea una nueva expresión con cada iteración del bucle para que el almacenamiento en caché no se utilice de forma incorrecta. Gracias por informar esto y presentaré un informe de error.
Entonces, debajo de la línea, no es Substitute , sino la protección a través de Eval(Expr()) lo que corrige el error.
Buen ejemplo de @Arn_Cota [versión adaptada] que ilustra el efecto:
Ver más...Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
plot_param = {height, weight};
test_list = {};
For( plotcnt = 1, plotcnt <= N Items( plot_param ), plotcnt++,
// Without Exclude, returns correct values
pct_50_v0 = Col Quantile( Column( plot_param[plotcnt] ), 0.5 );
// With Exclude, returns the Quantile for height
pct_50_v1 = Col Quantile(
If( Excluded( Row State( Row() ) ),
.,
Column( plot_param[plotcnt] )
),
0.5
);
// With Eval and Substitute, returns correct values
pct_50_v2 = Eval(
Substitute(
Expr(
Col Quantile(
If( Excluded( Row State( Row() ) ),
.,
Column( plot_param[plotcnt] )
),
0.5
)
),
1, 1
)
);
// use Eval(Expr() to protect the expression against inappropriate caching
pct_50_v3 = Eval(Expr(Col Quantile(
If( Excluded( Row State( Row() ) ),
.,
Column( plot_param[plotcnt] )
),
0.5
)));
// Show different versions
Show(
plotcnt,
Column( plot_param[plotcnt] ),
pct_50_v0,
pct_50_v1,
pct_50_v2,
pct_50_v3
);
test_list[plotcnt] = pct_50_v3;
); Re: Excluir filas en el cálculo de cuantiles de columnasEjemplo/solución alternativa agregada a Manejo de expresiones en JMP: Trucos y trampas