Estadísticas preevaluadas (media de columna, mediana de columna) en bucleHola,
Estoy tratando de calcular la media y la mediana de la desviación estándar por grupo para varias columnas en JSL. La tabla de datos que estoy usando se muestra a continuación y se adjunta. He verificado los cálculos correctos en las columnas a la derecha de los valores, pero la salida de JSL no coincide exactamente. El siguiente código calcula correctamente la media de la desviación estándar por grupo para ambos valores, pero la mediana solo calcula correctamente para el primer valor; el resultado de la mediana del segundo valor es exactamente el mismo que se calculó para el primer valor. No puedo entender por qué los valores medios se actualizan correctamente en el ciclo pero no los valores medianos. Se agradece cualquier ayuda al respecto y, por favor, hágame saber cuál es el mejor método en JSL para hacer esto.

JSL:
For( i = 2, i < 4, i++,
N = Column Name( i );
Print( "i = " || Char( i ) );
Print( "Column Name = " || Char( Column Name( i ) ) );
Print( "Column Mean Std Dev by Group = " || Char( Col Mean( Col Std Dev( N, :Group ) ) ) );
Print( "Column Median Std Dev by Group = " || Char( Col Median( Col Std Dev( N, :Group ) ) ) );
);
Salida JSL:
"i = 2"
"Column Name = Value 1"
"Column Mean Std Dev by Group = 3.9849040980727"
"Column Median Std Dev by Group = 3.60555127546399"
"i = 3"
"Column Name = Value 2"
"Column Mean Std Dev by Group = 5.14008843607314"
"Column Median Std Dev by Group = 3.60555127546399"
JMP Pro v16
Gracias
Analíticasecuencias de comandosRe: Estadísticas preevaluadas (media de columna, mediana de columna) en bucle¿Hay alguna razón para realizar cálculos como este con bucles y con fórmulas? JMP le proporciona Resumen (tabla), Resumir y Tabular, que podrían ser mejores opciones según lo que intente hacer.
Para el bucle, no estoy seguro de si realmente puede (o si debería) hacer un bucle de las funciones de Col como cuando usa byVar, ya que se evaluarán de manera un poco extraña.

Re: Estadísticas preevaluadas (media de columna, mediana de columna) en bucleLa razón para realizar los cálculos de esta manera es que me gustaría enviar el resultado a una secuencia de comandos que grafica por separado los datos en cada columna y usa los valores calculados para los límites de trazado superior e inferior.
Re: Estadísticas preevaluadas (media de columna, mediana de columna) en bucleResumir debería funcionar bastante bien aquí:
Names Default To Here(1);
dt = Current Data Table();
Summarize(dt, groups = By(:Group), v1_std = StdDev(:Value 1), v2_std = StdDev(:Value 2));
Show(groups, v1_std, v2_std);
Show(Mean(v1_std));
Show(Mean(v2_std));
Show(Median(v1_std));
Show(Median(v2_std));<BR /><BR />/*groups = {"A", "B", "C", "D"};<BR />v1_std = [3.60555127546399, 2.64575131106459, 3.60555127546399, 6.08276253029822];<BR />v2_std = [7.23417813807024, 8.9628864398325, 0.577350269189626, 3.78593889720018];<BR />Mean(v1_std) = 3.9849040980727;<BR />Mean(v2_std) = 5.14008843607314;<BR />Median(v1_std) = 3.60555127546399;<BR />Median(v2_std) = 5.51005851763521;*/Re: Estadísticas preevaluadas (media de columna, mediana de columna) en bucleEstoy de acuerdo, esta parece la forma correcta de manejar esto. Sin embargo, se basa en escribir todos los nombres de las columnas. ¿Hay alguna forma de generalizarlo para muchas columnas sin saber el nombre de la columna? Esta fue la razón principal para usar el bucle For en mi código.
Re: Estadísticas preevaluadas (media de columna, mediana de columna) en bucleTodavía podría repetirlo, pero use Resumir en lugar de funciones Funciones de columna que podrían no funcionar con byVar. Esta es una opción:
Names Default To Here(1);
dt = Current Data Table();
col_list = {"Value 1", "Value 2"};
For Each({col_name}, col_list,
Summarize(dt, groups = By(:Group), v_std = StdDev(Eval(col_name)));
Show(col_name, v_std);
Show(Mean(v_std));
Show(Median(v_std));
);
Aquí hay otra opción con la tabla de resumen que podría usarse (dos formas de cálculo):
Names Default To Here(1);
dt = Current Data Table();
col_list = {"Value 1", "Value 2"};
dt_summary = dt << Summary(
Group(:Group),
Std Dev(EvalList({col_list})),
Freq("None"),
Weight("None"),
statistics column name format("column"),
Link to original data table(0),
invisible
);
For Each({col_name}, col_list,
mea = Mean(dt_summary[0, col_name]);
med = Median(dt_summary[0, col_name]);
// or
mea1 = Col Mean(As Column(col_name));
med1 = Col Median(As Column(col_name));
Show(col_name, mea, med, mea1, med1);
);
Close(dt_summary, no save);