Comment calculer la moyenne géométrique de certaines lignes ?La moyenne géométrique peut être facilement obtenue dans Résumé.
Mais comment calculer la moyenne par la colonne de formule, n'est-ce pas ?
J'ai cherché dans la documentation d'aide et dans la communauté et je n'ai toujours pas trouvé de moyen.


Je veux le calculer de cette façon:
dt=Current Data Table();
dt<<NEW column=""></NEW>
Merci!
Re : Comment calculer la moyenne géométrique de certaines lignes ?De plus, je relie ici un article de blog sur la moyenne géométrique de la documentation SAS qui est très instructif :
https://blogs.sas.com/content/iml/2019/10/02/geometric-mean-deviation-cv-sas.html
Re : Comment calculer la moyenne géométrique de certaines lignes ?Je pense qu'une stratégie utile ici consiste à utiliser la fonction "NRows()" dans JMP pour appeler l'indexation sur le numéro de ligne si vous êtes intéressé par le calcul général de la moyenne géométrique qui est généralement rapporté dans les statistiques récapitulatives (et est celui que JMP rapporte sous Personnaliser les statistiques récapitulatives).


J'ai pu résumer (reproduire) deux des approches utilisées dans ce fil, et j'inclus le tableau de données sur un ensemble de données générique pour référence future. acclamations, @PatrickGiuliano
Re : Comment calculer la moyenne géométrique de certaines lignes ?merci @julien
J'essayais de tout faire en une seule fois, mais je n'ai pas réussi à le faire fonctionner comme sur cette photo :

Re : Comment calculer la moyenne géométrique de certaines lignes ?Salut @ron_horne ,
A votre question : "existe-t-il un moyen d'intégrer la première transformation ln dans la deuxième formule et ainsi de sauvegarder la procédure à 2 colonnes."
Au début, je pensais que nous pourrions faire quelque chose avec Transform Column(), comme nous le ferions dans un script pour le lancement d'une plateforme, par exemple :
Transform Column( "Log[height]", Formula( Log( :height ) ) )
Mais intégrer cela dans une formule de colonne ne m’a mené nulle part. Cependant, :hauteur[ Indice ( Rangée () - dix , Rangée () )] renverra une matrice et l'envelopper dans Ln() évaluera chaque élément, donc ce qui suit devrait donner une version à une seule colonne de votre solution :
New Column("Geometric mean height (single column)", Numeric, "Continuous", Format("Best", 12), Formula(If(Row() < 10, Empty(), Exp(Mean(Ln(:height[Index(Row() - 10, Row())]))))) );

@julien
Re : Comment calculer la moyenne géométrique de certaines lignes ?Salut @lwx228 ,
votre question est bonne et doit avoir plusieurs façons d'obtenir la réponse. je vais essayer de m'en tenir à l'utilisation de la formule de colonne.
créez deux nouvelles colonnes.
1 il suffit de transformer la hauteur en sa bûche naturelle.
2 obtenez l’exposant de la moyenne mobile de la première colonne.
Cette deuxième colonne devrait vous donner la moyenne géométrique mobile que vous recherchez.
vous pouvez prendre les formules de ce morceau de script :
New Column( "log height",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Ln( :height ) )
);
New Column( "Geometric mean height",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( Row() < 10,
Empty(),
Exp( Mean( :log height[Index( Row() - 10, Row() )] ) )
)
)
);
veuillez nous faire savoir si cela fonctionne pour vous.
Je voudrais également demander aux autres membres du forum s'il existe un moyen d'intégrer la première transformation ln dans la deuxième formule et ainsi de sauvegarder la procédure à 2 colonnes.
Re : Comment calculer la moyenne géométrique de certaines lignes ?J'ai utilisé la méthode originale et les résultats étaient cohérents.

Merci Jim!
Re : Comment calculer la moyenne géométrique de certaines lignes ?Je ne connais pas de fonction de moyenne géométrique dans JMP.Il faudrait en ajouter un, et je vous suggère de l'ajouter à la liste de souhaits JMP.Cependant, cela ne veut pas dire que l’on ne peut pas faire ce que l’on veut.J'ai trouvé 2 solutions différentes.Le premier est simplement le codage brut de la moyenne géométrique en JSL.Dans le tableau de données ci-joint, la colonne appelée GeoMean utilise cette formule.Il utilise votre demande pour calculer la moyenne géométrique de la ligne actuelle - 10 lignes, jusqu'à la ligne actuelle.
If( Row() == 1,
Product = 1;
Range = 11;
);
If( Row() <= 11,
Product = Product * :height;
If( Row() == Range,
Returned = Product ^ (1 / Range),
Returned = .
);
,
Product = Product / :height[Row() - Range];
Product = Product * :height[Row()];
Returned = Product ^ (1 / Range);
);
Returned;
Le deuxième formulaire, la colonne appelée Geomean from Dist Platform, extrait la moyenne géométrique de la sortie de la plateforme de distribution, exécutée sur un sous-ensemble de données, en sous-ensemble 11 lignes à la fois.
If( Row() < 11,
returned = .,
theValues = :height[Index( Row(), Row() - 10 )];
_d = New Table( "sub", invisible, New Column( "height", values( theValues ) ) );
dis = _d << Distribution(
invisible,
Continuous Distribution(
Column( :height ),
Quantiles( 0 ),
Histogram( 0 ),
Vertical( 0 ),
Outlier Box Plot( 0 ),
Customize Summary Statistics(
Mean( 0 ),
Std Dev( 0 ),
Std Err Mean( 0 ),
Upper Mean Confidence Interval( 0 ),
Lower Mean Confidence Interval( 0 ),
N( 0 ),
Geometric Mean( 1 )
)
)
);
Returned = (Report( dis )[Number Col Box( 1 )] << get)[1];
Close( _d, nosave );
);
Returned;
La première formule doit être la plus rapide, car elle ne calcule pas la moyenne géométrique à partir de zéro pour chaque ligne.