Statistiche pre-valutate (Col Media, Col Mediana) in LoopCIAO,
Sto cercando di calcolare la media e la mediana della deviazione standard per gruppo per più colonne in JSL. La tabella dei dati che sto usando è mostrata di seguito e allegata. Ho verificato i calcoli corretti nelle colonne a destra dei valori ma l'output JSL non corrisponde esattamente. Il codice seguente calcola correttamente la media della deviazione standard per gruppo per entrambi i valori, ma la mediana calcola correttamente solo per il primo valore; il risultato per la mediana del secondo valore è esattamente lo stesso di quanto calcolato per il primo valore. Non riesco a capire perché i valori medi si aggiornano correttamente nel ciclo ma non i valori mediani. Qualsiasi aiuto su questo è apprezzato e per favore fatemi sapere qual è il metodo migliore in JSL per farlo.

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 ) ) ) );
);
Uscita 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
Grazie
AnaliticaScriptingRe: Statistiche pre-valutate (Col media, Col mediana) in LoopPotresti ancora eseguirlo in loop, ma usa Summarize invece delle funzioni Col che potrebbero non funzionare con byVar. Questa è un'opzione:
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));
);
Ecco un'altra opzione con la tabella di riepilogo che potrebbe essere utilizzata (due modi per i calcoli):
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);
Re: Statistiche pre-valutate (Col media, Col mediana) in LoopSono d'accordo, questo sembra il modo corretto per gestirlo. Tuttavia, si basa sulla digitazione di tutti i nomi delle colonne. C'è un modo per generalizzarlo per molte colonne senza conoscere il nome della colonna? Questo è stato il motivo principale per utilizzare il ciclo For nel mio codice.
Re: Statistiche pre-valutate (Col media, Col mediana) in LoopRiepilogare dovrebbe funzionare abbastanza bene qui:
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: Statistiche pre-valutate (Col media, Col mediana) in LoopIl motivo per eseguire i calcoli in questo modo è che vorrei inviare il risultato a uno script che traccia separatamente i dati in ciascuna colonna e utilizza i valori calcolati per i limiti di tracciamento superiore e inferiore.
Re: Statistiche pre-valutate (Col media, Col mediana) in LoopC'è un motivo per eseguire calcoli come questo con cicli e formule? JMP ti fornisce Riepilogo (tabella), Riepiloga e Tabula che potrebbero essere opzioni migliori a seconda di ciò che stai cercando di fare.
Per il loop, non sono sicuro che tu possa davvero (o se dovresti) eseguire il loop delle funzioni Col come mentre usi byVar che verranno valutate in modo un po 'strano.
