Statistiques pré-évaluées (Col Mean, Col Median) en boucleSalut,
J'essaie de calculer la moyenne et la médiane de l'écart type par groupe pour plusieurs colonnes dans JSL. Le tableau de données que j'utilise est présenté ci-dessous et joint. J'ai vérifié les calculs corrects dans les colonnes à droite des valeurs mais la sortie JSL ne correspond pas exactement. Le code ci-dessous calcule correctement la moyenne de l'écart type par groupe pour les deux valeurs, mais la médiane ne se calcule correctement que pour la première valeur ; le résultat pour la médiane de la seconde valeur est exactement le même que celui calculé pour la première valeur. Je n'arrive pas à comprendre pourquoi les valeurs moyennes sont correctement mises à jour dans la boucle mais pas les valeurs médianes. Toute aide à ce sujet est appréciée et veuillez me faire savoir quelle est la meilleure méthode dans JSL pour le faire.

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 ) ) ) );
);
Sortie 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
Merci
AnalytiqueScriptRe : Statistiques pré-évaluées (Col Mean, Col Median) en boucleVous pouvez toujours le boucler, mais utilisez Summarize au lieu des fonctions Col functions qui pourraient ne pas fonctionner avec byVar. C'est une option :
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));
);
Voici une autre option avec tableau récapitulatif qui pourrait être utilisée (deux façons de calculer) :
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 : Statistiques pré-évaluées (Col Mean, Col Median) en boucleJe suis d'accord, cela ressemble à la bonne façon de gérer cela. Cependant, il repose sur la saisie de tous les noms de colonne. Existe-t-il un moyen de le généraliser pour plusieurs colonnes sans connaître le nom de la colonne ? C'était la principale raison d'utiliser la boucle For dans mon code.
Re : Statistiques pré-évaluées (Col Mean, Col Median) en boucleRésumer devrait fonctionner assez bien ici :
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 : Statistiques pré-évaluées (Col Mean, Col Median) en boucleLa raison pour laquelle j'effectue les calculs de cette manière est que je souhaite transmettre le résultat à un script qui trace séparément les données dans chaque colonne et utilise les valeurs calculées pour les limites de traçage supérieures et inférieures.
Re : Statistiques pré-évaluées (Col Mean, Col Median) en boucleY a-t-il une raison d'effectuer des calculs comme celui-ci avec des boucles et des formules ? JMP vous fournit Récapitulatif (tableau), Résumer et Tabuler, qui peuvent être de meilleures options en fonction de ce que vous essayez de faire.
Pour la boucle, je ne sais pas si vous pouvez vraiment (ou si vous devriez) boucler des fonctions Col comme lors de l'utilisation de byVar car elles seront évaluées un peu bizarrement.
